[
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.yml",
    "content": "name: 🐛 Bug Report\ndescription: Report a bug in the ion-icon component. Incorrect icons should use the \"Incorrect Icon\" template instead.\nlabels: ['triage']\ntitle: 'bug: '\nbody:\n  - type: textarea\n    attributes:\n      label: Current Behavior\n      description: A clear description of what the bug is and how it manifests.\n    validations:\n      required: true\n  - type: textarea\n    attributes:\n      label: Expected Behavior\n      description: A clear description of what you expected to happen.\n    validations:\n      required: true\n  - type: textarea\n    attributes:\n      label: Steps to Reproduce\n      description: Please explain the steps required to duplicate this issue.\n    validations:\n      required: true\n  - type: input\n    attributes:\n      label: Code Reproduction URL\n      description: Please provide an application with the minimum code required to reproduce the issue. This is the best way to ensure this issue is triaged quickly. Issues without a code reproduction may be closed if the Ionic Team cannot reproduce the issue you are reporting.\n      placeholder: https://github.com/...\n  - type: textarea\n    attributes:\n      label: Additional Information\n      description: List any other information that is relevant to your issue. Stack traces, related issues, suggestions on how to fix, Stack Overflow links, forum links, etc.\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.yml",
    "content": "name: 💡 Feature Request\ndescription: Suggest a new feature for the ion-icon component. Icon requests should use the \"Icon Request\" template instead.\nlabels: ['triage']\ntitle: 'feat: '\nbody:\n  - type: textarea\n    attributes:\n      label: Describe Problem\n      description: A clear and concise description of what the problem is. Ex. I am always frustrated when [...]\n    validations:\n      required: true\n  - type: textarea\n    attributes:\n      label: Describe Preferred Solution\n      description: A clear and concise description of what you want to happen.\n  - type: textarea\n    attributes:\n      label: Describe Alternatives\n      description: A clear and concise description of any alternative solutions or features you have considered.\n  - type: textarea\n    attributes:\n      label: Additional Information\n      description: Add any other context or screenshots about the feature request here.\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/icon_request.yml",
    "content": "name: 🚀 Icon Request\ndescription: Request a new icon\nlabels: ['triage']\ntitle: 'icon request: '\nbody:\n  - type: textarea\n    attributes:\n      label: Describe the Icon\n      description: A clear and concise description of the icon you would like added.\n    validations:\n      required: true\n  - type: textarea\n    attributes:\n      label: Links to Examples\n      description: Add links to any examples of the icon in other libraries that you like.\n  - type: textarea\n    attributes:\n      label: Additional Information\n      description: Add any other context about the icon request here.\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/incorrect_icon.yml",
    "content": "name: 😒 Incorrect Icon\ndescription: Report an incorrect icon\nlabels: ['triage']\ntitle: 'incorrect icon: '\nbody:\n  - type: textarea\n    attributes:\n      label: Describe the Issue\n      description: A clear description of what is wrong with the icon. Please include any relevant screenshots.\n    validations:\n      required: true\n  - type: textarea\n    attributes:\n      label: Expected Behavior\n      description: A clear description of what the icon should look like. Please include any relevant screenshots.\n    validations:\n      required: true\n"
  },
  {
    "path": ".github/ionic-issue-bot.yml",
    "content": "triage:\n  label: triage\n  dryRun: false\n\ncloseAndLock:\n  labels:\n    - label: 'ionitron: support'\n      message: >\n        Thanks for the issue! This issue appears to be a support request. We use this issue tracker exclusively for\n        bug reports and feature requests. Please use our [forum](https://forum.ionicframework.com/) for help or\n        questions about Ionicons.\n\n\n        Thank you for using Ionicons!\n    - label: 'ionitron: missing template'\n      message: >\n        Thanks for the issue! It appears that you have not filled out the provided issue template. We use this issue\n        template in order to gather more information and further assist you. Please create a new issue and ensure the\n        template is fully filled out.\n\n\n        Thank you for using Ionicons!\n  close: true\n  lock: true\n  dryRun: false\n\ncomment:\n  labels:\n    - label: 'help wanted'\n      message: >\n        This issue has been labeled as `help wanted`. This label is added to issues\n        that we believe would be good for contributors.\n\n\n        If you'd like to work on this issue, please comment here letting us know that\n        you would like to submit a pull request for it. This helps us to keep track of\n        the pull request and make sure there isn't duplicated effort.\n\n\n        For a guide on how to create a pull request and test this project locally to see\n        your changes, see our [contributing documentation](https://github.com/ionic-team/ionicons/blob/main/.github/CONTRIBUTING.md#creating-a-pull-request).\n\n\n        Thank you!\n    - label: 'ionitron: needs reproduction'\n      message: >\n        Thanks for the issue! This issue has been labeled as `needs reproduction`. This label is added to issues that\n        need a code reproduction.\n\n\n        Please reproduce this issue and provide a way for us to access it (GitHub repo, StackBlitz, etc). Without a\n        reliable code reproduction, it is unlikely we will be able to resolve the issue, leading to it being closed.\n\n\n        If you have already provided a code snippet and are seeing this message, it is likely that the code snippet was\n        not enough for our team to reproduce the issue.\n    - label: 'community feedback wanted'\n      message: >\n        This issue has been labeled as `community feedback wanted`. This label is added to issues that we would like to hear from the community on before moving forward with any final decision on the feature request.\n\n\n        If the requested feature is something you would find useful for your applications, please react to the original post with 👍 (`+1`). If you would like to provide an additional use case for the feature, please post a comment.\n\n\n        The team will review this feedback and make a final decision. Any decision will be posted on this thread, but please note that we may ultimately decide not to pursue this feature.\n\n\n        Thank you!\n  dryRun: false\n\nnoReply:\n  days: 14\n  maxIssuesPerRun: 100\n  label: 'needs: reply'\n  responseLabel: triage\n  exemptProjects: true\n  exemptMilestones: true\n  message: >\n    Thanks for the issue! This issue is being closed due to the lack of a reply. If this is still\n    an issue with the latest version of Ionicons, please create a new issue and ensure the\n    template is fully filled out.\n\n\n    Thank you for using Ionicons!\n  close: true\n  lock: true\n  dryRun: false\n\nnoReproduction:\n  days: 14\n  maxIssuesPerRun: 100\n  label: 'ionitron: needs reproduction'\n  responseLabel: triage\n  exemptProjects: true\n  exemptMilestones: true\n  message: >\n    Thanks for the issue! This issue is being closed due to the lack of a code reproduction. If this is still\n    an issue with the latest version of Ionicons, please create a new issue and ensure the\n    template is fully filled out.\n\n\n    Thank you for using Ionicons!\n  close: true\n  lock: true\n  dryRun: false\n"
  },
  {
    "path": ".github/workflows/actions/build-core/action.yml",
    "content": "name: 'Build Ionicons'\ndescription: 'Build Ionicons'\nruns:\n  using: 'composite'\n  steps:\n    - uses: actions/checkout@v4\n      with:\n        # Checkout the latest commit in this branch\n        ref: ${{ github.event.pull_request.head.sha }}\n    - uses: actions/setup-node@v4\n\n    - name: Cache Node Modules\n      uses: actions/cache@v4\n      env:\n        cache-name: node-modules\n      with:\n        path: ./node_modules\n        key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('./package-lock.json') }}-v1\n    - name: Install Dependencies\n      run: npm install\n      shell: bash\n    - name: Build\n      run: npm run build\n      shell: bash\n    - uses: ./.github/workflows/actions/upload-archive\n      with:\n        name: ionicons-build\n        output: IoniconsBuild.zip\n        paths: dist components icons www\n    - uses: ./.github/workflows/actions/upload-archive\n      with:\n        name: ionicons-src\n        output: IoniconsSrc.zip\n        paths: src\n"
  },
  {
    "path": ".github/workflows/actions/download-archive/action.yml",
    "content": "name: 'Archive Download'\ndescription: 'Downloads and decompresses an archive from a previous job'\ninputs:\n  path:\n    description: 'Input archive name'\n  filename:\n    description: 'Input file name'\n  name:\n    description: 'Archive name'\nruns:\n  using: 'composite'\n  steps:\n    - uses: actions/download-artifact@v4\n      with:\n        name: ${{ inputs.name }}\n        path: ${{ inputs.path }}\n    - name: Exract Archive\n      run: unzip -q -o ${{ inputs.path }}/${{ inputs.filename }}\n      shell: bash\n"
  },
  {
    "path": ".github/workflows/actions/publish-npm/action.yml",
    "content": "name: 'Release'\ndescription: 'Releases a package'\ninputs:\n  version:\n    description: 'The type of version to release.'\n  tag:\n    description: 'The tag to publish to on NPM.'\n  working-directory:\n    description: 'The directory of the package.'\n  folder:\n    default: './'\n    description: 'A folder containing a package.json file.'\n  createRelease:\n    description: 'Create a release on GitHub.'\n    default: 'false'\n  ghToken:\n    description: 'The GitHub authentication token required to create a release.'\n\nruns:\n  using: 'composite'\n  steps:\n    - uses: actions/setup-node@v4\n      with:\n        node-version: 22.x\n    - name: Install latest npm\n      run: npm install -g npm@latest\n      shell: bash\n    - name: Install Dependencies\n      run: npm ci\n      shell: bash\n      working-directory: ${{ inputs.working-directory }}\n    - name: Set Git User\n      run: |\n        git config user.name ionitron\n        git config user.email hi@ionicframework.com\n      shell: bash\n    - name: Update Version\n      id: update_version\n      run: |\n        npm version ${{ inputs.version }}\n        echo \"VERSION=$(node -p \"require('./package.json').version\")\" >> $GITHUB_ENV\n      shell: bash\n      working-directory: ${{ inputs.working-directory }}\n    - name: Run Build\n      run: npm run build\n      shell: bash\n      working-directory: ${{ inputs.working-directory }}\n    - name: Publish to NPM\n      run: npm publish ${{ inputs.folder }} --tag ${{ inputs.tag }} --provenance\n      shell: bash\n      working-directory: ${{ inputs.working-directory }}\n\n    - name: Create Release\n      if: ${{ inputs.createRelease == 'true' }}\n      run: |\n        git remote set-url origin https://${GH_TOKEN}:x-oauth-basic@github.com/ionic-team/ionicons.git\n        git remote -v\n        git push origin main --tags\n        gh release create \"v$VERSION\" --title \"v$VERSION\" --generate-notes\n      shell: bash\n      env:\n        GH_TOKEN: ${{ inputs.ghToken }}\n        VERSION: ${{ env.VERSION }}\n"
  },
  {
    "path": ".github/workflows/actions/test-e2e/action.yml",
    "content": "name: 'Test E2E'\ndescription: 'Test E2E'\ninputs:\n  shard:\n    description: 'Playwright Test Shard (ex: 2)'\n  totalShards:\n    description: 'Playwright total number of test shards (ex: 4)'\n  update:\n    description: 'Whether or not to update the reference snapshots'\nruns:\n  using: 'composite'\n  steps:\n    - uses: actions/setup-node@v4\n\n    - name: Cache Node Modules\n      uses: actions/cache@v4\n      env:\n        cache-name: node-modules\n      with:\n        path: ./node_modules\n        key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('./package-lock.json') }}-v1\n    - uses: ./.github/workflows/actions/download-archive\n      with:\n        name: ionicons-build\n        path: .\n        filename: IoniconsBuild.zip\n    - uses: ./.github/workflows/actions/download-archive\n      with:\n        name: ionicons-src\n        path: .\n        filename: IoniconsSrc.zip\n    - name: Install Playwright Dependencies\n      run: npx playwright install && npx playwright install-deps\n      shell: bash\n    - name: Test\n      if: inputs.update != 'true'\n      run: npx playwright test --shard=${{ inputs.shard }}/${{ inputs.totalShards }}\n      shell: bash\n    - name: Test and Update\n      id: test-and-update\n      if: inputs.update == 'true'\n      # Keep track of the files that were\n      # changed so they can be correctly restored\n      # in the combine step.\n      # To do this, we move only the changed files\n      # to a separate directory, while preserving the\n      # directory structure of the source.\n      # When, we create and archive of these results\n      # so that the combine step can simply\n      # unzip and move the changed files into place.\n      # We have extra logic added so that job runners\n      # that do not have any new screenshots do not create\n      # an unnecessary .zip.\n      run: |\n        npx playwright test --shard=${{ inputs.shard }}/${{ inputs.totalShards }} --update-snapshots\n        git add src/\\*.png --force\n        mkdir updated-screenshots\n        rsync -R --progress $(git diff --name-only --cached) updated-screenshots\n        if [ \"$(ls -A updated-screenshots)\" ]; then\n          echo \"hasUpdatedScreenshots=$(echo 'true')\" >> $GITHUB_OUTPUT\n          cd updated-screenshots\n          ls\n          zip -q -r ../UpdatedScreenshots-${{ inputs.shard }}-${{ inputs.totalShards }}.zip ./\n        fi\n      shell: bash\n    - name: Archive Updated Screenshots\n      if: inputs.update == 'true' && steps.test-and-update.outputs.hasUpdatedScreenshots == 'true'\n      uses: actions/upload-artifact@v4\n      with:\n        name: updated-screenshots-${{ inputs.shard }}-${{ inputs.totalShards }}\n        path: UpdatedScreenshots-${{ inputs.shard }}-${{ inputs.totalShards }}.zip\n    - name: Archive Test Results\n      # The always() ensures that this step\n      # runs even if the previous step fails.\n      # We want the test results to be archived\n      # even if the test fails in the previous\n      # step, otherwise there would be no way\n      # to debug these tests.\n      if: always()\n      uses: ./.github/workflows/actions/upload-archive\n      with:\n        name: test-results-${{ inputs.shard }}-${{ inputs.totalShards }}\n        output: TestResults-${{ inputs.shard }}-${{ inputs.totalShards }}.zip\n        paths: playwright-report\n"
  },
  {
    "path": ".github/workflows/actions/test-spec/action.yml",
    "content": "name: 'Test Spec'\ndescription: 'Test Spec'\nruns:\n  using: 'composite'\n  steps:\n    - uses: actions/setup-node@v4\n\n    - name: Cache Node Modules\n      uses: actions/cache@v4\n      env:\n        cache-name: node-modules\n      with:\n        path: ./node_modules\n        key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('./package-lock.json') }}-v1\n    - uses: ./.github/workflows/actions/download-archive\n      with:\n        name: ionicons-build\n        path: .\n        filename: IoniconsBuild.zip\n    - name: Test\n      run: npm run test.spec -- --ci\n      shell: bash\n"
  },
  {
    "path": ".github/workflows/actions/update-reference-screenshots/action.yml",
    "content": "name: 'Update Reference Screenshots'\ndescription: 'Update Reference Screenshots'\n\non:\n  workflow_dispatch:\n\nruns:\n  using: 'composite'\n  steps:\n    - uses: actions/setup-node@v4\n    - uses: actions/download-artifact@v4\n      with:\n        path: ./artifacts\n    - name: Extract Archives\n      # This finds all .zip files in the ./artifacts\n      # directory, including nested directories.\n      # It then unzips every .zip to the root directory\n      run: |\n        find . -type f -name 'UpdatedScreenshots-*.zip' -exec unzip -q -o -d ../ {} \\;\n      shell: bash\n      working-directory: ./artifacts\n    - name: Push Screenshots\n      # Configure user as Ionitron\n      # and push only the changed .png snapshots\n      # to the remote branch.\n      # Screenshots are in .gitignore\n      # to prevent local screenshots from getting\n      # pushed to Git. As a result, we need --force\n      # here so that CI generated screenshots can\n      # get added to git. Screenshot ground truths\n      # should only be added via this CI process.\n      run: |\n        git config user.name ionitron\n        git config user.email hi@ionicframework.com\n        git add src/\\*.png --force\n        git commit -m \"chore(): add updated snapshots\"\n        git push\n      shell: bash\n"
  },
  {
    "path": ".github/workflows/actions/upload-archive/action.yml",
    "content": "name: 'Archive Upload'\ndescription: 'Compresses and uploads an archive to be reused across jobs'\ninputs:\n  paths:\n    description: 'Paths to files or directories to archive'\n  output:\n    description: 'Output file name'\n  name:\n    description: 'Archive name'\nruns:\n  using: 'composite'\n  steps:\n    - name: Create Archive\n      run: zip -q -r ${{ inputs.output }} ${{ inputs.paths }}\n      shell: bash\n    - uses: actions/upload-artifact@v4\n      with:\n        name: ${{ inputs.name }}\n        path: ${{ inputs.output }}\n"
  },
  {
    "path": ".github/workflows/dev-release.yml",
    "content": "name: 'Dev Release'\n\non:\n  workflow_call:\n\njobs:\n  create-dev-hash:\n    runs-on: ubuntu-latest\n    outputs:\n      dev-hash: ${{ steps.create-dev-hash.outputs.DEV_HASH }}\n    steps:\n      - uses: actions/checkout@v4\n      - name: Install Dependencies\n        run: npm ci --no-package-lock\n        shell: bash\n      - id: create-dev-hash\n        name: Create Dev Hash\n        run: |\n          echo \"DEV_HASH=$(node ./scripts/bump-version.js)-dev.1$(date +%s).1$(git log -1 --format=%H | cut -c 1-7)\" >> $GITHUB_OUTPUT\n        shell: bash\n\n  release-ionicons:\n    runs-on: ubuntu-latest\n    needs: [create-dev-hash]\n    permissions:\n      id-token: write\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v4\n      - name: Publish to NPM\n        uses: ./.github/workflows/actions/publish-npm\n        with:\n          tag: dev\n          version: ${{ needs.create-dev-hash.outputs.dev-hash }}\n          working-directory: './'\n          createRelease: 'false'\n\n  get-build:\n    name: Get your dev build!\n    runs-on: ubuntu-latest\n    needs: [create-dev-hash, release-ionicons]\n    steps:\n      - run: echo ${{ needs.create-dev-hash.outputs.dev-hash }}\n"
  },
  {
    "path": ".github/workflows/production-release.yml",
    "content": "name: 'Production Release'\n\non:\n  workflow_call:\n    inputs:\n      version:\n        required: false\n        type: string\n        description: npm version (major, minor, or patch)\n\njobs:\n  release-ionicons:\n    runs-on: ubuntu-latest\n    permissions:\n      id-token: write\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v4\n        with:\n          token: ${{ secrets.IONITRON_TOKEN }}\n      - name: Publish to NPM\n        uses: ./.github/workflows/actions/publish-npm\n        with:\n          tag: latest\n          version: ${{ inputs.version }}\n          working-directory: './'\n          createRelease: true\n          ghToken: ${{ secrets.IONITRON_TOKEN }}\n"
  },
  {
    "path": ".github/workflows/release-orchestrator.yml",
    "content": "name: 'Release Orchestrator'\n\non:\n  workflow_dispatch:\n    inputs:\n      release-type:\n        description: 'Release type'\n        required: true\n        type: choice\n        options:\n          - dev\n          - production\n      version:\n        description: 'Version for production releases'\n        required: false\n        type: choice\n        options:\n          - patch\n          - minor\n          - major\n\npermissions:\n  id-token: write\n  contents: read\n\njobs:\n  run-dev:\n    if: ${{ inputs.release-type == 'dev' }}\n    uses: ./.github/workflows/dev-release.yml\n    secrets: inherit\n\n  run-production:\n    if: ${{ inputs.release-type == 'production' }}\n    uses: ./.github/workflows/production-release.yml\n    secrets: inherit\n    with:\n      version: ${{ inputs.version }}\n"
  },
  {
    "path": ".github/workflows/update-screenshots.yml",
    "content": "name: 'Update Reference Screenshots'\n\non:\n  workflow_dispatch:\n\njobs:\n  build-core:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n      - uses: ./.github/workflows/actions/build-core\n\n  test-e2e:\n    strategy:\n      # This ensures that all screenshot shard\n      # failures are reported so the dev can\n      # review everything at once.\n      fail-fast: false\n      matrix:\n        # Divide the tests into n buckets\n        # and run those buckets in parallel.\n        # To increase the number of shards,\n        # add new items to the shard array\n        # and change the value of totalShards\n        # to be the length of the shard array.\n        shard: [1, 2, 3]\n        totalShards: [3]\n    needs: [build-core]\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n      - uses: ./.github/workflows/actions/test-e2e\n        with:\n          shard: ${{ matrix.shard }}\n          totalShards: ${{ matrix.totalShards }}\n          update: true\n\n  update-reference-screenshots:\n    runs-on: ubuntu-latest\n    needs: [test-e2e]\n    steps:\n      - uses: actions/checkout@v4\n        # Normally, we could just push with the\n        # default GITHUB_TOKEN, but that will\n        # not cause the build workflow\n        # to re-run. We use Ionitron's\n        # Personal Access Token instead\n        # to allow for this build workflow\n        # to run when the screenshots are pushed.\n        with:\n          token: ${{ secrets.IONITRON_TOKEN }}\n      - uses: ./.github/workflows/actions/update-reference-screenshots\n"
  },
  {
    "path": ".github/workflows/validation.yml",
    "content": "name: 'Validation'\n\non:\n  pull_request:\n    branches: ['**']\n  push:\n    branches: ['main']\n\n# When pushing a new commit we should\n# cancel the previous test run to not\n# consume more runners than we need to.\nconcurrency:\n  group: ${{ github.ref }}\n  cancel-in-progress: true\n\njobs:\n  build-core:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n        with:\n          # Checkout the latest commit in this branch\n          ref: ${{ github.event.pull_request.head.sha }}\n      - uses: ./.github/workflows/actions/build-core\n\n  test-spec:\n    needs: [build-core]\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n      - uses: ./.github/workflows/actions/test-spec\n\n  test-e2e:\n    strategy:\n      # This ensures that all screenshot shard\n      # failures are reported so the dev can\n      # review everything at once.\n      fail-fast: false\n      matrix:\n        # Divide the tests into n buckets\n        # and run those buckets in parallel.\n        # To increase the number of shards,\n        # add new items to the shard array\n        # and change the value of totalShards\n        # to be the length of the shard array.\n        shard: [1, 2, 3]\n        totalShards: [3]\n    needs: [build-core]\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n      - uses: ./.github/workflows/actions/test-e2e\n        with:\n          shard: ${{ matrix.shard }}\n          totalShards: ${{ matrix.totalShards }}\n\n  # Screenshots are required to pass\n  # in order for the branch to be merge\n  # eligible. However, the screenshot tests\n  # are run on n runners where n can change\n  # over time. The verify-screenshots step allows\n  # us to have a required status check for screenshot\n  # results without having to manually add each\n  # matrix run in the branch protection rules\n  # Source: https://github.community/t/status-check-for-a-matrix-jobs/127354\n  verify-e2e:\n    if: ${{ always() }}\n    needs: test-e2e\n    runs-on: ubuntu-latest\n    steps:\n      - name: Check build matrix status\n        if: ${{ needs.test-e2e.result != 'success' }}\n        run: exit 1\n"
  },
  {
    "path": ".gitignore",
    "content": "*~\n*.sw[mnpcod]\n*.log\n*.lock\n*.tmp\n*.tmp.*\nlog.txt\n*.sublime-project\n*.sublime-workspace\n.idea/\n.versions/\n.vscode/\n/components/\nnode_modules/\ntmp/\ndist/\nicons/\n.DS_Store\nscripts/*.js\n!scripts/install-loader.js\n\nwww/\n/test-results/\n/playwright-report/\n/playwright/.cache/\n/src/**/*-snapshots\n*.tgz"
  },
  {
    "path": ".prettierrc.json",
    "content": "{\n  \"arrowParens\": \"always\",\n  \"bracketSpacing\": true,\n  \"jsxBracketSameLine\": false,\n  \"jsxSingleQuote\": false,\n  \"quoteProps\": \"consistent\",\n  \"printWidth\": 120,\n  \"semi\": true,\n  \"singleQuote\": true,\n  \"tabWidth\": 2,\n  \"trailingComma\": \"all\",\n  \"useTabs\": false\n}\n"
  },
  {
    "path": "CHANGELOG.md",
    "content": "# Change Log\n\nPlease see https://github.com/ionic-team/ionicons/releases"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "content": "# Contributor Code of Conduct\n\nAs contributors and maintainers of the Ionicons project, we pledge to respect everyone who contributes by posting issues, updating documentation, submitting pull requests, providing feedback in comments, and any other activities.\n\nCommunication through any of Ionic's channels (GitHub, Slack, Forum, IRC, mailing lists, Twitter, etc.) must be constructive and never resort to personal attacks, trolling, public or private harassment, insults, or other unprofessional conduct.\n\nWe promise to extend courtesy and respect to everyone involved in this project regardless of gender, gender identity, sexual orientation, disability, age, race, ethnicity, religion, or level of experience. We expect anyone contributing to the Ionicons project to do the same.\n\nIf any member of the community violates this code of conduct, the maintainers of the Ionicons project may take action, removing issues, comments, and PRs or blocking accounts as deemed appropriate.\n\nIf you are subject to or witness unacceptable behavior, or have any other concerns, please email us at [hi@ionicframework.com](mailto:hi@ionicframework.com).\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "# Contributing to Ionicons\n\nThank you for your interest in contributing to Ionicons! :tada:\n\nThis document outlines the guidelines and processes for contributing to this project.\n\n## Table of Contents\n\n- [Contributing to Ionicons](#contributing-to-ionicons)\n  - [Table of Contents](#table-of-contents)\n  - [Code of Conduct](#code-of-conduct)\n  - [Getting Started](#getting-started)\n    - [Prerequisites](#prerequisites)\n    - [Environment Setup](#environment-setup)\n  - [Development Workflow](#development-workflow)\n    - [Branch Strategy](#branch-strategy)\n    - [Component Modifications](#component-modifications)\n    - [Testing Changes](#testing-changes)\n    - [Code Style](#code-style)\n    - [Building](#building)\n  - [Submitting Issues](#submitting-issues)\n  - [Submitting Pull Requests](#submitting-pull-requests)\n\n## Code of Conduct\n\nPlease read our [Contributor Code of Conduct](./CODE_OF_CONDUCT.md) for information on our rules of conduct. By contributing to Ionicons, you agree to abide by its terms.\n\n## Getting Started\n\n### Prerequisites\n\n- [Node.js](https://nodejs.org/) (LTS version recommended)\n- [npm](https://www.npmjs.com/) (comes with Node.js)\n- Git\n\n### Environment Setup\n\n1. We recommend using [nvm](https://github.com/nvm-sh/nvm) (Node Version Manager) to manage Node.js versions:\n   - For macOS/Linux: `curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash`\n   - For Windows: Use [nvm-windows](https://github.com/coreybutler/nvm-windows)\n   - Install and use the LTS version: `nvm install --lts && nvm use --lts`\n\n   Alternatively, you can [download the installer](https://nodejs.org/) for the LTS version of Node.js directly.\n\n2. Fork the repository on GitHub\n3. Clone your fork locally:\n   ```bash\n   git clone https://github.com/YOUR-USERNAME/ionicons.git\n   cd ionicons\n   ```\n4. Add the original repository as an upstream remote:\n   ```bash\n   git remote add upstream https://github.com/ionic-team/ionicons.git\n   ```\n5. Create a new branch from `main` for your change:\n   ```bash\n   git checkout -b your-feature-branch\n   ```\n6. Install dependencies:\n   ```bash\n   npm install\n   ```\n7. Run the initial build:\n   ```bash\n   npm run build\n   ```\n8. If desired, [modify the Icon Component](#component-modifications)\n9. Or, modify and preview the site\n\n## Development Workflow\n\n### Branch Strategy\n\n- Always create a new branch from `main` for your changes:\n  ```bash\n  git checkout main\n  git pull upstream main\n  git checkout -b your-feature-branch\n  ```\n\n### Component Modifications\n\nIf you're modifying the `ion-icon` component:\n\n1. Navigate to `src/components/` directory and open the `icon` component to modify\n2. Make your changes to the component code\n3. Test your changes (see [Testing Changes](#testing-changes))\n\n### Testing Changes\n\nTo preview component changes:\n\n1. Run:\n   ```bash\n   npm start\n   ```\n   This will start a local version of the icon test with a test page\n   \n2. Modify the test page in `index.html` as needed to test your changes\n3. If you are modifying icons, you can run `npm run build.files` to re-run the SVG optimization script to verify there are no changes after optimizing the SVG\n\n### Code Style\n\n- This project uses Prettier for code formatting\n- Run `npm run prettier` to format your code before submitting\n\n### Building\n\n- Run `npm run build` to build the complete package\n- Run `npm run build.files` to rebuild only the SVG icon files\n\n## Submitting Issues\n\nPlease submit issues for:\n- Bug reports\n- Feature requests\n- General questions about the project\n\nWhen creating issues:\n\n1. If you have a question about using Ionicons, please ask on the [Ionic Forum](http://forum.ionicframework.com/) or in the [Ionic Discord](https://ionic.link/discord).\n\n2. It is required that you clearly describe the steps necessary to reproduce the issue you are running into. Although we would love to help our users as much as possible, diagnosing issues without clear reproduction steps is extremely time-consuming and simply not sustainable.\n\n3. The issue list of this repository is exclusively for bug reports and feature requests. Non-conforming issues will be closed immediately.\n\n4. Check if a similar issue already exists by searching through [existing issues](https://github.com/ionic-team/ionicons/issues?utf8=%E2%9C%93&q=is%3Aissue). You can search through existing issues to see if there is a similar one reported. Include closed issues as it may have been closed with a solution.\n\n5. Use the provided issue templates and clearly describe:\n   - Expected behavior\n   - Actual behavior\n   - Steps to reproduce (for bugs)\n   - Browser/device information when relevant\n\n6. [Create a new issue](https://github.com/ionic-team/ionicons/issues/new/choose) that thoroughly explains the problem.\n\n## Submitting Pull Requests\n\n1. Before submitting a Pull Request (PR), please:\n   - Create an issue first to discuss the proposed changes\n   - Comment on an existing issue mentioning you'd like to work on it\n   - Look for issues labeled with [`help wanted`](https://github.com/ionic-team/ionicons/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) if you're new to the project\n\n2. Creating the PR:\n   - Update your fork to the latest upstream main\n   - Make your changes in a new git branch\n   - Follow the code style of the project\n   - Include relevant tests\n   - Make sure all tests pass: `npm test`\n   - Update documentation if needed\n   - [Create a new pull request](https://github.com/ionic-team/ionicons/compare) with the `main` branch as the base."
  },
  {
    "path": "LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2015-present Ionic (http://ionic.io/)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"
  },
  {
    "path": "jest.config.mjs",
    "content": "import path from 'path';\nimport url from 'url';\n\nimport { createJestStencilPreset } from 'jest-stencil-runner';\n\nconst __dirname = path.dirname(url.fileURLToPath(import.meta.url));\n\nexport default createJestStencilPreset({\n  rootDir: __dirname,  \n  // Add any additional Jest configuration here\n  collectCoverageFrom: [\n    'src/**/*.{ts,tsx}',\n    '!src/**/*.d.ts',\n  ],\n  testMatch: [\n    '**/__tests__/**/*.(ts|tsx|js)',\n    '**/*.(test|spec).(ts|tsx|js)'\n  ]\n});"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"ionicons\",\n  \"version\": \"8.0.13\",\n  \"description\": \"Premium icons for Ionic.\",\n  \"files\": [\n    \"components/\",\n    \"dist/\",\n    \"icons/\"\n  ],\n  \"main\": \"./dist/index.cjs.js\",\n  \"module\": \"./dist/index.js\",\n  \"types\": \"dist/types/index.d.ts\",\n  \"unpkg\": \"dist/ionicons/ionicons.esm.js\",\n  \"jsdelivr\": \"dist/ionicons/ionicons.esm.js\",\n  \"collection\": \"dist/collection/collection-manifest.json\",\n  \"collection:main\": \"dist/collection/index.js\",\n  \"exports\": {\n    \".\": {\n      \"types\": \"./dist/types/index.d.ts\",\n      \"import\": \"./dist/index.js\",\n      \"require\": \"./dist/index.cjs.js\"\n    },\n    \"./loader\": {\n      \"types\": \"./dist/loader/index.d.ts\",\n      \"import\": \"./dist/loader/index.js\",\n      \"require\": \"./dist/loader/index.cjs.js\"\n    },\n    \"./components\": {\n      \"types\": \"./components/index.d.ts\",\n      \"import\": \"./components/index.js\"\n    },\n    \"./components/ion-icon.js\": {\n      \"types\": \"./components/ion-icon.d.ts\",\n      \"import\": \"./components/ion-icon.js\"\n    },\n    \"./icons\": {\n      \"types\": \"./icons/index.d.ts\",\n      \"import\": \"./icons/index.mjs\",\n      \"require\": \"./icons/index.js\"\n    },\n    \"./dist/ionicons.json\": {\n      \"default\": \"./dist/ionicons.json\"\n    }\n  },\n  \"scripts\": {\n    \"build\": \"run-s clean build.* prettier\",\n    \"build.files\": \"tsx scripts/build.ts\",\n    \"build.component\": \"stencil build\",\n    \"build.collection\": \"tsx scripts/collection-copy.ts\",\n    \"clean\": \"rimraf dist components icons www\",\n    \"prettier\": \"npm run prettier.base -- --write\",\n    \"prettier.base\": \"prettier --cache \\\"./({bin,scripts,src,test}/**/*.{ts,tsx,js,jsx})|bin/stencil|.github/(**/)?*.(yml|yaml)|*.js\\\"\",\n    \"prettier.dry-run\": \"npm run prettier.base -- --list-different\",\n    \"start\": \"run-s build.files start.stencil\",\n    \"start.stencil\": \"stencil build --dev --watch --serve\",\n    \"test\": \"run-s test.spec\",\n    \"test.spec\": \"jest\",\n    \"test.e2e\": \"playwright test\",\n    \"test.e2e.install\": \"playwright install && playwright install-deps\"\n  },\n  \"dependencies\": {\n    \"@stencil/core\": \"^4.35.3\"\n  },\n  \"devDependencies\": {\n    \"@playwright/test\": \"^1.53.2\",\n    \"@types/fs-extra\": \"^11.0.4\",\n    \"@types/jest\": \"^30.0.0\",\n    \"@types/node\": \"^22.15.3\",\n    \"@types/svgo\": \"^3.0.0\",\n    \"fs-extra\": \"^11.3.0\",\n    \"jest\": \"^30.0.4\",\n    \"jest-cli\": \"^30.0.4\",\n    \"jest-stencil-runner\": \"^0.0.8\",\n    \"npm-run-all2\": \"^8.0.4\",\n    \"prettier\": \"^3.6.2\",\n    \"puppeteer\": \"^24.12.0\",\n    \"rimraf\": \"^6.0.1\",\n    \"semver\": \"^7.7.2\",\n    \"serve\": \"^14.2.4\",\n    \"svgo\": \"4.0.0\",\n    \"tsx\": \"^4.20.3\",\n    \"typescript\": \"^5.8.3\"\n  },\n  \"keywords\": [\n    \"icon pack\",\n    \"ionic\",\n    \"icon\",\n    \"svg\",\n    \"mobile\",\n    \"web component\",\n    \"component\",\n    \"custom element\",\n    \"material design\",\n    \"ios\"\n  ],\n  \"homepage\": \"http://ionicons.com/\",\n  \"author\": {\n    \"name\": \"Ben Sperry\",\n    \"web\": \"https://twitter.com/benjsperry\"\n  },\n  \"contributors\": [\n    {\n      \"name\": \"Adam Bradley\",\n      \"web\": \"http://twitter.com/adamdbradley\"\n    }\n  ],\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/ionic-team/ionicons.git\"\n  },\n  \"bugs\": {\n    \"url\": \"https://github.com/ionic-team/ionicons/issues\"\n  },\n  \"license\": \"MIT\",\n  \"sideEffects\": [\n    \"icons/imports/\"\n  ],\n  \"web-types\": \"dist/ionic.web-types.json\"\n}\n"
  },
  {
    "path": "playwright.config.ts",
    "content": "import type { PlaywrightTestConfig } from '@playwright/test';\nimport { devices, expect } from '@playwright/test';\n\nconst projects: PlaywrightTestConfig['projects'] = [\n  {\n    /**\n     * This is really just desktop Firefox\n     * but with a mobile viewport.\n     */\n    name: 'Mobile Firefox',\n    use: {\n      browserName: 'firefox',\n      /**\n       * This is the Pixel 5 configuration.\n       * We can't use devices['Pixel 5']\n       * because the \"isMobile\" option is\n       * not supported on Firefox.\n       */\n      viewport: {\n        width: 393,\n        height: 727\n      }\n    },\n  },\n  {\n    name: 'Mobile Chrome',\n    use: {\n      browserName: 'chromium',\n      ...devices['Pixel 5']\n    }\n  },\n  {\n    name: 'Mobile Safari',\n    use: {\n      browserName: 'webkit',\n      ...devices['iPhone 12']\n    }\n  }\n];\n\n/**\n * See https://playwright.dev/docs/test-configuration.\n */\nconst config: PlaywrightTestConfig = {\n  testMatch: '*.e2e.ts',\n  expect: {\n    /**\n     * Maximum time expect() should wait for the condition to be met.\n     * For example in `await expect(locator).toHaveText();`\n     */\n    timeout: 5000,\n    \n    /**\n     * Configure screenshot comparison settings\n     * to be more tolerant of minor visual differences\n     */\n    toHaveScreenshot: {\n      // Increase the threshold to allow for small font rendering differences\n      // This sets the maximum allowed ratio of pixels that can be different\n      maxDiffPixelRatio: 0.02, // Allow up to 2% of pixels to be different\n      \n      // Alternatively, you can use absolute pixel count\n      // maxDiffPixels: 100, // Allow up to 100 pixels to be different\n      \n      // Add a threshold for per-pixel difference to handle anti-aliasing\n      threshold: 0.2, // Default is 0.1\n    }\n  },\n  /* Fail the build on CI if you accidentally left test.only in the source code. */\n  forbidOnly: !!process.env.CI,\n  retries: process.env.CI ? 2 : 0,\n  /* Opt out of parallel tests on CI. */\n  workers: process.env.CI ? 1 : undefined,\n  /* Reporter to use. See https://playwright.dev/docs/test-reporters */\n  reporter: 'html',\n  /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */\n  use: {\n    /* Maximum time each action such as `click()` can take. Defaults to 0 (no limit). */\n    actionTimeout: 0,\n    /* Base URL to use in actions like `await page.goto('/')`. */\n    // baseURL: 'http://localhost:3000',\n\n    /**\n     * All failed tests should create\n     * a trace file for easier debugging.\n     *\n     * See https://playwright.dev/docs/trace-viewer\n     */\n    trace: 'retain-on-failure',\n    baseURL: 'http://localhost:3333',\n  },\n\n  /* Configure projects for major browsers */\n  projects,\n  webServer: {\n    command: 'serve www -p 3333',\n    port: 3333,\n    reuseExistingServer: !process.env.CI\n  }\n};\n\nexport default config;"
  },
  {
    "path": "readme.md",
    "content": "# Ionicons\n\n[Ionicons](http://ionicons.com/) is a completely open-source icon set with 1,300 icons crafted for web, iOS, Android, and desktop apps. Ionicons was built for [Ionic Framework](https://ionicframework.com/), so icons have both Material Design and iOS versions.\n\nNote: All brand icons are trademarks of their respective owners. The use of these trademarks does not indicate endorsement of the trademark holder by Ionic, nor vice versa.\n\nWe intend for this icon pack to be used with [Ionic](http://ionicframework.com/), but it’s by no means limited to it. Use them wherever you see fit, personal or commercial. They are free to use and licensed under [MIT](http://opensource.org/licenses/MIT).\n\n\n## Contributing\n\nThanks for your interest in contributing! Read up on our guidelines for\n[contributing](https://github.com/ionic-team/ionicons/blob/main/CONTRIBUTING.md)\nand then look through our issues with a [help wanted](https://github.com/ionic-team/ionicons/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22)\nlabel.\n\n\n## Using the Web Component\n\nThe Ionicons Web Component is an easy and performant way to use Ionicons in your app. The component will dynamically load an SVG for each icon, so your app is only requesting the icons that you need.\n\nAlso note that only visible icons are loaded, and icons that are \"below the fold\" and hidden from the user's view do not make fetch requests for the svg resource.\n\n### Installation\n\nIf you're using [Ionic Framework](https://ionicframework.com/), Ionicons is packaged by default, so no installation is necessary. Want to use Ionicons without Ionic Framework? Place the following `<script>` near the end of your page, right before the closing `</body>` tag, to enable them.\n\n```html\n<script type=\"module\" src=\"https://esm.sh/ionicons@latest/loader\"></script>\n<script nomodule src=\"https://esm.sh/ionicons@latest/loader\"></script>\n```\n\nyou can replace `latest` to pick any version of Ionicon, e.g.:\n\n```html\n<script type=\"module\" src=\"https://esm.sh/ionicons@8.0.0/loader\"></script>\n<script nomodule src=\"https://esm.sh/ionicons@8.0.0/loader\"></script>\n```\n\n### Basic usage\n\nTo use a built-in icon from the Ionicons package, populate the `name` attribute on the ion-icon component:\n\n```html\n<ion-icon name=\"heart\"></ion-icon>\n```\n\n### Custom icons\n\nTo use a custom SVG, provide its url in the `src` attribute to request the external SVG file. The `src` attribute works the same as `<img src=\"...\">` in that the url must be accessible from the webpage that's making a request for the image. Additionally, the external file can only be a valid svg and does not allow scripts or events within the svg element.\n\n```html\n<ion-icon src=\"/path/to/external/file.svg\"></ion-icon>\n```\n\n#### Custom Asset Path\n\nIf you have a different set of icons you would like to load or if the Ionicon icons are hosted on a different page or path, you can set the asset url from which Ionicons pulls the icons via:\n\n```ts\nimport { setAssetPath, addIcons } from 'ionicons';\nimport { add, logoIonic, save } from 'ionicons/icons';\n\n// set root path for loading icons to \"<root>/public/svg\"\nsetAssetPath(`${window.location.origin}/public/svg/`);\n\n// only load specific icons\naddIcons({ add, logoIonic, save });\n```\n\nThis allows the use of named icons like this:\n\n```html\n<!-- now pulls the svg from \"<root>/public/svg/heart.svg\" -->\n<ion-icon name=\"heart\"></ion-icon>\n```\n\n## Variants\nEach app icon in Ionicons has a `filled`, `outline` and `sharp` variant. These different variants are provided to make your app feel native to a variety of platforms. The filled variant uses the default name without a suffix. Note: Logo icons do not have outline or sharp variants.\n\n```html\n<ion-icon name=\"heart\"></ion-icon> <!--filled-->\n<ion-icon name=\"heart-outline\"></ion-icon> <!--outline-->\n<ion-icon name=\"heart-sharp\"></ion-icon> <!--sharp-->\n```\n\n### Platform specificity\nWhen using icons in Ionic Framework you can specify different icons per platform. Use the `md` and `ios` attributes and provide the platform-specific icon/variant name.\n\n```html\n<ion-icon ios=\"heart-outline\" md=\"heart-sharp\"></ion-icon>\n```\n\n## Size\n\nTo specify the icon size, you can use the size attribute for our pre-defined font sizes.\n\n```html\n<ion-icon size=\"small\"></ion-icon>\n<ion-icon size=\"large\"></ion-icon>\n```\n\nOr you can set a specific size by applying the `font-size` CSS property on the `ion-icon` component. It's recommended to use pixel sizes that are a multiple of 8 (8, 16, 32, 64, etc.)\n\n```css\nion-icon {\n  font-size: 64px;\n}\n```\n\n## Color\n\nSpecify the icon color by applying the `color` CSS property on the `ion-icon` component.\n\n```css\nion-icon {\n  color: blue;\n}\n```\n\n## Stroke width\nWhen using an `outline` icon variant it is possible to adjust the stroke width, for improved visual balance relative to the icon's size or relative to the width of adjacent text. You can set a specific size by applying the `--ionicon-stroke-width` CSS custom property to the `ion-icon` component. The default value is 32px.\n\n```html\n<ion-icon name=\"heart-outline\"></ion-icon>\n```\n\n```css\nion-icon {\n  --ionicon-stroke-width: 16px;\n}\n```\n\n## Migrating from v4\n\nSee the [5.0 release notes](https://github.com/ionic-team/ionicons/releases/tag/5.0.0) for a list of icon deletions/renames.\n\n## License\n\nIonicons is licensed under the [MIT license](http://opensource.org/licenses/MIT).\n\n\n## Related\n\n* [Ionicons Homepage](http://ionicons.com/)\n* [Ionic Framework](https://ionicframework.com/)\n* [Ionic Discord](https://ionic.link/discord)\n* [Ionic Forum](https://forum.ionicframework.com/)\n* [Stencil](https://stenciljs.com/)\n* [Capacitor](https://capacitorjs.com/)\n"
  },
  {
    "path": "scripts/build.ts",
    "content": "import path from 'node:path';\n\nimport fs from 'fs-extra';\nimport { optimize } from 'svgo';\n\nimport { webComponentPassPlugins, sourcePassPlugins } from './plugins';\nimport { reservedKeywords } from './constants';\nimport pkgData from '../package.json' with { type: 'json' };\nimport type { SvgData } from './types';\n\nasync function build(rootDir: string) {\n  try {\n    const srcDir = path.join(rootDir, 'src');\n    const srcSvgDir = path.join(srcDir, 'svg');\n    const iconDir = path.join(rootDir, 'icons');\n    const distDir = path.join(rootDir, 'dist');\n    const distIoniconsDir = path.join(distDir, 'ionicons');\n    const distSvgDir = path.join(distDir, 'svg');\n    const optimizedSvgDir = path.join(distIoniconsDir, 'svg');\n\n    /**\n     * Create the directories first, then empty them\n     * This ensures they exist before we try to write files to them\n     */\n    await Promise.all([\n      fs.ensureDir(iconDir),\n      fs.ensureDir(distDir),\n      fs.ensureDir(distSvgDir),\n      fs.ensureDir(optimizedSvgDir),\n      fs.ensureDir(distIoniconsDir),\n    ]);\n\n    /**\n     * Empty the directories\n     */\n    await Promise.all([\n      fs.emptyDir(iconDir),\n      fs.emptyDir(distDir),\n      fs.emptyDir(distSvgDir),\n      fs.emptyDir(optimizedSvgDir),\n      fs.emptyDir(distIoniconsDir),\n    ]);\n\n    const version = pkgData.version as string;\n    const srcSvgData = await getSvgs(srcSvgDir, distSvgDir, optimizedSvgDir);\n    await optimizeSvgs(srcSvgData);\n    await Promise.all([\n      createDataJson(version, srcDir, distDir, srcSvgData),\n      createIconPackage(version, iconDir, srcSvgData),\n    ]);\n\n    const svgSymbolsContent = await createSvgSymbols(version, distDir, srcSvgData);\n\n    await createCheatsheet(version, rootDir, distDir, svgSymbolsContent, srcSvgData);\n    await createWebTypes(version, rootDir, distDir, srcSvgData);\n    await copyToTesting(rootDir, distDir, srcSvgData);\n  } catch (e) {\n    console.error(e);\n    process.exit(1);\n  }\n}\n\nasync function optimizeSvgs(srcSvgData: SvgData[]) {\n  await Promise.all(\n    srcSvgData.map(async (svgData) => {\n      return optimizeSvg(svgData);\n    }),\n  );\n}\n\nasync function optimizeSvg(svgData: SvgData) {\n  const srcSvgContent = await fs.readFile(svgData.srcFilePath, 'utf8');\n\n  const optimizedSvg = await optimize(srcSvgContent, { path: svgData.srcFilePath });\n  const webComponentSvg = await optimize(optimizedSvg.data, {\n    path: svgData.srcFilePath,\n    plugins: webComponentPassPlugins,\n  });\n  const sourceSvg = await optimize(optimizedSvg.data, {\n    path: svgData.srcFilePath,\n    plugins: sourcePassPlugins,\n  });\n\n  // Ensure directories exist before writing files\n  await Promise.all([\n    fs.ensureDir(path.dirname(svgData.optimizedFilePath)),\n    fs.ensureDir(path.dirname(svgData.distSvgFilePath)),\n  ]);\n\n  svgData.optimizedSvgContent = webComponentSvg.data;\n  await Promise.all([\n    fs.writeFile(svgData.optimizedFilePath, svgData.optimizedSvgContent),\n    fs.writeFile(svgData.distSvgFilePath, sourceSvg.data),\n  ]);\n}\n\nasync function copyToTesting(rootDir: string, distDir: string, srcSvgData: SvgData[]) {\n  const testDir = path.join(rootDir, 'www');\n  const testBuildDir = path.join(testDir, 'build');\n  const testSvgDir = path.join(testBuildDir, 'svg');\n\n  // Ensure all directories exist\n  await Promise.all([fs.ensureDir(testDir), fs.ensureDir(testBuildDir), fs.ensureDir(testSvgDir)]);\n\n  await Promise.all(\n    srcSvgData\n      .filter((svgData): svgData is SvgData & { optimizedSvgContent: string } => Boolean(svgData.optimizedSvgContent))\n      .map(async (svgData) => {\n        const testSvgFilePath = path.join(testSvgDir, svgData.fileName);\n        await fs.writeFile(testSvgFilePath, svgData.optimizedSvgContent);\n      }),\n  );\n\n  const distCheatsheetFilePath = path.join(distDir, 'cheatsheet.html');\n  const testCheatsheetFilePath = path.join(testDir, 'cheatsheet.html');\n  await fs.copyFile(distCheatsheetFilePath, testCheatsheetFilePath);\n}\n\nasync function createSvgSymbols(version: string, distDir: string, srcSvgData: SvgData[]) {\n  srcSvgData = srcSvgData.sort((a, b) => {\n    if (a.iconName < b.iconName) return -1;\n    if (a.iconName > b.iconName) return 1;\n    return 0;\n  });\n\n  const symbolsSvgFilePath = path.join(distDir, 'ionicons.symbols.svg');\n\n  const lines = [\n    `<svg data-ionicons=\"${version}\" style=\"display:none\">`,\n    `<style>`,\n    `.ionicon {`,\n    `  fill: currentColor;`,\n    `  stroke: currentColor;`,\n    `}`,\n    `.ionicon-fill-none {`,\n    `  fill: none;`,\n    `}`,\n    `.ionicon-stroke-width {`,\n    `  stroke-width: 32px;`,\n    `}`,\n    `</style>`,\n  ];\n\n  srcSvgData\n    .filter((svgData): svgData is SvgData & { optimizedSvgContent: string } => Boolean(svgData.optimizedSvgContent))\n    .forEach((svgData) => {\n      const svg = svgData.optimizedSvgContent\n        .replace(`<svg xmlns=\"http://www.w3.org/2000/svg\"`, `<symbol id=\"${svgData.iconName}\"`)\n        .replace(`</svg>`, `</symbol>`);\n      lines.push(svg);\n    });\n\n  lines.push(`</svg>`, ``);\n\n  const content = lines.join('\\n');\n  await fs.writeFile(symbolsSvgFilePath, content);\n  return content;\n}\n\nasync function createCheatsheet(\n  version: string,\n  rootDir: string,\n  distDir: string,\n  svgSymbolsContent: string,\n  srcSvgData: SvgData[],\n) {\n  const CheatsheetTmpFilePath = path.join(rootDir, 'scripts', 'cheatsheet-template.html');\n  const distCheatsheetFilePath = path.join(distDir, 'cheatsheet.html');\n\n  const c = srcSvgData.map(\n    (svgData) =>\n      `<a href=\"./svg/${svgData.fileName}\"><svg><use href=\"#${svgData.iconName}\" xlink:href=\"#${svgData.iconName}\"/></svg></a>`,\n  );\n\n  c.push(svgSymbolsContent);\n\n  const html = (await fs.readFile(CheatsheetTmpFilePath, 'utf8'))\n    .replace(/{{version}}/g, version)\n    .replace(/{{count}}/g, srcSvgData.length.toString())\n    .replace(/{{content}}/g, c.join('\\n'));\n\n  await fs.writeFile(distCheatsheetFilePath, html);\n}\n\nasync function createWebTypes(version: string, rootDir: string, distDir: string, srcSvgData: SvgData[]) {\n  const srcWebTypeFilePath = path.join(rootDir, 'src/ionicons.web-types.json');\n  const distWebTypesFilePath = path.join(distDir, 'ionicons.web-types.json');\n  const webTypes = JSON.parse(await fs.readFile(srcWebTypeFilePath, 'utf8'));\n\n  webTypes.version = version;\n\n  const icons = webTypes.contributions.html.ionicons;\n  for (let data of srcSvgData) {\n    icons.push({\n      name: data.iconName,\n      icon: 'dist/svg/' + data.fileName,\n    });\n  }\n\n  const jsonStr = JSON.stringify(webTypes, null, 2) + '\\n';\n  await fs.writeFile(distWebTypesFilePath, jsonStr);\n}\n\nasync function getSvgs(srcSvgDir: string, distSvgDir: string, optimizedSvgDir: string): Promise<SvgData[]> {\n  const svgFiles = (await fs.readdir(srcSvgDir)).filter((fileName) => {\n    return !fileName.startsWith('.') && fileName.endsWith('.svg');\n  });\n\n  const svgData = await Promise.all(\n    svgFiles.map(async (fileName) => {\n      // fileName: airplane-outline.svg\n\n      if (fileName.toLowerCase() !== fileName) {\n        throw new Error(`svg filename \"${fileName}\" must be all lowercase`);\n      }\n\n      // srcFilePath: /src/svg/airplane-outline.svg\n      const srcFilePath = path.join(srcSvgDir, fileName);\n\n      // srcFilePath: /src/svg/airplane-outline.svg\n      const distSvgFilePath = path.join(distSvgDir, fileName);\n\n      // optimizedFilePath: /dist/ionicons/svg/airplane-outline.svg\n      const optimizedFilePath = path.join(optimizedSvgDir, fileName);\n\n      const dotSplit = fileName.split('.');\n      if (dotSplit.length > 2) {\n        throw new Error(`svg filename \"${fileName}\" cannot contain more than one period`);\n      }\n\n      // iconName: airplane-outline\n      const iconName = dotSplit[0];\n\n      if (reservedKeywords.has(iconName)) {\n        throw new Error(`svg icon name \"${iconName}\" is a reserved JavaScript keyword`);\n      }\n\n      // fileNameMjs: airplane-outline.mjs\n      const fileNameMjs = iconName + '.mjs';\n\n      // fileNameCjs: airplane-outline.mjs\n      const fileNameCjs = iconName + '.js';\n\n      // exportName: airplaneOutline\n      const exportName = camelize(iconName);\n\n      const title = toTitleCase(\n        fileName.replace('.svg', '').replace('-outline', '').replace('-sharp', '').replace(/-/g, ' '),\n      );\n\n      return {\n        fileName,\n        title,\n        srcFilePath,\n        distSvgFilePath,\n        srcSvgContent: await fs.readFile(srcFilePath, 'utf8'),\n        optimizedFilePath,\n        iconName,\n        fileNameMjs,\n        fileNameCjs,\n        exportName,\n      };\n    }),\n  );\n\n  return svgData.sort((a, b) => {\n    if (a.exportName < b.exportName) return -1;\n    if (a.exportName > b.exportName) return 1;\n    return 0;\n  });\n}\n\nasync function createIconPackage(version: string, iconDir: string, srcSvgData: SvgData[]) {\n  await Promise.all([\n    createEsmIcons(version, iconDir, srcSvgData),\n    createCjsIcons(version, iconDir, srcSvgData),\n    createDtsIcons(version, iconDir, srcSvgData),\n  ]);\n}\n\nasync function createEsmIcons(version: string, iconDir: string, srcSvgData: SvgData[]) {\n  const iconEsmFilePath = path.join(iconDir, 'index.mjs');\n\n  const o = [`/* Ionicons v${version}, ES Modules */`, ``];\n\n  srcSvgData.forEach((svgData) => {\n    o.push(`export const ${svgData.exportName} = ${getDataUrl(svgData)}`);\n  });\n\n  await fs.writeFile(iconEsmFilePath, o.join('\\n') + '\\n');\n}\n\nasync function createCjsIcons(version: string, iconDir: string, srcSvgData: SvgData[]) {\n  const iconCjsFilePath = path.join(iconDir, 'index.js');\n\n  const o = [`/* Ionicons v${version}, CommonJS */`, ``];\n\n  srcSvgData.forEach((svgData) => {\n    o.push(`exports.${svgData.exportName} = ${getDataUrl(svgData)}`);\n  });\n\n  await fs.writeFile(iconCjsFilePath, o.join('\\n') + '\\n');\n}\n\nasync function createDtsIcons(version: string, iconDir: string, srcSvgData: SvgData[]) {\n  const iconDtsFilePath = path.join(iconDir, 'index.d.ts');\n\n  const o = [`/* Ionicons v${version}, Types */`, ``];\n\n  srcSvgData.forEach((svgData) => {\n    o.push(`export declare var ${svgData.exportName}: string;`);\n  });\n\n  await fs.writeFile(iconDtsFilePath, o.join('\\n') + '\\n');\n}\n\nfunction getDataUrl(svgData: SvgData) {\n  let svg = svgData.optimizedSvgContent;\n\n  if (!svg) {\n    throw new Error(`oh no! no optimized SVG content! ${svgData.fileName}`);\n  }\n\n  if (svg.includes(`'`)) {\n    throw new Error(`oh no! no single quotes allowed! ${svgData.fileName}`);\n  }\n  if (svg.includes(`\\n`) || svg.includes(`\\r`)) {\n    throw new Error(`oh no! no new lines allowed! ${svgData.fileName}`);\n  }\n  svg = svg.replace(/\"/g, \"'\");\n  return `\"data:image/svg+xml;utf8,${svg}\"`;\n}\n\nasync function createDataJson(version: string, srcDir: string, distDir: string, srcSvgData: SvgData[]) {\n  const srcDataJsonPath = path.join(srcDir, 'data.json');\n  const distDataJsonPath = path.join(distDir, 'ionicons.json');\n\n  const data = await fs.readJson(srcDataJsonPath).catch(() => ({}));\n  data.icons = data.icons || [];\n\n  // add new icons\n  srcSvgData.forEach((svgData) => {\n    if (!data.icons.some((i) => i.name === svgData.iconName)) {\n      data.icons.push({\n        name: svgData.iconName,\n      });\n    }\n  });\n\n  // remove dead icons\n  data.icons = data.icons.filter((dataIcon) => {\n    return srcSvgData.some((svgData) => dataIcon.name === svgData.iconName);\n  });\n\n  // sort\n  data.icons = data.icons.sort((a, b) => {\n    if (a.name < b.name) return -1;\n    if (a.name > b.name) return 1;\n    return 0;\n  });\n  data.icons.forEach((icon) => {\n    icon.tags = icon.tags || icon.name.split('-');\n    icon.tags = icon.tags.sort();\n  });\n\n  const srcJsonStr = JSON.stringify(data, null, 2) + '\\n';\n  await fs.writeFile(srcDataJsonPath, srcJsonStr);\n\n  const distJsonData = {\n    name: 'ionicons',\n    version,\n    icons: data.icons,\n  };\n  const distJsonStr = JSON.stringify(distJsonData, null, 2) + '\\n';\n  await fs.writeFile(distDataJsonPath, distJsonStr);\n}\n\nfunction camelize(text: string) {\n  let words = text.split(/[-_]/g); // ok one simple regexp.\n  return words[0].toLowerCase() + words.slice(1).map(upFirst).join('');\n}\n\nfunction upFirst(word: string) {\n  return word[0].toUpperCase() + word.toLowerCase().slice(1);\n}\n\nfunction toTitleCase(str: string) {\n  const s = str.trim().toLowerCase().split(' ');\n  for (var i = 0; i < s.length; i++) {\n    s[i] = s[i].charAt(0).toUpperCase() + s[i].slice(1);\n  }\n  return s.join(' ');\n}\n\n// let's do this\nbuild(path.join(__dirname, '..'));\n"
  },
  {
    "path": "scripts/cheatsheet-template.html",
    "content": "<!doctype html>\n<html>\n<head>\n  <meta charset=\"utf-8\">\n  <title>Ionicons {{version}} Cheatsheet</title>\n  <style>\n    body {\n      font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;\n      background: #fff;\n    }\n    h1 {\n      margin: 0;\n    }\n    .options {\n      padding: 15px 0 20px 0;\n    }\n    label {\n      display: inline-block;\n      width: 100px;\n      font-size: 12px;\n    }\n    svg {\n      width: 32px;\n      height: 32px;\n    }\n    a {\n      color: inherit;\n      text-decoration: none;\n    }\n    a:hover {\n      opacity: 0.7;\n    }\n  </style>\n</head>\n<body>\n<h1>Ionicons {{version}} Cheatsheet</h1>\n<h3>{{count}} icons</h3>\n\n{{content}}\n</body>\n</html>\n"
  },
  {
    "path": "scripts/collection-copy.ts",
    "content": "import fs from 'fs-extra';\nimport { join } from 'path';\n\nasync function collectionCopy(rootDir: string) {\n  // move optimized svgs to correct collection location\n  const optimizedSrc = join(rootDir, 'dist', 'ionicons', 'svg');\n  const collectionDest = join(rootDir, 'dist', 'collection', 'components', 'icon', 'svg');\n  await fs.copy(optimizedSrc, collectionDest);\n\n  // we don't to copy the src svgs to collection\n  await fs.remove(join(rootDir, 'dist', 'collection', 'svg'));\n  // We don't want to copy the test svg assets to collection\n  await fs.remove(join(rootDir, 'dist', 'collection', 'components', 'test'));\n\n  const cePackageDir = join(rootDir, 'components');\n  const cePackageJsonPath = join(cePackageDir, 'package.json');\n  const ceCjsPath = join(cePackageDir, 'index.cjs.js');\n\n  const emptyCjs = `/*empty cjs*/`;\n  await fs.writeFile(ceCjsPath, emptyCjs);\n\n  const cePackageJson = {\n    name: 'ionicons/components',\n    description: 'Ionicons custom element.',\n    main: './index.cjs.js',\n    module: './index.js',\n    types: './index.d.ts',\n    private: true,\n  };\n  await fs.writeFile(cePackageJsonPath, JSON.stringify(cePackageJson, null, 2));\n\n  // this is temporary!!!!\n  // removing the `type` from the d.ts export\n  // to make it easier for users migrating between\n  // of older versions of angular and typescript\n  // to the newer verisons, where the `type` keyword\n  // is used. This is a megahack, no doubt.\n  const typesDist = join(rootDir, 'dist', 'types', 'index.d.ts');\n  let types = await fs.readFile(typesDist, 'utf8');\n  types = types.replace('export type', 'export');\n  await fs.writeFile(typesDist, types);\n}\n\ncollectionCopy(join(__dirname, '..'));\n"
  },
  {
    "path": "scripts/constants.ts",
    "content": "// https://mathiasbynens.be/notes/reserved-keywords\nexport const reservedKeywords = new Set([\n  'do',\n  'if',\n  'in',\n  'for',\n  'let',\n  'new',\n  'try',\n  'var',\n  'case',\n  'else',\n  'enum',\n  'eval',\n  'null',\n  'this',\n  'true',\n  'void',\n  'with',\n  'await',\n  'break',\n  'catch',\n  'class',\n  'const',\n  'false',\n  'super',\n  'throw',\n  'while',\n  'yield',\n  'delete',\n  'export',\n  'import',\n  'public',\n  'return',\n  'static',\n  'switch',\n  'typeof',\n  'default',\n  'extends',\n  'finally',\n  'package',\n  'private',\n  'continue',\n  'debugger',\n  'function',\n  'arguments',\n  'interface',\n  'protected',\n  'implements',\n  'instanceof',\n  'constructor',\n]);\n"
  },
  {
    "path": "scripts/plugins.ts",
    "content": "import { PluginConfig } from 'svgo';\n\nconst setRootIoniconClass: PluginConfig = {\n  name: 'addClassesToSVGElement',\n  params: {\n    className: 'ionicon',\n  },\n};\n\nconst addFillNoneCss: PluginConfig = {\n  name: 'addFillNoneCss',\n  fn: () => ({\n    element: {\n      enter: (element) => {\n        if (element.attributes.fill) {\n          if (element.attributes.fill === 'none') {\n            element.attributes.class = [...(element.attributes.class?.split(' ') || []), 'ionicon-fill-none'].join(' ');\n          }\n          delete element.attributes.fill;\n        }\n        if (element.attributes.stroke) {\n          delete element.attributes.stroke;\n        }\n        if (\n          element.attributes['stroke-width'] &&\n          (element.attributes['stroke-width'] === '32px' || element.attributes['stroke-width'] === '32')\n        ) {\n          delete element.attributes['stroke-width'];\n          element.attributes.class = [...(element.attributes.class?.split(' ') || []), 'ionicon-stroke-width'].join(\n            ' ',\n          );\n        }\n      },\n    },\n  }),\n};\n\nconst forceCurrentColor: PluginConfig = {\n  name: 'forceCurrentColor',\n  fn: () => ({\n    element: {\n      enter: (element) => {\n        const attr = element.attributes.stroke || element.attributes.fill;\n        const attrName = element.attributes.stroke ? 'stroke' : element.attributes.fill ? 'fill' : undefined;\n\n        if (attrName) {\n          if (attr === '#000' || attr === 'currentColor') {\n            element.attributes[attrName] = 'currentColor';\n          } else if (attr !== 'none') {\n            throw new Error(`invalid \"${attrName}\" value: ${element.attributes[attrName]}`);\n          }\n        }\n      },\n    },\n  }),\n};\n\nconst validatePlugin: PluginConfig = {\n  name: 'validate',\n  fn: () => ({\n    element: {\n      enter: (element) => {\n        if (element.attributes.style) {\n          console.warn(\n            `Inline style attributed detected: <${element.name} style=\"${element.attributes.style}\">...</${element.name}>`,\n          );\n        }\n        if (element.name === 'style') {\n          console.warn('Inline style element detected');\n        }\n      },\n    },\n  }),\n};\n\nconst basePlugins: PluginConfig[] = [\n  'removeStyleElement',\n  'convertStyleToAttrs',\n  'removeScripts',\n  'removeDimensions',\n  setRootIoniconClass,\n  validatePlugin,\n];\n\nexport const webComponentPassPlugins: PluginConfig[] = [...basePlugins, addFillNoneCss];\n\nexport const sourcePassPlugins: PluginConfig[] = [...basePlugins, forceCurrentColor];\n"
  },
  {
    "path": "scripts/readme.md",
    "content": "# Development and Build Scripts\n\n## Updating Icons\n\nThe `src/svg` directory is the single source of truth for svgs. They should not already be optimized and can be the original svg export straight out of an svg editor. A build step before releasing will optimize the source svgs (remove comments, reduce the size, etc) and ensure they'll work within `ion-icon`.\n\n## Build Locally\n\nAfter an svg has been updated, added or deleted from the `src/svg` directory, run:\n\n```sh\nnpm run build\n```\n\nThe build command will optimize all of the icons and generate the files to be distributed. After the build command, all of the optimized svgs are saved in `dist/ionicons/svg`. Additionally the `dist` directory contains the distribution files for the `ion-icon` web component.\n\n## Svg Symbols Cheatsheet\n\nAfter a build, a new `www/cheatsheet.html` file will be created. This version uses svg symbols rather than `ion-icon`.\n\n## ion-icon Component Preview\n\nTo see the `ion-icon` component in action, run:\n\n```sh\nnpm start\n```\n\n## Release Steps\n\nThe release script will ask what version to use. After the script completes, double check the `www/cheatsheet.html` to ensure everything is good to go.\n\nNext, update `CHANGELOG.md`, then commit and push your changes Github.\n\n```sh\nnpm run release\n```\n\nTriple check the version number is correct, and choose which tag this should be released as. If it's a pre-release, it should be `dev`.\n"
  },
  {
    "path": "scripts/types.ts",
    "content": "import { PluginConfig } from 'svgo';\n\nexport interface SvgData {\n  /**\n   * airplane-outline.svg\n   */\n  fileName: string;\n\n  /**\n   * airplane\n   */\n  title: string;\n\n  /**\n   * /src/svg/airplane-outline.svg\n   */\n  srcFilePath: string;\n\n  /**\n   * /dist/ionicons/svg/airplane-outline.svg\n   */\n  optimizedFilePath: string;\n\n  /**\n   * /dist/svg/airplane-outline.svg\n   */\n  distSvgFilePath: string;\n\n  /**\n   * optimized svg content\n   */\n  optimizedSvgContent?: string;\n\n  /**\n   * airplane-outline\n   */\n  iconName: string;\n\n  /**\n   * airplane-outline.mjs\n   */\n  fileNameMjs: string;\n\n  /**\n   * airplane-outline.js\n   */\n  fileNameCjs: string;\n\n  /**\n   * airplaneOutline\n   */\n  exportName: string;\n}\n"
  },
  {
    "path": "src/components/icon/icon.css",
    "content": ":host {\n  display: inline-block;\n\n  width: 1em;\n  height: 1em;\n\n  contain: strict;\n\n  fill: currentColor;\n\n  box-sizing: content-box !important;\n\n}\n\n:host .ionicon {\n  stroke: currentColor;\n}\n\n.ionicon-fill-none {\n  fill: none;\n}\n\n.ionicon-stroke-width {\n  stroke-width: var(--ionicon-stroke-width, 32px);\n}\n\n.icon-inner,\n.ionicon,\nsvg {\n  display: block;\n\n  height: 100%;\n  width: 100%;\n}\n\n/* Icon RTL\n * -----------------------------------------------------------\n */\n\n/**\n * Safari <16.4 incorrectly reports\n * that it supports :dir(rtl) when it does not.\n * This @supports statement lets us target\n * WebKit browsers to apply the RTL fallback.\n * -webkit-named-image only exists on WebKit.\n * For WebKit browsers that do support :dir(rtl)\n * (i.e. Safari >= 16.4) then the :dir(rtl)\n * code farther down on the page will take\n * effect and override this fallback.\n */\n@supports (background: -webkit-named-image(i)) {\n  :host(.icon-rtl) .icon-inner {\n    transform: scaleX(-1);\n  }\n}\n\n/**\n * Fallback for browsers that support\n * neither :host-context nor :dir.\n * The icon will not react to dir\n * changes, but it will at least\n * respect the dir on component load.\n */\n@supports not selector(:dir(rtl)) and selector(:host-context([dir='rtl'])) {\n  :host(.icon-rtl) .icon-inner {\n    transform: scaleX(-1);\n  }\n}\n\n/* :host-context is supported in chromium; :dir is supported in safari & firefox */\n:host(.flip-rtl):host-context([dir='rtl']) .icon-inner {\n  transform: scaleX(-1);\n}\n\n@supports selector(:dir(rtl)) {\n  :host(.flip-rtl:dir(rtl)) .icon-inner {\n    transform: scaleX(-1);\n  }\n  /**\n   * This is needed for WebKit otherwise the fallback\n   * will always cause the icon to be flipped if the document\n   * loads in RTL.\n   */\n  :host(.flip-rtl:dir(ltr)) .icon-inner {\n    transform: scaleX(1);\n  }\n}\n\n/* Icon Sizes\n * -----------------------------------------------------------\n */\n\n:host(.icon-small) {\n  font-size: 1.125rem !important;\n}\n\n:host(.icon-large) {\n  font-size: 2rem !important;\n}\n\n/* Icon Colors\n * -----------------------------------------------------------\n */\n\n:host(.ion-color) {\n  color: var(--ion-color-base) !important;\n}\n\n:host(.ion-color-primary) {\n  --ion-color-base: var(--ion-color-primary, #3880ff);\n}\n\n:host(.ion-color-secondary) {\n  --ion-color-base: var(--ion-color-secondary, #0cd1e8);\n}\n\n:host(.ion-color-tertiary) {\n  --ion-color-base: var(--ion-color-tertiary, #f4a942);\n}\n\n:host(.ion-color-success) {\n  --ion-color-base: var(--ion-color-success, #10dc60);\n}\n\n:host(.ion-color-warning) {\n  --ion-color-base: var(--ion-color-warning, #ffce00);\n}\n\n:host(.ion-color-danger) {\n  --ion-color-base: var(--ion-color-danger, #f14141);\n}\n\n:host(.ion-color-light) {\n  --ion-color-base: var(--ion-color-light, #f4f5f8);\n}\n\n:host(.ion-color-medium) {\n  --ion-color-base: var(--ion-color-medium, #989aa2);\n}\n\n:host(.ion-color-dark) {\n  --ion-color-base: var(--ion-color-dark, #222428);\n}\n"
  },
  {
    "path": "src/components/icon/icon.tsx",
    "content": "import { Build, Component, Element, Host, Prop, State, Watch, h } from '@stencil/core';\nimport { getSvgContent, ioniconContent } from './request';\nimport { getName, getUrl, inheritAttributes, isRTL } from './utils';\n\n@Component({\n  tag: 'ion-icon',\n  assetsDirs: ['svg'],\n  styleUrl: 'icon.css',\n  shadow: true,\n})\nexport class Icon {\n  private io?: IntersectionObserver;\n  private iconName: string | null = null;\n  private inheritedAttributes: { [k: string]: any } = {};\n  private didLoadIcon = false;\n\n  @Element() el!: HTMLElement;\n\n  @State() private svgContent?: string;\n  @State() private isVisible = false;\n\n  /**\n   * The mode determines which platform styles to use.\n   */\n  @Prop({ mutable: true }) mode = getIonMode();\n\n  /**\n   * The color to use for the background of the item.\n   */\n  @Prop() color?: string;\n\n  /**\n   * Specifies which icon to use on `ios` mode.\n   */\n  @Prop() ios?: string;\n\n  /**\n   * Specifies which icon to use on `md` mode.\n   */\n  @Prop() md?: string;\n\n  /**\n   * Specifies whether the icon should horizontally flip when `dir` is `\"rtl\"`.\n   */\n  @Prop() flipRtl?: boolean;\n\n  /**\n   * Specifies which icon to use from the built-in set of icons.\n   */\n  @Prop({ reflect: true }) name?: string;\n\n  /**\n   * Specifies the exact `src` of an SVG file to use.\n   */\n  @Prop() src?: string;\n\n  /**\n   * A combination of both `name` and `src`. If a `src` url is detected\n   * it will set the `src` property. Otherwise it assumes it's a built-in named\n   * SVG and set the `name` property.\n   */\n  @Prop() icon?: any;\n\n  /**\n   * The size of the icon.\n   * Available options are: `\"small\"` and `\"large\"`.\n   */\n  @Prop() size?: string;\n\n  /**\n   * If enabled, ion-icon will be loaded lazily when it's visible in the viewport.\n   * Default, `false`.\n   */\n  @Prop() lazy = false;\n\n  /**\n   * When set to `false`, SVG content that is HTTP fetched will not be checked\n   * if the response SVG content has any `<script>` elements, or any attributes\n   * that start with `on`, such as `onclick`.\n   * @default true\n   */\n  @Prop() sanitize = true;\n\n  componentWillLoad() {\n    this.inheritedAttributes = inheritAttributes(this.el, ['aria-label']);\n  }\n\n  connectedCallback() {\n    /**\n     * purposely do not return the promise here because loading\n     * the svg file should not hold up loading the app\n     * only load the svg if it's visible\n     */\n    this.waitUntilVisible(this.el, '50px', () => {\n      this.isVisible = true;\n      this.loadIcon();\n    });\n  }\n\n  /**\n   * Loads the icon after the component has finished rendering.\n   */\n  componentDidLoad() {\n    /**\n     * Addresses an Angular issue where property values are assigned after the 'connectedCallback' but prior to the registration of watchers.\n     * This enhancement ensures the loading of an icon when the component has finished rendering and the icon has yet to apply the SVG data.\n     * This modification pertains to the usage of Angular's binding syntax:\n     * `<ion-icon [name]=\"myIconName\"></ion-icon>`\n     */\n    if (!this.didLoadIcon) {\n      this.loadIcon();\n    }\n  }\n\n  /**\n   * Disconnect the IntersectionObserver.\n   */\n  disconnectedCallback() {\n    if (this.io) {\n      this.io.disconnect();\n      this.io = undefined;\n    }\n  }\n\n  /**\n   * Wait until the icon is visible in the viewport.\n   * @param el - The element to observe.\n   * @param rootMargin - The root margin of the observer.\n   * @param cb - The callback to call when the element is visible.\n   */\n  private waitUntilVisible(el: HTMLElement, rootMargin: string, cb: () => void) {\n    /**\n     * IntersectionObserver is a browser API that allows you to observe\n     * the visibility of an element relative to a root element. It is\n     * supported in all modern browsers, except IE and when server-side\n     * rendering.\n     */\n    const hasIntersectionObserverSupport = Boolean(\n      Build.isBrowser && this.lazy && typeof window !== 'undefined' && window.IntersectionObserver,\n    );\n\n    /**\n     * browser doesn't support IntersectionObserver\n     * so just fallback to always show it\n     */\n    if (!hasIntersectionObserverSupport) {\n      return cb();\n    }\n\n    const io = (this.io = new window.IntersectionObserver(\n      (data: IntersectionObserverEntry[]) => {\n        if (data[0].isIntersecting) {\n          io.disconnect();\n          this.io = undefined;\n          cb();\n        }\n      },\n      { rootMargin },\n    ));\n\n    io.observe(el);\n  }\n\n  /**\n   * Watch for changes to the icon name, src, icon, ios, or md properties.\n   * When a change is detected, the icon will be loaded.\n   */\n  @Watch('name')\n  @Watch('src')\n  @Watch('icon')\n  @Watch('ios')\n  @Watch('md')\n  loadIcon() {\n    if (Build.isBrowser && this.isVisible) {\n      const url = getUrl(this);\n\n      if (url) {\n        if (ioniconContent.has(url)) {\n          // sync if it's already loaded\n          this.svgContent = ioniconContent.get(url);\n        } else {\n          // async if it hasn't been loaded\n          getSvgContent(url, this.sanitize).then(() => (this.svgContent = ioniconContent.get(url)));\n        }\n        this.didLoadIcon = true;\n      }\n    }\n\n    this.iconName = getName(this.name, this.icon, this.mode, this.ios, this.md);\n  }\n\n  render() {\n    const { flipRtl, iconName, inheritedAttributes, el } = this;\n    const mode = this.mode || 'md';\n\n    /**\n     * we have designated that arrows & chevrons should automatically flip (unless flip-rtl\n     * is set to false) because \"back\" is left in ltr and right in rtl, and \"forward\" is the opposite\n     */\n    const shouldAutoFlip = iconName\n      ? (iconName.includes('arrow') || iconName.includes('chevron')) && flipRtl !== false\n      : false;\n\n    /**\n     * if shouldBeFlippable is true, the icon should change direction when `dir` changes\n     */\n    const shouldBeFlippable = flipRtl || shouldAutoFlip;\n\n    return (\n      <Host\n        role=\"img\"\n        class={{\n          [mode]: true,\n          ...createColorClasses(this.color),\n          [`icon-${this.size}`]: !!this.size,\n          'flip-rtl': shouldBeFlippable,\n          'icon-rtl': shouldBeFlippable && isRTL(el),\n        }}\n        {...inheritedAttributes}\n      >\n        {Build.isBrowser && this.svgContent ? (\n          <div class=\"icon-inner\" innerHTML={this.svgContent}></div>\n        ) : (\n          <div class=\"icon-inner\"></div>\n        )}\n      </Host>\n    );\n  }\n}\n\n/**\n * Get the mode of the document.\n * @returns The mode of the document.\n */\nconst getIonMode = () =>\n  (Build.isBrowser && typeof document !== 'undefined' && document.documentElement.getAttribute('mode')) || 'md';\n\n/**\n * Create color classes for the icon.\n * @param color - The color of the icon.\n * @returns The color classes for the icon.\n */\nconst createColorClasses = (color: string | undefined) => {\n  return color\n    ? {\n        'ion-color': true,\n        [`ion-color-${color}`]: true,\n      }\n    : null;\n};\n"
  },
  {
    "path": "src/components/icon/readme.md",
    "content": "# ion-icon\n\n\n\n<!-- Auto Generated Below -->\n\n\n## Properties\n\n| Property   | Attribute  | Description                                                                                                                                                                                   | Type                   | Default        |\n| ---------- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------- | -------------- |\n| `color`    | `color`    | The color to use for the background of the item.                                                                                                                                              | `string \\| undefined`  | `undefined`    |\n| `flipRtl`  | `flip-rtl` | Specifies whether the icon should horizontally flip when `dir` is `\"rtl\"`.                                                                                                                    | `boolean \\| undefined` | `undefined`    |\n| `icon`     | `icon`     | A combination of both `name` and `src`. If a `src` url is detected it will set the `src` property. Otherwise it assumes it's a built-in named SVG and set the `name` property.                | `any`                  | `undefined`    |\n| `ios`      | `ios`      | Specifies which icon to use on `ios` mode.                                                                                                                                                    | `string \\| undefined`  | `undefined`    |\n| `lazy`     | `lazy`     | If enabled, ion-icon will be loaded lazily when it's visible in the viewport. Default, `false`.                                                                                               | `boolean`              | `false`        |\n| `md`       | `md`       | Specifies which icon to use on `md` mode.                                                                                                                                                     | `string \\| undefined`  | `undefined`    |\n| `mode`     | `mode`     | The mode determines which platform styles to use.                                                                                                                                             | `string`               | `getIonMode()` |\n| `name`     | `name`     | Specifies which icon to use from the built-in set of icons.                                                                                                                                   | `string \\| undefined`  | `undefined`    |\n| `sanitize` | `sanitize` | When set to `false`, SVG content that is HTTP fetched will not be checked if the response SVG content has any `<script>` elements, or any attributes that start with `on`, such as `onclick`. | `boolean`              | `true`         |\n| `size`     | `size`     | The size of the icon. Available options are: `\"small\"` and `\"large\"`.                                                                                                                         | `string \\| undefined`  | `undefined`    |\n| `src`      | `src`      | Specifies the exact `src` of an SVG file to use.                                                                                                                                              | `string \\| undefined`  | `undefined`    |\n\n\n----------------------------------------------\n\n*Built with [StencilJS](https://stenciljs.com/)*\n"
  },
  {
    "path": "src/components/icon/request.ts",
    "content": "import { isEncodedDataUrl, isSvgDataUrl, validateContent } from './validate';\n\nexport const ioniconContent = new Map<string, string>();\nconst requests = new Map<string, Promise<any>>();\n\nlet parser: DOMParser;\n\n/**\n * Safely fallback to an empty svg\n */\nfunction safeFallback(url: string) {\n  const svg = '';\n  ioniconContent.set(url, svg);\n  return svg;\n}\n\nexport const getSvgContent = (url: string, sanitize: boolean): Promise<string> => {\n  /**\n   * See if we already have a request for this url\n   */\n  const req = requests.get(url);\n  if (req) {\n    return req;\n  }\n\n  if (typeof fetch !== 'undefined' && typeof document !== 'undefined') {\n    /**\n     * If the url is a data url of an svg, then try to parse it\n     * with the DOMParser. This works with content security policies enabled.\n     */\n    if (isSvgDataUrl(url) && isEncodedDataUrl(url)) {\n      return Promise.resolve(getSvgByUrl(url));\n    }\n\n    return fetchSvg(url, sanitize);\n  }\n\n  return Promise.resolve(safeFallback(url));\n};\n\nfunction getSvgByUrl(url: string): string {\n  if (!parser) {\n    /**\n     * Create an instance of the DOM parser. This creates a single\n     * parser instance for the entire app, which is more efficient.\n     */\n    parser = new DOMParser();\n  }\n  const doc = parser.parseFromString(url, 'text/html');\n  const svg = doc.querySelector('svg');\n  if (svg) {\n    ioniconContent.set(url, svg.outerHTML);\n    return svg.outerHTML;\n  }\n\n  throw new Error(`Could not parse svg from ${url}`);\n}\n\nfunction fetchSvg(url: string, sanitize: boolean): Promise<string> {\n  /**\n   * We don't already have a request\n   */\n  const req = fetch(url)\n    .then((rsp) => {\n      /**\n       * When fetching from a file:// URL, some browsers return\n       * a 0 status code even when the request succeeds so don't\n       * rely on rsp.ok as the only signal of success.\n       */\n      return rsp\n        .text()\n        .then((svgContent) => {\n          if (svgContent && sanitize !== false) {\n            svgContent = validateContent(svgContent);\n          }\n\n          const svg = svgContent || '';\n          ioniconContent.set(url, svg);\n          return svg;\n        })\n        .catch(() => safeFallback(url));\n    })\n    .catch(() => safeFallback(url));\n\n  /**\n   * Cache for the same requests\n   */\n  requests.set(url, req);\n  return req;\n}\n"
  },
  {
    "path": "src/components/icon/svg/.gitignore",
    "content": "# this gitignore file is used as a placeholder\n# for this directory. The directory itself will\n# contain files generated during a build step.\n!.gitignore"
  },
  {
    "path": "src/components/icon/test/icon.e2e.ts",
    "content": "import { expect } from '@playwright/test';\nimport { test } from '@utils/test/playwright';\n\ntest.describe('icon: basic', () => {\n  test('should not have visual regressions', async ({ page }) => {\n    await page.goto(`/`);\n\n    // Wait for all SVGs to be lazily loaded before taking screenshots\n    await page.waitForLoadState('networkidle');\n\n    await expect(page).toHaveScreenshot(`icon-diff.png`, { fullPage: true });\n  });\n\n  test('some icons should flip when rtl', async ({ page }) => {\n    await page.goto(`/`);\n\n    const autoflip = page.locator('.auto-flip-chevrons [name=chevron-forward] .icon-inner');\n    const unflip = page.locator('.un-flip-chevrons [name=chevron-forward] .icon-inner');\n    await expect(autoflip).not.toHaveCSS('transform', /matrix\\(-1/);\n    await expect(unflip).not.toHaveCSS('transform', /matrix\\(-1/);\n\n    await page.evaluate(() => {\n      document.dir = 'rtl';\n    });\n\n    await expect(autoflip).toHaveCSS('transform', /matrix\\(-1/);\n    await expect(unflip).not.toHaveCSS('transform', /matrix\\(-1/);\n\n    // Wait for all SVGs to be lazily loaded before taking screenshots\n    await page.waitForLoadState('networkidle');\n\n    const rtlTests = page.locator('#rtl-tests');\n    await expect(rtlTests).toHaveScreenshot(`icon-rtl-diff.png`);\n  });\n\n  test('arrows should flip if dir changes on the element', async ({ page }) => {\n    await page.goto(`/`);\n\n    const autoflip = page.locator('.auto-flip-chevrons [name=chevron-forward] .icon-inner');\n    const unflip = page.locator('.un-flip-chevrons [name=chevron-forward] .icon-inner');\n    await expect(autoflip).not.toHaveCSS('transform', /matrix\\(-1/);\n    await expect(unflip).not.toHaveCSS('transform', /matrix\\(-1/);\n\n    const autoflipEl = await page.$('.auto-flip-chevrons [name=chevron-forward]');\n    const unflipEl = await page.$('.un-flip-chevrons [name=chevron-forward]');\n    await autoflipEl!.evaluate((node) => node.setAttribute('dir', 'rtl'));\n    await unflipEl!.evaluate((node) => node.setAttribute('dir', 'rtl'));\n\n    await expect(autoflip).toHaveCSS('transform', /matrix\\(-1/);\n    await expect(unflip).not.toHaveCSS('transform', /matrix\\(-1/);\n  });\n\n  test('icon should reassess flipping when name changes', async ({ page }) => {\n    await page.goto(`/`);\n\n    await page.evaluate(() => {\n      document.dir = 'rtl';\n    });\n\n    const iconLoc = page.locator('.auto-flip-chevrons ion-icon:nth-child(2)');\n    await expect(iconLoc).toHaveAttribute('name', 'chevron-forward');\n    await expect(iconLoc).toHaveClass(/flip-rtl/);\n\n    const iconEl = await page.$('.auto-flip-chevrons ion-icon:nth-child(2)');\n    await iconEl!.evaluate((node) => node.setAttribute('name', 'brush'));\n\n    await expect(iconLoc).toHaveAttribute('name', 'brush');\n    await expect(iconLoc).not.toHaveClass(/flip-rtl/);\n  });\n});\n"
  },
  {
    "path": "src/components/icon/test/icon.spec.ts",
    "content": "import { newSpecPage } from 'jest-stencil-runner';\nimport { Icon } from '../icon';\n\ndescribe('icon', () => {\n  it('renders', async () => {\n    const { root } = await newSpecPage({\n      components: [Icon],\n      html: '<ion-icon></ion-icon>',\n    });\n    expect(root).toEqualHtml(`\n      <ion-icon class=\"md\" role=\"img\">\n        <mock:shadow-root>\n          <div class=\"icon-inner\"></div>\n        </mock:shadow-root>\n      </ion-icon>\n    `);\n  });\n\n  it('renders rtl with aria-hidden', async () => {\n    const { root } = await newSpecPage({\n      components: [Icon],\n      direction: 'rtl',\n      html: `<ion-icon name=\"chevron-forward\" aria-hidden=\"true\"></ion-icon>`,\n    });\n\n    expect(root).toEqualHtml(`\n      <ion-icon class=\"md flip-rtl icon-rtl\" name=\"chevron-forward\" role=\"img\" aria-hidden=\"true\">\n        <mock:shadow-root>\n          <div class=\"icon-inner\"></div>\n        </mock:shadow-root>\n      </ion-icon>\n    `);\n  });\n\n  it('renders custom aria-label', async () => {\n    const { root } = await newSpecPage({\n      components: [Icon],\n      html: `<ion-icon name=\"star\" aria-label=\"custom label\"></ion-icon>`,\n    });\n\n    expect(root).toEqualHtml(`\n      <ion-icon class=\"md\" name=\"star\" role=\"img\" aria-label=\"custom label\">\n        <mock:shadow-root>\n          <div class=\"icon-inner\"></div>\n        </mock:shadow-root>\n      </ion-icon>\n    `);\n  });\n\n  it('renders custom label after changing source', async () => {\n    const page = await newSpecPage({\n      components: [Icon],\n      html: `<ion-icon name=\"chevron-forward\" aria-label=\"custom label\"></ion-icon>`,\n    });\n\n    const icon = page.root;\n\n    expect(icon).toEqualHtml(`\n      <ion-icon class=\"flip-rtl md\" name=\"chevron-forward\" role=\"img\" aria-label=\"custom label\">\n        <mock:shadow-root>\n          <div class=\"icon-inner\"></div>\n        </mock:shadow-root>\n      </ion-icon>\n    `);\n\n    if (icon) {\n      icon.name = 'trash';\n    }\n    await page.waitForChanges();\n\n    expect(icon).toEqualHtml(`\n      <ion-icon class=\"md\" name=\"trash\" role=\"img\" aria-label=\"custom label\">\n        <mock:shadow-root>\n          <div class=\"icon-inner\"></div>\n        </mock:shadow-root>\n      </ion-icon>\n    `);\n  });\n});\n"
  },
  {
    "path": "src/components/icon/test/utils.spec.ts",
    "content": "import { Icon } from '../icon';\nimport { addIcons, getIconMap, getName, getSrc, getUrl } from '../utils';\n\ndescribe('getUrl', () => {\n  let i: Icon;\n\n  beforeEach(() => {\n    i = new Icon();\n  });\n\n  /**\n   * Started to fail after upgrading to new jest-stencil-runner\n   * @ToDo(@christian-bromann): investigate why this is failing\n   */\n  it.skip('use icon prop, as name', () => {\n    i.icon = 'some-name';\n    expect(getUrl(i)).toBe('/svg/some-name.svg');\n  });\n\n  it('use icon prop, as url', () => {\n    i.icon = './some.svg';\n    expect(getUrl(i)).toBe('./some.svg');\n  });\n\n  /**\n   * Started to fail after upgrading to new jest-stencil-runner\n   * @ToDo(@christian-bromann): investigate why this is failing\n   */\n  it.skip('use name prop', () => {\n    i.name = 'some-name';\n    expect(getUrl(i)).toBe('/svg/some-name.svg');\n  });\n\n  it('use src prop', () => {\n    i.src = './some.svg';\n    i.name = 'some-name';\n    i.icon = 'some-icon';\n    expect(getUrl(i)).toBe('./some.svg');\n  });\n});\n\ndescribe('getSrc', () => {\n  it('both . and /', () => {\n    expect(getSrc('./somefile.svg')).toBe('./somefile.svg');\n  });\n\n  it('url', () => {\n    expect(getSrc('https://ionicons/somefile.svg')).toBe('https://ionicons/somefile.svg');\n  });\n\n  it('just a .', () => {\n    expect(getSrc('somefile.svg')).toBe('somefile.svg');\n  });\n\n  it('just a /', () => {\n    expect(getSrc('/somesvg')).toBe('/somesvg');\n  });\n\n  it('no . or /', () => {\n    expect(getSrc('some-name')).toBe(null);\n  });\n});\n\ndescribe('getName', () => {\n  it('not allow special chars', () => {\n    expect(getName('some\\\\name', '', 'io', '', '')).toBe(null);\n    expect(getName('some$name', '', 'io', '', '')).toBe(null);\n    expect(getName('some:name', '', 'io', '', '')).toBe(null);\n    expect(getName('some.name', '', 'io', '', '')).toBe(null);\n    expect(getName('some/name', '', 'io', '', '')).toBe(null);\n  });\n\n  it('use ios mode prefixed', () => {\n    expect(getName('ios-some-name', '', '', '', '')).toBe('ios-some-name');\n  });\n\n  it('use md mode prefixed', () => {\n    expect(getName('md-some-name', '', '', '', '')).toBe('md-some-name');\n  });\n\n  it('should not use name if no name, ios or md', () => {\n    expect(getName(undefined, undefined, '', '', '')).toBe(null);\n  });\n});\n\ndescribe('addIcons', () => {\n  it('should add an svg to the icon cache', () => {\n    const testData = 'stubbed data';\n\n    expect(getIconMap().get('logo-ionic')).toEqual(undefined);\n\n    addIcons({ 'logo-ionic': 'stubbed data' });\n\n    expect(getIconMap().get('logo-ionic')).toEqual(testData);\n  });\n\n  it('should add kebab and camel case names to the icon cache', () => {\n    const logoIonitron = 'stubbed data';\n\n    expect(getIconMap().get('logo-ionitron')).toEqual(undefined);\n    expect(getIconMap().get('logoIonitron')).toEqual(undefined);\n\n    addIcons({ logoIonitron });\n\n    expect(getIconMap().get('logo-ionitron')).toEqual(logoIonitron);\n    expect(getIconMap().get('logoIonitron')).toEqual(logoIonitron);\n\n    const logoIonitron0 = 'stubbed data 0';\n\n    expect(getIconMap().get('logo-ionitron-0')).toEqual(undefined);\n    expect(getIconMap().get('logoIonitron0')).toEqual(undefined);\n\n    addIcons({ logoIonitron0 });\n\n    expect(getIconMap().get('logo-ionitron-0')).toEqual(logoIonitron0);\n    expect(getIconMap().get('logoIonitron0')).toEqual(logoIonitron0);\n  });\n\n  it('should map to a name that does not match the svg', () => {\n    const logoIonitron = 'stubbed data';\n\n    expect(getIconMap().get('my-fun-icon')).toEqual(undefined);\n\n    addIcons({ 'my-fun-icon': logoIonitron });\n\n    expect(getIconMap().get('my-fun-icon')).toEqual(logoIonitron);\n  });\n\n  it('should map to an explicit camel case name', () => {\n    const logoIonitron = 'stubbed data';\n\n    expect(getIconMap().get('myCoolIcon')).toEqual(undefined);\n\n    addIcons({ myCoolIcon: logoIonitron });\n\n    expect(getIconMap().get('myCoolIcon')).toEqual(logoIonitron);\n  });\n\n  it('should not warn when mapping the same icon twice', () => {\n    const spy = jest.spyOn(console, 'warn');\n\n    const myIcon = 'my-icon';\n\n    expect(spy).not.toHaveBeenCalled();\n\n    addIcons({ myIcon });\n\n    expect(spy).not.toHaveBeenCalled();\n\n    addIcons({ myIcon });\n\n    expect(spy).not.toHaveBeenCalled();\n  });\n\n  it('should not overwrite icons', () => {\n    const spy = jest.spyOn(console, 'warn');\n\n    const logoA = 'logo a';\n    const logoB = 'logo b';\n\n    expect(spy).not.toHaveBeenCalled();\n\n    expect(getIconMap().get('logo-a')).toEqual(undefined);\n\n    addIcons({ 'logo-a': logoB, logoA });\n\n    expect(getIconMap().get('logo-a')).toEqual(logoB);\n    expect(getIconMap().get('logoA')).toEqual(logoA);\n\n    expect(spy).toHaveBeenCalled();\n  });\n});\n"
  },
  {
    "path": "src/components/icon/test/validate.spec.ts",
    "content": "import { isEncodedDataUrl, isSvgDataUrl, isValid } from '../validate';\n\ndescribe('isValid', () => {\n  it('invalid onload attr', () => {\n    const el = {\n      nodeType: 1,\n      nodeName: 'svg',\n      attributes: [{ name: 'onload' }],\n      childNodes: [],\n    } as any;\n    expect(isValid(el)).toBe(false);\n  });\n\n  it('invalid onclick attr', () => {\n    const el = {\n      nodeType: 1,\n      nodeName: 'svg',\n      attributes: [{ name: 'OnClIcK' }],\n      childNodes: [],\n    } as any;\n    expect(isValid(el)).toBe(false);\n  });\n\n  it('invalid child SCRIPT elm', () => {\n    const el = {\n      nodeType: 1,\n      nodeName: 'svg',\n      attributes: [],\n      childNodes: [{ nodeType: 1, nodeName: 'SCRIPT', attributes: [], childNodes: [] }],\n    } as any;\n    expect(isValid(el)).toBe(false);\n  });\n\n  it('invalid script elm', () => {\n    const el = { nodeType: 1, nodeName: 'script', attributes: [], childNodes: [] } as any;\n    expect(isValid(el)).toBe(false);\n  });\n\n  it('is valid circle elm', () => {\n    const el = { nodeType: 1, nodeName: 'circle', attributes: [], childNodes: [] } as any;\n    expect(isValid(el)).toBe(true);\n  });\n\n  it('is valid SVG elm', () => {\n    const el = {\n      nodeType: 1,\n      nodeName: 'SVG',\n      attributes: [],\n      childNodes: [{ nodeType: 1, nodeName: 'line', attributes: [], childNodes: [] }],\n    } as any;\n    expect(isValid(el)).toBe(true);\n  });\n\n  it('is valid text node', () => {\n    const el = { nodeType: 3, nodeName: '#text' } as any;\n    expect(isValid(el)).toBe(true);\n  });\n});\n\nit('isSvgDataUrl', () => {\n  expect(isSvgDataUrl('data:image/svg+xml;base64,xxx')).toBe(true);\n  expect(isSvgDataUrl('data:image/svg+xml;utf8,<svg></svg>')).toBe(true);\n  expect(isSvgDataUrl('https://example.com/icon.svg')).toBe(false);\n  expect(isSvgDataUrl('http://example.com/icon.svg')).toBe(false);\n});\n\nit('isEncodedDataUrl', () => {\n  expect(isEncodedDataUrl('data:image/svg+xml;base64,xxx')).toBe(false);\n  expect(isEncodedDataUrl('data:image/svg+xml;utf8,<svg></svg>')).toBe(true);\n  expect(isEncodedDataUrl('https://example.com/icon.svg')).toBe(false);\n  expect(isEncodedDataUrl('http://example.com/icon.svg')).toBe(false);\n});\n"
  },
  {
    "path": "src/components/icon/utils.ts",
    "content": "import { getAssetPath } from '@stencil/core';\nimport { Icon } from './icon';\n\nlet CACHED_MAP: Map<string, string>;\n\nexport const getIconMap = (): Map<string, string> => {\n  if (typeof window === 'undefined') {\n    return new Map();\n  } else {\n    if (!CACHED_MAP) {\n      const win = window as any;\n      win.Ionicons = win.Ionicons || {};\n      CACHED_MAP = win.Ionicons.map = win.Ionicons.map || new Map();\n    }\n    return CACHED_MAP;\n  }\n};\n\nexport const addIcons = (icons: { [name: string]: string }) => {\n  Object.keys(icons).forEach((name) => {\n    addToIconMap(name, icons[name]);\n\n    /**\n     * Developers can also pass in the SVG object directly\n     * and Ionicons can map the object to a kebab case name.\n     * Example: addIcons({ addCircleOutline });\n     * This will create an \"addCircleOutline\" entry and\n     * an \"add-circle-outline\" entry.\n     * Usage: <ion-icon name=\"add-circle-outline\"></ion-icon>\n     * Using name=\"addCircleOutline\" is valid too, but the\n     * kebab case naming is preferred.\n     */\n    const toKebabCase = name.replace(/([a-z0-9]|(?=[A-Z]))([A-Z0-9])/g, '$1-$2').toLowerCase();\n    if (name !== toKebabCase) {\n      addToIconMap(toKebabCase, icons[name]);\n    }\n  });\n};\n\nconst addToIconMap = (name: string, data: any) => {\n  const map = getIconMap();\n\n  const existingIcon = map.get(name);\n\n  if (existingIcon === undefined) {\n    map.set(name, data);\n\n    /**\n     * Importing and defining the same icon reference\n     * multiple times should not yield a warning.\n     */\n  } else if (existingIcon !== data) {\n    console.warn(\n      `[Ionicons Warning]: Multiple icons were mapped to name \"${name}\". Ensure that multiple icons are not mapped to the same icon name.`,\n    );\n  }\n};\n\nexport const getUrl = (i: Icon) => {\n  let url = getSrc(i.src);\n  if (url) {\n    return url;\n  }\n\n  url = getName(i.name, i.icon, i.mode, i.ios, i.md);\n  if (url) {\n    return getNamedUrl(url, i);\n  }\n\n  if (i.icon) {\n    url = getSrc(i.icon);\n    if (url) {\n      return url;\n    }\n\n    url = getSrc(i.icon[i.mode]);\n    if (url) {\n      return url;\n    }\n  }\n\n  return null;\n};\n\nconst getNamedUrl = (iconName: string, iconEl: Icon) => {\n  const url = getIconMap().get(iconName);\n  if (url) {\n    return url;\n  }\n  try {\n    return getAssetPath(`svg/${iconName}.svg`);\n  } catch (e) {\n    console.log('e', e);\n    /**\n     * In the custom elements build version of ionicons, referencing an icon\n     * by name will throw an invalid URL error because the asset path is not defined.\n     * This catches that error and logs something that is more developer-friendly.\n     * We also include a reference to the ion-icon element so developers can\n     * figure out which instance of ion-icon needs to be updated.\n     */\n    console.warn(\n      `[Ionicons Warning]: Could not load icon with name \"${iconName}\". Ensure that the icon is registered using addIcons or that the icon SVG data is passed directly to the icon component.`,\n      iconEl,\n    );\n  }\n};\n\nexport const getName = (\n  iconName: string | undefined,\n  icon: string | undefined,\n  mode: string | undefined,\n  ios: string | undefined,\n  md: string | undefined,\n) => {\n  // default to \"md\" if somehow the mode wasn't set\n  mode = (mode && toLower(mode)) === 'ios' ? 'ios' : 'md';\n\n  // if an icon was passed in using the ios or md attributes\n  // set the iconName to whatever was passed in\n  if (ios && mode === 'ios') {\n    iconName = toLower(ios);\n  } else if (md && mode === 'md') {\n    iconName = toLower(md);\n  } else {\n    if (!iconName && icon && !isSrc(icon)) {\n      iconName = icon;\n    }\n    if (isStr(iconName)) {\n      iconName = toLower(iconName);\n    }\n  }\n\n  if (!isStr(iconName) || iconName.trim() === '') {\n    return null;\n  }\n\n  // only allow alpha characters and dash\n  const invalidChars = iconName.replace(/[a-z]|-|\\d/gi, '');\n  if (invalidChars !== '') {\n    return null;\n  }\n\n  return iconName;\n};\n\nexport const getSrc = (src: string | undefined) => {\n  if (isStr(src)) {\n    src = src.trim();\n    if (isSrc(src)) {\n      return src;\n    }\n  }\n  return null;\n};\n\nexport const isSrc = (str: string) => str.length > 0 && /(\\/|\\.)/.test(str);\n\nexport const isStr = (val: any): val is string => typeof val === 'string';\n\nexport const toLower = (val: string) => val.toLowerCase();\n\n/**\n * Elements inside of web components sometimes need to inherit global attributes\n * set on the host. For example, the inner input in `ion-input` should inherit\n * the `title` attribute that developers set directly on `ion-input`. This\n * helper function should be called in componentWillLoad and assigned to a variable\n * that is later used in the render function.\n *\n * This does not need to be reactive as changing attributes on the host element\n * does not trigger a re-render.\n */\nexport const inheritAttributes = (el: HTMLElement, attributes: string[] = []) => {\n  const attributeObject: { [k: string]: any } = {};\n\n  attributes.forEach((attr) => {\n    if (el.hasAttribute(attr)) {\n      const value = el.getAttribute(attr);\n      if (value !== null) {\n        attributeObject[attr] = el.getAttribute(attr);\n      }\n      el.removeAttribute(attr);\n    }\n  });\n\n  return attributeObject;\n};\n\n/**\n * Returns `true` if the document or host element\n * has a `dir` set to `rtl`. The host value will always\n * take priority over the root document value.\n */\nexport const isRTL = (hostEl?: Pick<HTMLElement, 'dir'>) => {\n  if (hostEl) {\n    if (hostEl.dir !== '') {\n      return hostEl.dir.toLowerCase() === 'rtl';\n    }\n  }\n  return document?.dir.toLowerCase() === 'rtl';\n};\n"
  },
  {
    "path": "src/components/icon/validate.ts",
    "content": "import { isStr } from './utils';\n\nexport const validateContent = (svgContent: string) => {\n  const div = document.createElement('div');\n  div.innerHTML = svgContent;\n\n  // setup this way to ensure it works on our buddy IE\n  for (let i = div.childNodes.length - 1; i >= 0; i--) {\n    if (div.childNodes[i].nodeName.toLowerCase() !== 'svg') {\n      div.removeChild(div.childNodes[i]);\n    }\n  }\n\n  // must only have 1 root element\n  const svgElm = div.firstElementChild;\n  if (svgElm && svgElm.nodeName.toLowerCase() === 'svg') {\n    const svgClass = svgElm.getAttribute('class') || '';\n    svgElm.setAttribute('class', (svgClass + ' s-ion-icon').trim());\n\n    // root element must be an svg\n    // lets double check we've got valid elements\n    // do not allow scripts\n    if (isValid(svgElm as any)) {\n      return div.innerHTML;\n    }\n  }\n  return '';\n};\n\nexport const isValid = (elm: HTMLElement) => {\n  if (elm.nodeType === 1) {\n    if (elm.nodeName.toLowerCase() === 'script') {\n      return false;\n    }\n\n    for (let i = 0; i < elm.attributes.length; i++) {\n      const name = elm.attributes[i].name;\n      if (isStr(name) && name.toLowerCase().indexOf('on') === 0) {\n        return false;\n      }\n    }\n\n    for (let i = 0; i < elm.childNodes.length; i++) {\n      if (!isValid(elm.childNodes[i] as any)) {\n        return false;\n      }\n    }\n  }\n  return true;\n};\n\nexport const isSvgDataUrl = (url: string) => url.startsWith('data:image/svg+xml');\nexport const isEncodedDataUrl = (url: string) => url.indexOf(';utf8,') !== -1;\n"
  },
  {
    "path": "src/components/test/csp/icon.e2e.ts",
    "content": "import { expect } from '@playwright/test';\nimport { test } from '../../../utils/test/playwright';\n\ntest.describe('icon: csp', () => {\n  test.beforeEach(async ({ page }) => {\n    await page.goto('/test/csp');\n  });\n\n  test('should load svg', async ({ page }) => {\n    const svg = page.locator('ion-icon#icon-usage svg');\n    await expect(svg).toBeVisible();\n  });\n});\n"
  },
  {
    "path": "src/components/test/csp/index.html",
    "content": "<!DOCTYPE html>\n<html dir=\"ltr\" lang=\"en\" mode=\"ios\">\n\n<head>\n  <meta charset=\"utf-8\" />\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=5.0\" />\n  <meta http-equiv=\"Content-Security-Policy\"\n    content=\"default-src 'none'; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com/*; img-src 'self'; connect-src 'self'; font-src https://fonts.gstatic.com/*'\">\n  <title>IonIcon - Content Security Policy</title>\n  <script type=\"module\" src=\"../../build/ionicons.esm.js\"></script>\n  <script nomodule src=\"../../build/ionicons.js\"></script>\n  <style>\n    body {\n      margin: 0;\n      padding: 16px;\n      font-size: 32px;\n      font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;\n    }\n\n    h1 {\n      margin: 15px 0 5px;\n      font-size: 25px;\n    }\n\n    h2 {\n      margin: 15px 0 5px;\n      font-size: 18px;\n    }\n\n    .custom {\n      stroke: red;\n      fill: goldenrod;\n      color: black;\n    }\n  </style>\n</head>\n\n<body>\n  <h1>Ionicons - Test </h1>\n\n  <h2>Default</h2>\n  <ion-icon src=\"/assets/chat.svg\"></ion-icon>\n  <ion-icon name=\"add\"></ion-icon>\n\n  <ion-icon id=\"icon-usage\"\n    icon=\"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Watch</title><rect x='136' y='136' width='240' height='240' rx='8' ry='8'/><path d='M384 96h-48V16H176v80h-48a32 32 0 00-32 32v256a32 32 0 0032 32h48v80h160v-80h48a32 32 0 0032-32V128a32 32 0 00-32-32zm8 272a24 24 0 01-24 24H144a24 24 0 01-24-24V144a24 24 0 0124-24h224a24 24 0 0124 24z'/></svg>\">\n  </ion-icon>\n\n  <ion-icon class=\"custom\"\n    icon=\"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><title>Watch</title><rect x='136' y='136' width='240' height='240' rx='8' ry='8'/><path d='M384 96h-48V16H176v80h-48a32 32 0 00-32 32v256a32 32 0 0032 32h48v80h160v-80h48a32 32 0 0032-32V128a32 32 0 00-32-32zm8 272a24 24 0 01-24 24H144a24 24 0 01-24-24V144a24 24 0 0124-24h224a24 24 0 0124 24z'/></svg>\">\n  </ion-icon>\n</body>\n\n</html>"
  },
  {
    "path": "src/components/test/dynamic-type/icon.e2e.ts",
    "content": "import { expect } from '@playwright/test';\nimport { test } from '../../../utils/test/playwright';\n\ntest.describe('icon: dynamic type', () => {\n  test.beforeEach(async ({ page }) => {\n    await page.goto('/test/dynamic-type');\n  });\n\n  test('should scale text on larger font sizes', async ({ page }) => {\n    // Wait for all SVGs to be lazily loaded before taking screenshots\n    await page.waitForLoadState('networkidle');\n\n    const icons = page.locator('#icons');\n\n    await expect(icons).toHaveScreenshot(`icon-dynamic-type-diff.png`);\n  });\n});\n"
  },
  {
    "path": "src/components/test/dynamic-type/index.html",
    "content": "<!DOCTYPE html>\n<html dir=\"ltr\" lang=\"en\" mode=\"ios\">\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=5.0\" />\n    <meta\n      http-equiv=\"Content-Security-Policy\"\n      content=\"default-src 'none'; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com/*; img-src 'self'; connect-src 'self'; font-src https://fonts.gstatic.com/*'\"\n    />\n    <title>IonIcon - Dynamic Type</title>\n    <script type=\"module\" src=\"../../build/ionicons.esm.js\"></script>\n    <script nomodule src=\"../../build/ionicons.js\"></script>\n    <style>\n      html {\n        font-size: 28px;\n      }\n    </style>\n  </head>\n\n  <body>\n    <div id=\"icons\">\n      <ion-icon name=\"star\"></ion-icon>\n      <ion-icon name=\"star\" size=\"small\"></ion-icon>\n      <ion-icon name=\"star\" size=\"large\"></ion-icon>\n    </div>\n  </body>\n</html>\n"
  },
  {
    "path": "src/components.d.ts",
    "content": "/* eslint-disable */\n/* tslint:disable */\n/**\n * This is an autogenerated file created by the Stencil compiler.\n * It contains typing information for all components that exist in this project.\n */\nimport { HTMLStencilElement, JSXBase } from '@stencil/core/internal';\nexport namespace Components {\n  interface IonIcon {\n    /**\n     * The color to use for the background of the item.\n     */\n    color?: string;\n    /**\n     * Specifies whether the icon should horizontally flip when `dir` is `\"rtl\"`.\n     */\n    flipRtl?: boolean;\n    /**\n     * A combination of both `name` and `src`. If a `src` url is detected it will set the `src` property. Otherwise it assumes it's a built-in named SVG and set the `name` property.\n     */\n    icon?: any;\n    /**\n     * Specifies which icon to use on `ios` mode.\n     */\n    ios?: string;\n    /**\n     * If enabled, ion-icon will be loaded lazily when it's visible in the viewport. Default, `false`.\n     * @default false\n     */\n    lazy: boolean;\n    /**\n     * Specifies which icon to use on `md` mode.\n     */\n    md?: string;\n    /**\n     * The mode determines which platform styles to use.\n     * @default getIonMode()\n     */\n    mode: string;\n    /**\n     * Specifies which icon to use from the built-in set of icons.\n     */\n    name?: string;\n    /**\n     * When set to `false`, SVG content that is HTTP fetched will not be checked if the response SVG content has any `<script>` elements, or any attributes that start with `on`, such as `onclick`.\n     * @default true\n     */\n    sanitize: boolean;\n    /**\n     * The size of the icon. Available options are: `\"small\"` and `\"large\"`.\n     */\n    size?: string;\n    /**\n     * Specifies the exact `src` of an SVG file to use.\n     */\n    src?: string;\n  }\n}\ndeclare global {\n  interface HTMLIonIconElement extends Components.IonIcon, HTMLStencilElement {}\n  var HTMLIonIconElement: {\n    prototype: HTMLIonIconElement;\n    new (): HTMLIonIconElement;\n  };\n  interface HTMLElementTagNameMap {\n    'ion-icon': HTMLIonIconElement;\n  }\n}\ndeclare namespace LocalJSX {\n  interface IonIcon {\n    /**\n     * The color to use for the background of the item.\n     */\n    color?: string;\n    /**\n     * Specifies whether the icon should horizontally flip when `dir` is `\"rtl\"`.\n     */\n    flipRtl?: boolean;\n    /**\n     * A combination of both `name` and `src`. If a `src` url is detected it will set the `src` property. Otherwise it assumes it's a built-in named SVG and set the `name` property.\n     */\n    icon?: any;\n    /**\n     * Specifies which icon to use on `ios` mode.\n     */\n    ios?: string;\n    /**\n     * If enabled, ion-icon will be loaded lazily when it's visible in the viewport. Default, `false`.\n     * @default false\n     */\n    lazy?: boolean;\n    /**\n     * Specifies which icon to use on `md` mode.\n     */\n    md?: string;\n    /**\n     * The mode determines which platform styles to use.\n     * @default getIonMode()\n     */\n    mode?: string;\n    /**\n     * Specifies which icon to use from the built-in set of icons.\n     */\n    name?: string;\n    /**\n     * When set to `false`, SVG content that is HTTP fetched will not be checked if the response SVG content has any `<script>` elements, or any attributes that start with `on`, such as `onclick`.\n     * @default true\n     */\n    sanitize?: boolean;\n    /**\n     * The size of the icon. Available options are: `\"small\"` and `\"large\"`.\n     */\n    size?: string;\n    /**\n     * Specifies the exact `src` of an SVG file to use.\n     */\n    src?: string;\n  }\n  interface IntrinsicElements {\n    'ion-icon': IonIcon;\n  }\n}\nexport { LocalJSX as JSX };\ndeclare module '@stencil/core' {\n  export namespace JSX {\n    interface IntrinsicElements {\n      'ion-icon': LocalJSX.IonIcon & JSXBase.HTMLAttributes<HTMLIonIconElement>;\n    }\n  }\n}\n"
  },
  {
    "path": "src/data.json",
    "content": "{\n  \"icons\": [\n    {\n      \"name\": \"accessibility\",\n      \"tags\": [\n        \"accessibility\"\n      ]\n    },\n    {\n      \"name\": \"accessibility-outline\",\n      \"tags\": [\n        \"accessibility\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"accessibility-sharp\",\n      \"tags\": [\n        \"accessibility\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"add\",\n      \"tags\": [\n        \"add\",\n        \"circle\",\n        \"include\",\n        \"invite\",\n        \"plus\"\n      ]\n    },\n    {\n      \"name\": \"add-circle\",\n      \"tags\": [\n        \"add\",\n        \"circle\",\n        \"include\",\n        \"invite\",\n        \"plus\"\n      ]\n    },\n    {\n      \"name\": \"add-circle-outline\",\n      \"tags\": [\n        \"add\",\n        \"circle\",\n        \"include\",\n        \"invite\",\n        \"outline\",\n        \"plus\"\n      ]\n    },\n    {\n      \"name\": \"add-circle-sharp\",\n      \"tags\": [\n        \"add\",\n        \"circle\",\n        \"include\",\n        \"invite\",\n        \"plus\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"add-outline\",\n      \"tags\": [\n        \"add\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"add-sharp\",\n      \"tags\": [\n        \"add\",\n        \"circle\",\n        \"include\",\n        \"invite\",\n        \"plus\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"airplane\",\n      \"tags\": [\n        \"airplane\",\n        \"plane\"\n      ]\n    },\n    {\n      \"name\": \"airplane-outline\",\n      \"tags\": [\n        \"airplane\",\n        \"outline\",\n        \"plane\"\n      ]\n    },\n    {\n      \"name\": \"airplane-sharp\",\n      \"tags\": [\n        \"airplane\",\n        \"plane\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"alarm\",\n      \"tags\": [\n        \"alarm\",\n        \"clock\",\n        \"time\"\n      ]\n    },\n    {\n      \"name\": \"alarm-outline\",\n      \"tags\": [\n        \"alarm\",\n        \"clock\",\n        \"outline\",\n        \"time\"\n      ]\n    },\n    {\n      \"name\": \"alarm-sharp\",\n      \"tags\": [\n        \"alarm\",\n        \"clock\",\n        \"sharp\",\n        \"time\"\n      ]\n    },\n    {\n      \"name\": \"albums\",\n      \"tags\": [\n        \"albums\",\n        \"boxes\",\n        \"slides\",\n        \"square\"\n      ]\n    },\n    {\n      \"name\": \"albums-outline\",\n      \"tags\": [\n        \"albums\",\n        \"boxes\",\n        \"outline\",\n        \"slides\",\n        \"square\"\n      ]\n    },\n    {\n      \"name\": \"albums-sharp\",\n      \"tags\": [\n        \"albums\",\n        \"boxes\",\n        \"sharp\",\n        \"slides\",\n        \"square\"\n      ]\n    },\n    {\n      \"name\": \"alert\",\n      \"tags\": [\n        \"!\",\n        \"alert\",\n        \"attention\",\n        \"exclamation\",\n        \"notice\",\n        \"warning\"\n      ]\n    },\n    {\n      \"name\": \"alert-circle\",\n      \"tags\": [\n        \"!\",\n        \"alert\",\n        \"attention\",\n        \"circle\",\n        \"exclamation\",\n        \"notice\",\n        \"warning\"\n      ]\n    },\n    {\n      \"name\": \"alert-circle-outline\",\n      \"tags\": [\n        \"!\",\n        \"alert\",\n        \"attention\",\n        \"circle\",\n        \"exclamation\",\n        \"notice\",\n        \"outline\",\n        \"warning\"\n      ]\n    },\n    {\n      \"name\": \"alert-circle-sharp\",\n      \"tags\": [\n        \"!\",\n        \"alert\",\n        \"attention\",\n        \"circle\",\n        \"exclamation\",\n        \"notice\",\n        \"sharp\",\n        \"warning\"\n      ]\n    },\n    {\n      \"name\": \"alert-outline\",\n      \"tags\": [\n        \"alert\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"alert-sharp\",\n      \"tags\": [\n        \"!\",\n        \"alert\",\n        \"attention\",\n        \"exclamation\",\n        \"notice\",\n        \"sharp\",\n        \"warning\"\n      ]\n    },\n    {\n      \"name\": \"american-football\",\n      \"tags\": [\n        \"american\",\n        \"football\"\n      ]\n    },\n    {\n      \"name\": \"american-football-outline\",\n      \"tags\": [\n        \"american\",\n        \"football\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"american-football-sharp\",\n      \"tags\": [\n        \"american\",\n        \"football\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"analytics\",\n      \"tags\": [\n        \"analytics\",\n        \"data\",\n        \"metrics\",\n        \"track\"\n      ]\n    },\n    {\n      \"name\": \"analytics-outline\",\n      \"tags\": [\n        \"analytics\",\n        \"data\",\n        \"metrics\",\n        \"outline\",\n        \"track\"\n      ]\n    },\n    {\n      \"name\": \"analytics-sharp\",\n      \"tags\": [\n        \"analytics\",\n        \"data\",\n        \"metrics\",\n        \"sharp\",\n        \"track\"\n      ]\n    },\n    {\n      \"name\": \"aperture\",\n      \"tags\": [\n        \"aperture\",\n        \"dark\",\n        \"images\",\n        \"levels\",\n        \"light\",\n        \"settings\"\n      ]\n    },\n    {\n      \"name\": \"aperture-outline\",\n      \"tags\": [\n        \"aperture\",\n        \"dark\",\n        \"images\",\n        \"levels\",\n        \"light\",\n        \"outline\",\n        \"settings\"\n      ]\n    },\n    {\n      \"name\": \"aperture-sharp\",\n      \"tags\": [\n        \"aperture\",\n        \"dark\",\n        \"images\",\n        \"levels\",\n        \"light\",\n        \"settings\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"apps\",\n      \"tags\": [\n        \"applications\",\n        \"apps\"\n      ]\n    },\n    {\n      \"name\": \"apps-outline\",\n      \"tags\": [\n        \"applications\",\n        \"apps\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"apps-sharp\",\n      \"tags\": [\n        \"applications\",\n        \"apps\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"archive\",\n      \"tags\": [\n        \"archive\",\n        \"email\"\n      ]\n    },\n    {\n      \"name\": \"archive-outline\",\n      \"tags\": [\n        \"archive\",\n        \"email\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"archive-sharp\",\n      \"tags\": [\n        \"archive\",\n        \"email\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"arrow-back\",\n      \"tags\": [\n        \"arrow\",\n        \"back\",\n        \"chevron\",\n        \"left\",\n        \"navigation\"\n      ]\n    },\n    {\n      \"name\": \"arrow-back-circle\",\n      \"tags\": [\n        \"arrow\",\n        \"back\",\n        \"chevron\",\n        \"circle\",\n        \"left\",\n        \"navigation\"\n      ]\n    },\n    {\n      \"name\": \"arrow-back-circle-outline\",\n      \"tags\": [\n        \"arrow\",\n        \"back\",\n        \"chevron\",\n        \"circle\",\n        \"left\",\n        \"navigation\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"arrow-back-circle-sharp\",\n      \"tags\": [\n        \"arrow\",\n        \"back\",\n        \"chevron\",\n        \"circle\",\n        \"navigation\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"arrow-back-outline\",\n      \"tags\": [\n        \"arrow\",\n        \"back\",\n        \"left\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"arrow-back-sharp\",\n      \"tags\": [\n        \"arrow\",\n        \"back\",\n        \"chevron\",\n        \"left\",\n        \"navigation\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"arrow-down\",\n      \"tags\": [\n        \"arrow\",\n        \"chevron\",\n        \"down\"\n      ]\n    },\n    {\n      \"name\": \"arrow-down-circle\",\n      \"tags\": [\n        \"arrow\",\n        \"chevron\",\n        \"circle\",\n        \"down\"\n      ]\n    },\n    {\n      \"name\": \"arrow-down-circle-outline\",\n      \"tags\": [\n        \"arrow\",\n        \"chevron\",\n        \"circle\",\n        \"down\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"arrow-down-circle-sharp\",\n      \"tags\": [\n        \"arrow\",\n        \"chevron\",\n        \"circle\",\n        \"down\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"arrow-down-left-box\",\n      \"tags\": [\n        \"arrow\",\n        \"box\",\n        \"down\",\n        \"left\"\n      ]\n    },\n    {\n      \"name\": \"arrow-down-left-box-outline\",\n      \"tags\": [\n        \"arrow\",\n        \"box\",\n        \"down\",\n        \"left\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"arrow-down-left-box-sharp\",\n      \"tags\": [\n        \"arrow\",\n        \"box\",\n        \"down\",\n        \"left\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"arrow-down-outline\",\n      \"tags\": [\n        \"arrow\",\n        \"down\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"arrow-down-right-box\",\n      \"tags\": [\n        \"arrow\",\n        \"box\",\n        \"down\",\n        \"right\"\n      ]\n    },\n    {\n      \"name\": \"arrow-down-right-box-outline\",\n      \"tags\": [\n        \"arrow\",\n        \"box\",\n        \"down\",\n        \"outline\",\n        \"right\"\n      ]\n    },\n    {\n      \"name\": \"arrow-down-right-box-sharp\",\n      \"tags\": [\n        \"arrow\",\n        \"box\",\n        \"down\",\n        \"right\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"arrow-down-sharp\",\n      \"tags\": [\n        \"arrow\",\n        \"chevron\",\n        \"down\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"arrow-forward\",\n      \"tags\": [\n        \"arrow\",\n        \"chevron\",\n        \"forward\",\n        \"navigation\",\n        \"right\"\n      ]\n    },\n    {\n      \"name\": \"arrow-forward-circle\",\n      \"tags\": [\n        \"arrow\",\n        \"chevron\",\n        \"circle\",\n        \"forward\",\n        \"navigation\",\n        \"right\"\n      ]\n    },\n    {\n      \"name\": \"arrow-forward-circle-outline\",\n      \"tags\": [\n        \"arrow\",\n        \"chevron\",\n        \"circle\",\n        \"forward\",\n        \"navigation\",\n        \"outline\",\n        \"right\"\n      ]\n    },\n    {\n      \"name\": \"arrow-forward-circle-sharp\",\n      \"tags\": [\n        \"arrow\",\n        \"chevron\",\n        \"circle\",\n        \"forward\",\n        \"navigation\",\n        \"right\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"arrow-forward-outline\",\n      \"tags\": [\n        \"arrow\",\n        \"forward\",\n        \"outline\",\n        \"right\"\n      ]\n    },\n    {\n      \"name\": \"arrow-forward-sharp\",\n      \"tags\": [\n        \"arrow\",\n        \"chevron\",\n        \"forward\",\n        \"navigation\",\n        \"right\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"arrow-redo\",\n      \"tags\": [\n        \"arrow\",\n        \"redo\"\n      ]\n    },\n    {\n      \"name\": \"arrow-redo-circle\",\n      \"tags\": [\n        \"arrow\",\n        \"circle\",\n        \"redo\"\n      ]\n    },\n    {\n      \"name\": \"arrow-redo-circle-outline\",\n      \"tags\": [\n        \"arrow\",\n        \"circle\",\n        \"outline\",\n        \"redo\"\n      ]\n    },\n    {\n      \"name\": \"arrow-redo-circle-sharp\",\n      \"tags\": [\n        \"arrow\",\n        \"circle\",\n        \"redo\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"arrow-redo-outline\",\n      \"tags\": [\n        \"arrow\",\n        \"outline\",\n        \"redo\"\n      ]\n    },\n    {\n      \"name\": \"arrow-redo-sharp\",\n      \"tags\": [\n        \"arrow\",\n        \"redo\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"arrow-undo\",\n      \"tags\": [\n        \"arrow\",\n        \"undo\"\n      ]\n    },\n    {\n      \"name\": \"arrow-undo-circle\",\n      \"tags\": [\n        \"arrow\",\n        \"circle\",\n        \"undo\"\n      ]\n    },\n    {\n      \"name\": \"arrow-undo-circle-outline\",\n      \"tags\": [\n        \"arrow\",\n        \"circle\",\n        \"outline\",\n        \"undo\"\n      ]\n    },\n    {\n      \"name\": \"arrow-undo-circle-sharp\",\n      \"tags\": [\n        \"arrow\",\n        \"circle\",\n        \"sharp\",\n        \"undo\"\n      ]\n    },\n    {\n      \"name\": \"arrow-undo-outline\",\n      \"tags\": [\n        \"arrow\",\n        \"outline\",\n        \"undo\"\n      ]\n    },\n    {\n      \"name\": \"arrow-undo-sharp\",\n      \"tags\": [\n        \"arrow\",\n        \"sharp\",\n        \"undo\"\n      ]\n    },\n    {\n      \"name\": \"arrow-up\",\n      \"tags\": [\n        \"arrow\",\n        \"chevron\",\n        \"up\"\n      ]\n    },\n    {\n      \"name\": \"arrow-up-circle\",\n      \"tags\": [\n        \"arrow\",\n        \"chevron\",\n        \"circle\",\n        \"up\"\n      ]\n    },\n    {\n      \"name\": \"arrow-up-circle-outline\",\n      \"tags\": [\n        \"arrow\",\n        \"chevron\",\n        \"circle\",\n        \"outline\",\n        \"up\"\n      ]\n    },\n    {\n      \"name\": \"arrow-up-circle-sharp\",\n      \"tags\": [\n        \"arrow\",\n        \"chevron\",\n        \"circle\",\n        \"sharp\",\n        \"up\"\n      ]\n    },\n    {\n      \"name\": \"arrow-up-left-box\",\n      \"tags\": [\n        \"arrow\",\n        \"box\",\n        \"left\",\n        \"up\"\n      ]\n    },\n    {\n      \"name\": \"arrow-up-left-box-outline\",\n      \"tags\": [\n        \"arrow\",\n        \"box\",\n        \"left\",\n        \"outline\",\n        \"up\"\n      ]\n    },\n    {\n      \"name\": \"arrow-up-left-box-sharp\",\n      \"tags\": [\n        \"arrow\",\n        \"box\",\n        \"left\",\n        \"sharp\",\n        \"up\"\n      ]\n    },\n    {\n      \"name\": \"arrow-up-outline\",\n      \"tags\": [\n        \"arrow\",\n        \"outline\",\n        \"up\"\n      ]\n    },\n    {\n      \"name\": \"arrow-up-right-box\",\n      \"tags\": [\n        \"arrow\",\n        \"box\",\n        \"right\",\n        \"up\"\n      ]\n    },\n    {\n      \"name\": \"arrow-up-right-box-outline\",\n      \"tags\": [\n        \"arrow\",\n        \"box\",\n        \"outline\",\n        \"right\",\n        \"up\"\n      ]\n    },\n    {\n      \"name\": \"arrow-up-right-box-sharp\",\n      \"tags\": [\n        \"arrow\",\n        \"box\",\n        \"right\",\n        \"sharp\",\n        \"up\"\n      ]\n    },\n    {\n      \"name\": \"arrow-up-sharp\",\n      \"tags\": [\n        \"arrow\",\n        \"chevron\",\n        \"sharp\",\n        \"up\"\n      ]\n    },\n    {\n      \"name\": \"at\",\n      \"tags\": [\n        \"@\",\n        \"at\"\n      ]\n    },\n    {\n      \"name\": \"at-circle\",\n      \"tags\": [\n        \"@\",\n        \"at\",\n        \"circle\"\n      ]\n    },\n    {\n      \"name\": \"at-circle-outline\",\n      \"tags\": [\n        \"@\",\n        \"at\",\n        \"circle\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"at-circle-sharp\",\n      \"tags\": [\n        \"@\",\n        \"at\",\n        \"circle\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"at-outline\",\n      \"tags\": [\n        \"at\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"at-sharp\",\n      \"tags\": [\n        \"@\",\n        \"at\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"attach\",\n      \"tags\": [\n        \"attach\"\n      ]\n    },\n    {\n      \"name\": \"attach-outline\",\n      \"tags\": [\n        \"attach\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"attach-sharp\",\n      \"tags\": [\n        \"attach\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"backspace\",\n      \"tags\": [\n        \"backspace\"\n      ]\n    },\n    {\n      \"name\": \"backspace-outline\",\n      \"tags\": [\n        \"backspace\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"backspace-sharp\",\n      \"tags\": [\n        \"backspace\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"bag\",\n      \"tags\": [\n        \"bag\"\n      ]\n    },\n    {\n      \"name\": \"bag-add\",\n      \"tags\": [\n        \"add\",\n        \"bag\"\n      ]\n    },\n    {\n      \"name\": \"bag-add-outline\",\n      \"tags\": [\n        \"add\",\n        \"bag\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"bag-add-sharp\",\n      \"tags\": [\n        \"add\",\n        \"bag\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"bag-check\",\n      \"tags\": [\n        \"bag\",\n        \"check\"\n      ]\n    },\n    {\n      \"name\": \"bag-check-outline\",\n      \"tags\": [\n        \"bag\",\n        \"check\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"bag-check-sharp\",\n      \"tags\": [\n        \"bag\",\n        \"check\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"bag-handle\",\n      \"tags\": [\n        \"bag\",\n        \"handle\"\n      ]\n    },\n    {\n      \"name\": \"bag-handle-outline\",\n      \"tags\": [\n        \"bag\",\n        \"handle\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"bag-handle-sharp\",\n      \"tags\": [\n        \"bag\",\n        \"handle\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"bag-outline\",\n      \"tags\": [\n        \"bag\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"bag-remove\",\n      \"tags\": [\n        \"bag\",\n        \"remove\"\n      ]\n    },\n    {\n      \"name\": \"bag-remove-outline\",\n      \"tags\": [\n        \"bag\",\n        \"outline\",\n        \"remove\"\n      ]\n    },\n    {\n      \"name\": \"bag-remove-sharp\",\n      \"tags\": [\n        \"bag\",\n        \"remove\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"bag-sharp\",\n      \"tags\": [\n        \"bag\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"balloon\",\n      \"tags\": [\n        \"balloon\"\n      ]\n    },\n    {\n      \"name\": \"balloon-outline\",\n      \"tags\": [\n        \"balloon\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"balloon-sharp\",\n      \"tags\": [\n        \"balloon\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"ban\",\n      \"tags\": [\n        \"ban\"\n      ]\n    },\n    {\n      \"name\": \"ban-outline\",\n      \"tags\": [\n        \"ban\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"ban-sharp\",\n      \"tags\": [\n        \"ban\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"bandage\",\n      \"tags\": [\n        \"bandage\"\n      ]\n    },\n    {\n      \"name\": \"bandage-outline\",\n      \"tags\": [\n        \"bandage\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"bandage-sharp\",\n      \"tags\": [\n        \"bandage\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"bar-chart\",\n      \"tags\": [\n        \"bar\",\n        \"chart\"\n      ]\n    },\n    {\n      \"name\": \"bar-chart-outline\",\n      \"tags\": [\n        \"bar\",\n        \"chart\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"bar-chart-sharp\",\n      \"tags\": [\n        \"bar\",\n        \"chart\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"barbell\",\n      \"tags\": [\n        \"barbell\",\n        \"exercise\",\n        \"lifting\",\n        \"weight\"\n      ]\n    },\n    {\n      \"name\": \"barbell-outline\",\n      \"tags\": [\n        \"barbell\",\n        \"exercise\",\n        \"lifting\",\n        \"outline\",\n        \"weight\"\n      ]\n    },\n    {\n      \"name\": \"barbell-sharp\",\n      \"tags\": [\n        \"barbell\",\n        \"exercise\",\n        \"lifting\",\n        \"sharp\",\n        \"weight\"\n      ]\n    },\n    {\n      \"name\": \"barcode\",\n      \"tags\": [\n        \"barcode\",\n        \"camera\",\n        \"reader\"\n      ]\n    },\n    {\n      \"name\": \"barcode-outline\",\n      \"tags\": [\n        \"barcode\",\n        \"camera\",\n        \"outline\",\n        \"reader\"\n      ]\n    },\n    {\n      \"name\": \"barcode-sharp\",\n      \"tags\": [\n        \"barcode\",\n        \"camera\",\n        \"reader\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"baseball\",\n      \"tags\": [\n        \"baseball\"\n      ]\n    },\n    {\n      \"name\": \"baseball-outline\",\n      \"tags\": [\n        \"baseball\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"baseball-sharp\",\n      \"tags\": [\n        \"baseball\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"basket\",\n      \"tags\": [\n        \"basket\"\n      ]\n    },\n    {\n      \"name\": \"basket-outline\",\n      \"tags\": [\n        \"basket\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"basket-sharp\",\n      \"tags\": [\n        \"basket\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"basketball\",\n      \"tags\": [\n        \"basketball\"\n      ]\n    },\n    {\n      \"name\": \"basketball-outline\",\n      \"tags\": [\n        \"basketball\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"basketball-sharp\",\n      \"tags\": [\n        \"basketball\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"battery-charging\",\n      \"tags\": [\n        \"battery\",\n        \"charging\"\n      ]\n    },\n    {\n      \"name\": \"battery-charging-outline\",\n      \"tags\": [\n        \"battery\",\n        \"charging\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"battery-charging-sharp\",\n      \"tags\": [\n        \"battery\",\n        \"charging\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"battery-dead\",\n      \"tags\": [\n        \"battery\",\n        \"dead\"\n      ]\n    },\n    {\n      \"name\": \"battery-dead-outline\",\n      \"tags\": [\n        \"battery\",\n        \"dead\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"battery-dead-sharp\",\n      \"tags\": [\n        \"battery\",\n        \"dead\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"battery-full\",\n      \"tags\": [\n        \"battery\",\n        \"full\"\n      ]\n    },\n    {\n      \"name\": \"battery-full-outline\",\n      \"tags\": [\n        \"battery\",\n        \"full\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"battery-full-sharp\",\n      \"tags\": [\n        \"battery\",\n        \"full\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"battery-half\",\n      \"tags\": [\n        \"battery\",\n        \"half\"\n      ]\n    },\n    {\n      \"name\": \"battery-half-outline\",\n      \"tags\": [\n        \"battery\",\n        \"half\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"battery-half-sharp\",\n      \"tags\": [\n        \"battery\",\n        \"half\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"beaker\",\n      \"tags\": [\n        \"beaker\",\n        \"flask\",\n        \"mixture\",\n        \"potion\"\n      ]\n    },\n    {\n      \"name\": \"beaker-outline\",\n      \"tags\": [\n        \"beaker\",\n        \"flask\",\n        \"mixture\",\n        \"outline\",\n        \"potion\"\n      ]\n    },\n    {\n      \"name\": \"beaker-sharp\",\n      \"tags\": [\n        \"beaker\",\n        \"flask\",\n        \"mixture\",\n        \"potion\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"bed\",\n      \"tags\": [\n        \"bed\",\n        \"hotel\",\n        \"loveseat\",\n        \"sleep\"\n      ]\n    },\n    {\n      \"name\": \"bed-outline\",\n      \"tags\": [\n        \"bed\",\n        \"hotel\",\n        \"loveseat\",\n        \"outline\",\n        \"sleep\"\n      ]\n    },\n    {\n      \"name\": \"bed-sharp\",\n      \"tags\": [\n        \"bed\",\n        \"hotel\",\n        \"loveseat\",\n        \"sharp\",\n        \"sleep\"\n      ]\n    },\n    {\n      \"name\": \"beer\",\n      \"tags\": [\n        \"beer\",\n        \"drink\",\n        \"eat\",\n        \"food\"\n      ]\n    },\n    {\n      \"name\": \"beer-outline\",\n      \"tags\": [\n        \"beer\",\n        \"drink\",\n        \"eat\",\n        \"food\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"beer-sharp\",\n      \"tags\": [\n        \"beer\",\n        \"drink\",\n        \"eat\",\n        \"food\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"bicycle\",\n      \"tags\": [\n        \"bicycle\",\n        \"bike\",\n        \"exercise\"\n      ]\n    },\n    {\n      \"name\": \"bicycle-outline\",\n      \"tags\": [\n        \"bicycle\",\n        \"bike\",\n        \"exercise\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"bicycle-sharp\",\n      \"tags\": [\n        \"bicycle\",\n        \"bike\",\n        \"exercise\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"binoculars\",\n      \"tags\": [\n        \"binoculars\"\n      ]\n    },\n    {\n      \"name\": \"binoculars-outline\",\n      \"tags\": [\n        \"binoculars\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"binoculars-sharp\",\n      \"tags\": [\n        \"binoculars\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"bluetooth\",\n      \"tags\": [\n        \"bluetooth\",\n        \"cloud\",\n        \"connection\"\n      ]\n    },\n    {\n      \"name\": \"bluetooth-outline\",\n      \"tags\": [\n        \"bluetooth\",\n        \"cloud\",\n        \"connection\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"bluetooth-sharp\",\n      \"tags\": [\n        \"bluetooth\",\n        \"cloud\",\n        \"connection\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"boat\",\n      \"tags\": [\n        \"boat\"\n      ]\n    },\n    {\n      \"name\": \"boat-outline\",\n      \"tags\": [\n        \"boat\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"boat-sharp\",\n      \"tags\": [\n        \"boat\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"body\",\n      \"tags\": [\n        \"body\"\n      ]\n    },\n    {\n      \"name\": \"body-outline\",\n      \"tags\": [\n        \"body\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"body-sharp\",\n      \"tags\": [\n        \"body\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"bonfire\",\n      \"tags\": [\n        \"bonfire\",\n        \"heat\",\n        \"hot\"\n      ]\n    },\n    {\n      \"name\": \"bonfire-outline\",\n      \"tags\": [\n        \"bonfire\",\n        \"heat\",\n        \"hot\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"bonfire-sharp\",\n      \"tags\": [\n        \"bonfire\",\n        \"heat\",\n        \"hot\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"book\",\n      \"tags\": [\n        \"book\",\n        \"read\"\n      ]\n    },\n    {\n      \"name\": \"book-outline\",\n      \"tags\": [\n        \"book\",\n        \"outline\",\n        \"read\"\n      ]\n    },\n    {\n      \"name\": \"book-sharp\",\n      \"tags\": [\n        \"book\",\n        \"read\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"bookmark\",\n      \"tags\": [\n        \"bookmark\",\n        \"favorite\",\n        \"save\",\n        \"tag\"\n      ]\n    },\n    {\n      \"name\": \"bookmark-outline\",\n      \"tags\": [\n        \"bookmark\",\n        \"favorite\",\n        \"outline\",\n        \"save\",\n        \"tag\"\n      ]\n    },\n    {\n      \"name\": \"bookmark-sharp\",\n      \"tags\": [\n        \"bookmark\",\n        \"favorite\",\n        \"save\",\n        \"sharp\",\n        \"tag\"\n      ]\n    },\n    {\n      \"name\": \"bookmarks\",\n      \"tags\": [\n        \"bookmarks\",\n        \"favorite\"\n      ]\n    },\n    {\n      \"name\": \"bookmarks-outline\",\n      \"tags\": [\n        \"bookmarks\",\n        \"favorite\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"bookmarks-sharp\",\n      \"tags\": [\n        \"bookmarks\",\n        \"favorite\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"bowling-ball\",\n      \"tags\": [\n        \"ball\",\n        \"bowling\"\n      ]\n    },\n    {\n      \"name\": \"bowling-ball-outline\",\n      \"tags\": [\n        \"ball\",\n        \"bowling\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"bowling-ball-sharp\",\n      \"tags\": [\n        \"ball\",\n        \"bowling\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"briefcase\",\n      \"tags\": [\n        \"briefcase\",\n        \"folder\",\n        \"organize\"\n      ]\n    },\n    {\n      \"name\": \"briefcase-outline\",\n      \"tags\": [\n        \"briefcase\",\n        \"folder\",\n        \"organize\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"briefcase-sharp\",\n      \"tags\": [\n        \"briefcase\",\n        \"folder\",\n        \"organize\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"browsers\",\n      \"tags\": [\n        \"browsers\",\n        \"square\"\n      ]\n    },\n    {\n      \"name\": \"browsers-outline\",\n      \"tags\": [\n        \"browsers\",\n        \"outline\",\n        \"square\"\n      ]\n    },\n    {\n      \"name\": \"browsers-sharp\",\n      \"tags\": [\n        \"browsers\",\n        \"sharp\",\n        \"square\"\n      ]\n    },\n    {\n      \"name\": \"brush\",\n      \"tags\": [\n        \"brush\"\n      ]\n    },\n    {\n      \"name\": \"brush-outline\",\n      \"tags\": [\n        \"brush\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"brush-sharp\",\n      \"tags\": [\n        \"brush\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"bug\",\n      \"tags\": [\n        \"bug\",\n        \"develop\",\n        \"error\",\n        \"hacker\",\n        \"program\"\n      ]\n    },\n    {\n      \"name\": \"bug-outline\",\n      \"tags\": [\n        \"bug\",\n        \"develop\",\n        \"error\",\n        \"hacker\",\n        \"outline\",\n        \"program\"\n      ]\n    },\n    {\n      \"name\": \"bug-sharp\",\n      \"tags\": [\n        \"bug\",\n        \"develop\",\n        \"error\",\n        \"hacker\",\n        \"program\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"build\",\n      \"tags\": [\n        \"build\"\n      ]\n    },\n    {\n      \"name\": \"build-outline\",\n      \"tags\": [\n        \"build\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"build-sharp\",\n      \"tags\": [\n        \"build\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"bulb\",\n      \"tags\": [\n        \"bulb\"\n      ]\n    },\n    {\n      \"name\": \"bulb-outline\",\n      \"tags\": [\n        \"bulb\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"bulb-sharp\",\n      \"tags\": [\n        \"bulb\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"bus\",\n      \"tags\": [\n        \"bus\"\n      ]\n    },\n    {\n      \"name\": \"bus-outline\",\n      \"tags\": [\n        \"bus\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"bus-sharp\",\n      \"tags\": [\n        \"bus\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"business\",\n      \"tags\": [\n        \"business\"\n      ]\n    },\n    {\n      \"name\": \"business-outline\",\n      \"tags\": [\n        \"business\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"business-sharp\",\n      \"tags\": [\n        \"business\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"cafe\",\n      \"tags\": [\n        \"cafe\",\n        \"coffee\",\n        \"cup\"\n      ]\n    },\n    {\n      \"name\": \"cafe-outline\",\n      \"tags\": [\n        \"cafe\",\n        \"coffee\",\n        \"cup\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"cafe-sharp\",\n      \"tags\": [\n        \"cafe\",\n        \"coffee\",\n        \"cup\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"calculator\",\n      \"tags\": [\n        \"arithmetic\",\n        \"calculator\",\n        \"math\"\n      ]\n    },\n    {\n      \"name\": \"calculator-outline\",\n      \"tags\": [\n        \"arithmetic\",\n        \"calculator\",\n        \"math\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"calculator-sharp\",\n      \"tags\": [\n        \"arithmetic\",\n        \"calculator\",\n        \"math\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"calendar\",\n      \"tags\": [\n        \"calendar\",\n        \"date\",\n        \"month\",\n        \"week\"\n      ]\n    },\n    {\n      \"name\": \"calendar-clear\",\n      \"tags\": [\n        \"calendar\",\n        \"clear\"\n      ]\n    },\n    {\n      \"name\": \"calendar-clear-outline\",\n      \"tags\": [\n        \"calendar\",\n        \"clear\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"calendar-clear-sharp\",\n      \"tags\": [\n        \"calendar\",\n        \"clear\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"calendar-number\",\n      \"tags\": [\n        \"calendar\",\n        \"number\"\n      ]\n    },\n    {\n      \"name\": \"calendar-number-outline\",\n      \"tags\": [\n        \"calendar\",\n        \"number\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"calendar-number-sharp\",\n      \"tags\": [\n        \"calendar\",\n        \"number\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"calendar-outline\",\n      \"tags\": [\n        \"calendar\",\n        \"date\",\n        \"month\",\n        \"outline\",\n        \"week\"\n      ]\n    },\n    {\n      \"name\": \"calendar-sharp\",\n      \"tags\": [\n        \"calendar\",\n        \"date\",\n        \"month\",\n        \"sharp\",\n        \"week\"\n      ]\n    },\n    {\n      \"name\": \"call\",\n      \"tags\": [\n        \"call\",\n        \"telephone\"\n      ]\n    },\n    {\n      \"name\": \"call-outline\",\n      \"tags\": [\n        \"call\",\n        \"outline\",\n        \"telephone\"\n      ]\n    },\n    {\n      \"name\": \"call-sharp\",\n      \"tags\": [\n        \"call\",\n        \"sharp\",\n        \"telephone\"\n      ]\n    },\n    {\n      \"name\": \"camera\",\n      \"tags\": [\n        \"camera\",\n        \"image\",\n        \"photo\"\n      ]\n    },\n    {\n      \"name\": \"camera-outline\",\n      \"tags\": [\n        \"camera\",\n        \"image\",\n        \"outline\",\n        \"photo\"\n      ]\n    },\n    {\n      \"name\": \"camera-reverse\",\n      \"tags\": [\n        \"camera\",\n        \"reverse\"\n      ]\n    },\n    {\n      \"name\": \"camera-reverse-outline\",\n      \"tags\": [\n        \"camera\",\n        \"outline\",\n        \"reverse\"\n      ]\n    },\n    {\n      \"name\": \"camera-reverse-sharp\",\n      \"tags\": [\n        \"camera\",\n        \"reverse\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"camera-sharp\",\n      \"tags\": [\n        \"camera\",\n        \"image\",\n        \"photo\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"car\",\n      \"tags\": [\n        \"car\"\n      ]\n    },\n    {\n      \"name\": \"car-outline\",\n      \"tags\": [\n        \"car\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"car-sharp\",\n      \"tags\": [\n        \"car\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"car-sport\",\n      \"tags\": [\n        \"car\",\n        \"sport\"\n      ]\n    },\n    {\n      \"name\": \"car-sport-outline\",\n      \"tags\": [\n        \"car\",\n        \"outline\",\n        \"sport\"\n      ]\n    },\n    {\n      \"name\": \"car-sport-sharp\",\n      \"tags\": [\n        \"car\",\n        \"sharp\",\n        \"sport\"\n      ]\n    },\n    {\n      \"name\": \"card\",\n      \"tags\": [\n        \"$\",\n        \"card\",\n        \"cash\",\n        \"credit\",\n        \"debit\",\n        \"dollars\",\n        \"money\",\n        \"price\",\n        \"shopping\"\n      ]\n    },\n    {\n      \"name\": \"card-outline\",\n      \"tags\": [\n        \"$\",\n        \"card\",\n        \"cash\",\n        \"credit\",\n        \"debit\",\n        \"dollars\",\n        \"money\",\n        \"outline\",\n        \"price\",\n        \"shopping\"\n      ]\n    },\n    {\n      \"name\": \"card-sharp\",\n      \"tags\": [\n        \"$\",\n        \"card\",\n        \"cash\",\n        \"credit\",\n        \"debit\",\n        \"dollars\",\n        \"money\",\n        \"price\",\n        \"sharp\",\n        \"shopping\"\n      ]\n    },\n    {\n      \"name\": \"caret-back\",\n      \"tags\": [\n        \"arrow\",\n        \"back\",\n        \"caret\"\n      ]\n    },\n    {\n      \"name\": \"caret-back-circle\",\n      \"tags\": [\n        \"arrow\",\n        \"back\",\n        \"caret\",\n        \"circle\"\n      ]\n    },\n    {\n      \"name\": \"caret-back-circle-outline\",\n      \"tags\": [\n        \"arrow\",\n        \"back\",\n        \"caret\",\n        \"circle\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"caret-back-circle-sharp\",\n      \"tags\": [\n        \"arrow\",\n        \"back\",\n        \"caret\",\n        \"circle\",\n        \"left\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"caret-back-outline\",\n      \"tags\": [\n        \"arrow\",\n        \"back\",\n        \"caret\",\n        \"left\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"caret-back-sharp\",\n      \"tags\": [\n        \"arrow\",\n        \"back\",\n        \"caret\",\n        \"left\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"caret-down\",\n      \"tags\": [\n        \"arrow\",\n        \"caret\",\n        \"down\"\n      ]\n    },\n    {\n      \"name\": \"caret-down-circle\",\n      \"tags\": [\n        \"arrow\",\n        \"caret\",\n        \"circle\",\n        \"down\"\n      ]\n    },\n    {\n      \"name\": \"caret-down-circle-outline\",\n      \"tags\": [\n        \"arrow\",\n        \"caret\",\n        \"circle\",\n        \"down\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"caret-down-circle-sharp\",\n      \"tags\": [\n        \"arrow\",\n        \"caret\",\n        \"circle\",\n        \"down\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"caret-down-outline\",\n      \"tags\": [\n        \"arrow\",\n        \"caret\",\n        \"down\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"caret-down-sharp\",\n      \"tags\": [\n        \"arrow\",\n        \"caret\",\n        \"down\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"caret-forward\",\n      \"tags\": [\n        \"arrow\",\n        \"caret\",\n        \"forward\",\n        \"right\"\n      ]\n    },\n    {\n      \"name\": \"caret-forward-circle\",\n      \"tags\": [\n        \"arrow\",\n        \"caret\",\n        \"circle\",\n        \"forward\",\n        \"right\"\n      ]\n    },\n    {\n      \"name\": \"caret-forward-circle-outline\",\n      \"tags\": [\n        \"arrow\",\n        \"caret\",\n        \"circle\",\n        \"forward\",\n        \"outline\",\n        \"right\"\n      ]\n    },\n    {\n      \"name\": \"caret-forward-circle-sharp\",\n      \"tags\": [\n        \"arrow\",\n        \"caret\",\n        \"circle\",\n        \"forward\",\n        \"right\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"caret-forward-outline\",\n      \"tags\": [\n        \"arrow\",\n        \"caret\",\n        \"forward\",\n        \"outline\",\n        \"right\"\n      ]\n    },\n    {\n      \"name\": \"caret-forward-sharp\",\n      \"tags\": [\n        \"arrow\",\n        \"caret\",\n        \"forward\",\n        \"right\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"caret-up\",\n      \"tags\": [\n        \"arrow\",\n        \"caret\",\n        \"up\"\n      ]\n    },\n    {\n      \"name\": \"caret-up-circle\",\n      \"tags\": [\n        \"arrow\",\n        \"caret\",\n        \"circle\",\n        \"up\"\n      ]\n    },\n    {\n      \"name\": \"caret-up-circle-outline\",\n      \"tags\": [\n        \"arrow\",\n        \"caret\",\n        \"circle\",\n        \"outline\",\n        \"up\"\n      ]\n    },\n    {\n      \"name\": \"caret-up-circle-sharp\",\n      \"tags\": [\n        \"arrow\",\n        \"caret\",\n        \"circle\",\n        \"sharp\",\n        \"up\"\n      ]\n    },\n    {\n      \"name\": \"caret-up-outline\",\n      \"tags\": [\n        \"arrow\",\n        \"caret\",\n        \"outline\",\n        \"up\"\n      ]\n    },\n    {\n      \"name\": \"caret-up-sharp\",\n      \"tags\": [\n        \"arrow\",\n        \"caret\",\n        \"sharp\",\n        \"up\"\n      ]\n    },\n    {\n      \"name\": \"cart\",\n      \"tags\": [\n        \"cart\"\n      ]\n    },\n    {\n      \"name\": \"cart-outline\",\n      \"tags\": [\n        \"cart\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"cart-sharp\",\n      \"tags\": [\n        \"cart\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"cash\",\n      \"tags\": [\n        \"$\",\n        \"cash\",\n        \"credit\",\n        \"debit\",\n        \"dollars\",\n        \"money\",\n        \"price\",\n        \"shopping\"\n      ]\n    },\n    {\n      \"name\": \"cash-outline\",\n      \"tags\": [\n        \"$\",\n        \"cash\",\n        \"credit\",\n        \"debit\",\n        \"dollars\",\n        \"money\",\n        \"outline\",\n        \"price\",\n        \"shopping\"\n      ]\n    },\n    {\n      \"name\": \"cash-sharp\",\n      \"tags\": [\n        \"$\",\n        \"cash\",\n        \"credit\",\n        \"debit\",\n        \"dollars\",\n        \"money\",\n        \"price\",\n        \"sharp\",\n        \"shopping\"\n      ]\n    },\n    {\n      \"name\": \"cellular\",\n      \"tags\": [\n        \"cellular\"\n      ]\n    },\n    {\n      \"name\": \"cellular-outline\",\n      \"tags\": [\n        \"cellular\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"cellular-sharp\",\n      \"tags\": [\n        \"cellular\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"chatbox\",\n      \"tags\": [\n        \"chatbox\"\n      ]\n    },\n    {\n      \"name\": \"chatbox-ellipses\",\n      \"tags\": [\n        \"chatbox\",\n        \"ellipses\"\n      ]\n    },\n    {\n      \"name\": \"chatbox-ellipses-outline\",\n      \"tags\": [\n        \"chatbox\",\n        \"ellipses\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"chatbox-ellipses-sharp\",\n      \"tags\": [\n        \"chatbox\",\n        \"ellipses\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"chatbox-outline\",\n      \"tags\": [\n        \"chatbox\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"chatbox-sharp\",\n      \"tags\": [\n        \"chatbox\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"chatbubble\",\n      \"tags\": [\n        \"chatbubble\"\n      ]\n    },\n    {\n      \"name\": \"chatbubble-ellipses\",\n      \"tags\": [\n        \"chatbubble\",\n        \"ellipses\"\n      ]\n    },\n    {\n      \"name\": \"chatbubble-ellipses-outline\",\n      \"tags\": [\n        \"chatbubble\",\n        \"ellipses\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"chatbubble-ellipses-sharp\",\n      \"tags\": [\n        \"chatbubble\",\n        \"ellipses\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"chatbubble-outline\",\n      \"tags\": [\n        \"chatbubble\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"chatbubble-sharp\",\n      \"tags\": [\n        \"chatbubble\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"chatbubbles\",\n      \"tags\": [\n        \"chatbubbles\",\n        \"talk\"\n      ]\n    },\n    {\n      \"name\": \"chatbubbles-outline\",\n      \"tags\": [\n        \"chatbubbles\",\n        \"outline\",\n        \"talk\"\n      ]\n    },\n    {\n      \"name\": \"chatbubbles-sharp\",\n      \"tags\": [\n        \"chatbubbles\",\n        \"sharp\",\n        \"talk\"\n      ]\n    },\n    {\n      \"name\": \"checkbox\",\n      \"tags\": [\n        \"checkbox\"\n      ]\n    },\n    {\n      \"name\": \"checkbox-outline\",\n      \"tags\": [\n        \"checkbox\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"checkbox-sharp\",\n      \"tags\": [\n        \"checkbox\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"checkmark\",\n      \"tags\": [\n        \"checkmark\",\n        \"circle\"\n      ]\n    },\n    {\n      \"name\": \"checkmark-circle\",\n      \"tags\": [\n        \"checkmark\",\n        \"circle\"\n      ]\n    },\n    {\n      \"name\": \"checkmark-circle-outline\",\n      \"tags\": [\n        \"checkmark\",\n        \"circle\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"checkmark-circle-sharp\",\n      \"tags\": [\n        \"checkmark\",\n        \"circle\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"checkmark-done\",\n      \"tags\": [\n        \"checkmark\",\n        \"done\"\n      ]\n    },\n    {\n      \"name\": \"checkmark-done-circle\",\n      \"tags\": [\n        \"checkmark\",\n        \"circle\",\n        \"done\"\n      ]\n    },\n    {\n      \"name\": \"checkmark-done-circle-outline\",\n      \"tags\": [\n        \"checkmark\",\n        \"circle\",\n        \"done\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"checkmark-done-circle-sharp\",\n      \"tags\": [\n        \"checkmark\",\n        \"circle\",\n        \"done\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"checkmark-done-outline\",\n      \"tags\": [\n        \"checkmark\",\n        \"done\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"checkmark-done-sharp\",\n      \"tags\": [\n        \"checkmark\",\n        \"done\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"checkmark-outline\",\n      \"tags\": [\n        \"checkmark\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"checkmark-sharp\",\n      \"tags\": [\n        \"checkmark\",\n        \"circle\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"chevron-back\",\n      \"tags\": [\n        \"arrow\",\n        \"back\",\n        \"chevron\",\n        \"left\"\n      ]\n    },\n    {\n      \"name\": \"chevron-back-circle\",\n      \"tags\": [\n        \"arrow\",\n        \"back\",\n        \"chevron\",\n        \"circle\",\n        \"left\"\n      ]\n    },\n    {\n      \"name\": \"chevron-back-circle-outline\",\n      \"tags\": [\n        \"arrow\",\n        \"back\",\n        \"chevron\",\n        \"circle\",\n        \"left\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"chevron-back-circle-sharp\",\n      \"tags\": [\n        \"arrow\",\n        \"back\",\n        \"chevron\",\n        \"circle\",\n        \"left\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"chevron-back-outline\",\n      \"tags\": [\n        \"arrow\",\n        \"back\",\n        \"chevron\",\n        \"left\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"chevron-back-sharp\",\n      \"tags\": [\n        \"arrow\",\n        \"back\",\n        \"chevron\",\n        \"left\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"chevron-collapse\",\n      \"tags\": [\n        \"chevron\",\n        \"collapse\"\n      ]\n    },\n    {\n      \"name\": \"chevron-collapse-outline\",\n      \"tags\": [\n        \"chevron\",\n        \"collapse\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"chevron-collapse-sharp\",\n      \"tags\": [\n        \"chevron\",\n        \"collapse\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"chevron-down\",\n      \"tags\": [\n        \"arrow\",\n        \"chevron\",\n        \"down\"\n      ]\n    },\n    {\n      \"name\": \"chevron-down-circle\",\n      \"tags\": [\n        \"arrow\",\n        \"chevron\",\n        \"circle\",\n        \"down\"\n      ]\n    },\n    {\n      \"name\": \"chevron-down-circle-outline\",\n      \"tags\": [\n        \"arrow\",\n        \"chevron\",\n        \"circle\",\n        \"down\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"chevron-down-circle-sharp\",\n      \"tags\": [\n        \"arrow\",\n        \"chevron\",\n        \"circle\",\n        \"down\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"chevron-down-outline\",\n      \"tags\": [\n        \"arrow\",\n        \"chevron\",\n        \"down\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"chevron-down-sharp\",\n      \"tags\": [\n        \"arrow\",\n        \"chevron\",\n        \"down\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"chevron-expand\",\n      \"tags\": [\n        \"chevron\",\n        \"expand\"\n      ]\n    },\n    {\n      \"name\": \"chevron-expand-outline\",\n      \"tags\": [\n        \"chevron\",\n        \"expand\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"chevron-expand-sharp\",\n      \"tags\": [\n        \"chevron\",\n        \"expand\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"chevron-forward\",\n      \"tags\": [\n        \"arrow\",\n        \"chevron\",\n        \"forward\",\n        \"right\"\n      ]\n    },\n    {\n      \"name\": \"chevron-forward-circle\",\n      \"tags\": [\n        \"arrow\",\n        \"chevron\",\n        \"circle\",\n        \"forward\",\n        \"right\"\n      ]\n    },\n    {\n      \"name\": \"chevron-forward-circle-outline\",\n      \"tags\": [\n        \"arrow\",\n        \"chevron\",\n        \"circle\",\n        \"forward\",\n        \"outline\",\n        \"right\"\n      ]\n    },\n    {\n      \"name\": \"chevron-forward-circle-sharp\",\n      \"tags\": [\n        \"arrow\",\n        \"chevron\",\n        \"circle\",\n        \"forward\",\n        \"right\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"chevron-forward-outline\",\n      \"tags\": [\n        \"arrow\",\n        \"chevron\",\n        \"forward\",\n        \"outline\",\n        \"right\"\n      ]\n    },\n    {\n      \"name\": \"chevron-forward-sharp\",\n      \"tags\": [\n        \"arrow\",\n        \"chevron\",\n        \"forward\",\n        \"right\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"chevron-up\",\n      \"tags\": [\n        \"arrow\",\n        \"chevron\",\n        \"up\"\n      ]\n    },\n    {\n      \"name\": \"chevron-up-circle\",\n      \"tags\": [\n        \"arrow\",\n        \"chevron\",\n        \"circle\",\n        \"up\"\n      ]\n    },\n    {\n      \"name\": \"chevron-up-circle-outline\",\n      \"tags\": [\n        \"arrow\",\n        \"chevron\",\n        \"circle\",\n        \"outline\",\n        \"up\"\n      ]\n    },\n    {\n      \"name\": \"chevron-up-circle-sharp\",\n      \"tags\": [\n        \"arrow\",\n        \"chevron\",\n        \"circle\",\n        \"sharp\",\n        \"up\"\n      ]\n    },\n    {\n      \"name\": \"chevron-up-outline\",\n      \"tags\": [\n        \"arrow\",\n        \"chevron\",\n        \"outline\",\n        \"up\"\n      ]\n    },\n    {\n      \"name\": \"chevron-up-sharp\",\n      \"tags\": [\n        \"arrow\",\n        \"chevron\",\n        \"sharp\",\n        \"up\"\n      ]\n    },\n    {\n      \"name\": \"clipboard\",\n      \"tags\": [\n        \"clipboard\",\n        \"copy\",\n        \"paste\",\n        \"write\"\n      ]\n    },\n    {\n      \"name\": \"clipboard-outline\",\n      \"tags\": [\n        \"clipboard\",\n        \"copy\",\n        \"outline\",\n        \"paste\",\n        \"write\"\n      ]\n    },\n    {\n      \"name\": \"clipboard-sharp\",\n      \"tags\": [\n        \"clipboard\",\n        \"copy\",\n        \"paste\",\n        \"sharp\",\n        \"write\"\n      ]\n    },\n    {\n      \"name\": \"close\",\n      \"tags\": [\n        \"circle\",\n        \"close\",\n        \"delete\",\n        \"remove\"\n      ]\n    },\n    {\n      \"name\": \"close-circle\",\n      \"tags\": [\n        \"circle\",\n        \"close\",\n        \"delete\",\n        \"remove\"\n      ]\n    },\n    {\n      \"name\": \"close-circle-outline\",\n      \"tags\": [\n        \"circle\",\n        \"close\",\n        \"delete\",\n        \"outline\",\n        \"remove\"\n      ]\n    },\n    {\n      \"name\": \"close-circle-sharp\",\n      \"tags\": [\n        \"circle\",\n        \"close\",\n        \"delete\",\n        \"remove\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"close-outline\",\n      \"tags\": [\n        \"circle\",\n        \"close\",\n        \"delete\",\n        \"outline\",\n        \"remove\"\n      ]\n    },\n    {\n      \"name\": \"close-sharp\",\n      \"tags\": [\n        \"circle\",\n        \"close\",\n        \"delete\",\n        \"remove\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"cloud\",\n      \"tags\": [\n        \"circle\",\n        \"cloud\",\n        \"storage\",\n        \"weather\",\n        \"whether\"\n      ]\n    },\n    {\n      \"name\": \"cloud-circle\",\n      \"tags\": [\n        \"circle\",\n        \"cloud\",\n        \"storage\",\n        \"weather\",\n        \"whether\"\n      ]\n    },\n    {\n      \"name\": \"cloud-circle-outline\",\n      \"tags\": [\n        \"circle\",\n        \"cloud\",\n        \"outline\",\n        \"storage\",\n        \"weather\",\n        \"whether\"\n      ]\n    },\n    {\n      \"name\": \"cloud-circle-sharp\",\n      \"tags\": [\n        \"circle\",\n        \"cloud\",\n        \"sharp\",\n        \"storage\",\n        \"weather\",\n        \"whether\"\n      ]\n    },\n    {\n      \"name\": \"cloud-done\",\n      \"tags\": [\n        \"cloud\",\n        \"done\"\n      ]\n    },\n    {\n      \"name\": \"cloud-done-outline\",\n      \"tags\": [\n        \"cloud\",\n        \"done\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"cloud-done-sharp\",\n      \"tags\": [\n        \"cloud\",\n        \"done\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"cloud-download\",\n      \"tags\": [\n        \"cloud\",\n        \"download\",\n        \"storage\"\n      ]\n    },\n    {\n      \"name\": \"cloud-download-outline\",\n      \"tags\": [\n        \"cloud\",\n        \"download\",\n        \"outline\",\n        \"storage\"\n      ]\n    },\n    {\n      \"name\": \"cloud-download-sharp\",\n      \"tags\": [\n        \"cloud\",\n        \"download\",\n        \"sharp\",\n        \"storage\"\n      ]\n    },\n    {\n      \"name\": \"cloud-offline\",\n      \"tags\": [\n        \"cloud\",\n        \"offline\"\n      ]\n    },\n    {\n      \"name\": \"cloud-offline-outline\",\n      \"tags\": [\n        \"cloud\",\n        \"offline\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"cloud-offline-sharp\",\n      \"tags\": [\n        \"cloud\",\n        \"offline\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"cloud-outline\",\n      \"tags\": [\n        \"circle\",\n        \"cloud\",\n        \"outline\",\n        \"storage\",\n        \"weather\",\n        \"whether\"\n      ]\n    },\n    {\n      \"name\": \"cloud-sharp\",\n      \"tags\": [\n        \"circle\",\n        \"cloud\",\n        \"sharp\",\n        \"storage\",\n        \"weather\",\n        \"whether\"\n      ]\n    },\n    {\n      \"name\": \"cloud-upload\",\n      \"tags\": [\n        \"cloud\",\n        \"storage\",\n        \"upload\"\n      ]\n    },\n    {\n      \"name\": \"cloud-upload-outline\",\n      \"tags\": [\n        \"cloud\",\n        \"outline\",\n        \"storage\",\n        \"upload\"\n      ]\n    },\n    {\n      \"name\": \"cloud-upload-sharp\",\n      \"tags\": [\n        \"cloud\",\n        \"sharp\",\n        \"storage\",\n        \"upload\"\n      ]\n    },\n    {\n      \"name\": \"cloudy\",\n      \"tags\": [\n        \"cloudy\",\n        \"overcast\",\n        \"weather\",\n        \"whether\"\n      ]\n    },\n    {\n      \"name\": \"cloudy-night\",\n      \"tags\": [\n        \"cloudy\",\n        \"night\",\n        \"overcast\",\n        \"weather\",\n        \"whether\"\n      ]\n    },\n    {\n      \"name\": \"cloudy-night-outline\",\n      \"tags\": [\n        \"cloudy\",\n        \"night\",\n        \"outline\",\n        \"overcast\",\n        \"weather\",\n        \"whether\"\n      ]\n    },\n    {\n      \"name\": \"cloudy-night-sharp\",\n      \"tags\": [\n        \"cloudy\",\n        \"night\",\n        \"overcast\",\n        \"sharp\",\n        \"weather\",\n        \"whether\"\n      ]\n    },\n    {\n      \"name\": \"cloudy-outline\",\n      \"tags\": [\n        \"cloudy\",\n        \"outline\",\n        \"overcast\",\n        \"weather\",\n        \"whether\"\n      ]\n    },\n    {\n      \"name\": \"cloudy-sharp\",\n      \"tags\": [\n        \"cloudy\",\n        \"overcast\",\n        \"sharp\",\n        \"weather\",\n        \"whether\"\n      ]\n    },\n    {\n      \"name\": \"code\",\n      \"tags\": [\n        \"code\",\n        \"develop\",\n        \"hacker\",\n        \"program\"\n      ]\n    },\n    {\n      \"name\": \"code-download\",\n      \"tags\": [\n        \"code\",\n        \"develop\",\n        \"download\",\n        \"hacker\",\n        \"program\"\n      ]\n    },\n    {\n      \"name\": \"code-download-outline\",\n      \"tags\": [\n        \"code\",\n        \"develop\",\n        \"download\",\n        \"hacker\",\n        \"outline\",\n        \"program\"\n      ]\n    },\n    {\n      \"name\": \"code-download-sharp\",\n      \"tags\": [\n        \"code\",\n        \"develop\",\n        \"download\",\n        \"hacker\",\n        \"program\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"code-outline\",\n      \"tags\": [\n        \"code\",\n        \"develop\",\n        \"hacker\",\n        \"outline\",\n        \"program\"\n      ]\n    },\n    {\n      \"name\": \"code-sharp\",\n      \"tags\": [\n        \"code\",\n        \"develop\",\n        \"hacker\",\n        \"program\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"code-slash\",\n      \"tags\": [\n        \"code\",\n        \"slash\"\n      ]\n    },\n    {\n      \"name\": \"code-slash-outline\",\n      \"tags\": [\n        \"code\",\n        \"outline\",\n        \"slash\"\n      ]\n    },\n    {\n      \"name\": \"code-slash-sharp\",\n      \"tags\": [\n        \"code\",\n        \"sharp\",\n        \"slash\"\n      ]\n    },\n    {\n      \"name\": \"code-working\",\n      \"tags\": [\n        \"code\",\n        \"develop\",\n        \"hacker\",\n        \"program\",\n        \"working\"\n      ]\n    },\n    {\n      \"name\": \"code-working-outline\",\n      \"tags\": [\n        \"code\",\n        \"develop\",\n        \"hacker\",\n        \"outline\",\n        \"program\",\n        \"working\"\n      ]\n    },\n    {\n      \"name\": \"code-working-sharp\",\n      \"tags\": [\n        \"code\",\n        \"develop\",\n        \"hacker\",\n        \"program\",\n        \"sharp\",\n        \"working\"\n      ]\n    },\n    {\n      \"name\": \"cog\",\n      \"tags\": [\n        \"cog\",\n        \"gear\",\n        \"options\",\n        \"settings\"\n      ]\n    },\n    {\n      \"name\": \"cog-outline\",\n      \"tags\": [\n        \"cog\",\n        \"gear\",\n        \"options\",\n        \"outline\",\n        \"settings\"\n      ]\n    },\n    {\n      \"name\": \"cog-sharp\",\n      \"tags\": [\n        \"cog\",\n        \"gear\",\n        \"options\",\n        \"settings\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"color-fill\",\n      \"tags\": [\n        \"color\",\n        \"fill\"\n      ]\n    },\n    {\n      \"name\": \"color-fill-outline\",\n      \"tags\": [\n        \"color\",\n        \"fill\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"color-fill-sharp\",\n      \"tags\": [\n        \"color\",\n        \"fill\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"color-filter\",\n      \"tags\": [\n        \"color\",\n        \"filter\"\n      ]\n    },\n    {\n      \"name\": \"color-filter-outline\",\n      \"tags\": [\n        \"color\",\n        \"filter\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"color-filter-sharp\",\n      \"tags\": [\n        \"color\",\n        \"filter\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"color-palette\",\n      \"tags\": [\n        \"color\",\n        \"palette\"\n      ]\n    },\n    {\n      \"name\": \"color-palette-outline\",\n      \"tags\": [\n        \"color\",\n        \"outline\",\n        \"palette\"\n      ]\n    },\n    {\n      \"name\": \"color-palette-sharp\",\n      \"tags\": [\n        \"color\",\n        \"palette\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"color-wand\",\n      \"tags\": [\n        \"color\",\n        \"wand\"\n      ]\n    },\n    {\n      \"name\": \"color-wand-outline\",\n      \"tags\": [\n        \"color\",\n        \"outline\",\n        \"wand\"\n      ]\n    },\n    {\n      \"name\": \"color-wand-sharp\",\n      \"tags\": [\n        \"color\",\n        \"sharp\",\n        \"wand\"\n      ]\n    },\n    {\n      \"name\": \"compass\",\n      \"tags\": [\n        \"compass\",\n        \"directions\",\n        \"location\",\n        \"navigation\"\n      ]\n    },\n    {\n      \"name\": \"compass-outline\",\n      \"tags\": [\n        \"compass\",\n        \"directions\",\n        \"location\",\n        \"navigation\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"compass-sharp\",\n      \"tags\": [\n        \"compass\",\n        \"directions\",\n        \"location\",\n        \"navigation\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"construct\",\n      \"tags\": [\n        \"construct\"\n      ]\n    },\n    {\n      \"name\": \"construct-outline\",\n      \"tags\": [\n        \"construct\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"construct-sharp\",\n      \"tags\": [\n        \"construct\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"contract\",\n      \"tags\": [\n        \"contract\"\n      ]\n    },\n    {\n      \"name\": \"contract-outline\",\n      \"tags\": [\n        \"contract\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"contract-sharp\",\n      \"tags\": [\n        \"contract\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"contrast\",\n      \"tags\": [\n        \"contrast\",\n        \"dark\",\n        \"images\",\n        \"levels\",\n        \"light\",\n        \"settings\"\n      ]\n    },\n    {\n      \"name\": \"contrast-outline\",\n      \"tags\": [\n        \"contrast\",\n        \"dark\",\n        \"images\",\n        \"levels\",\n        \"light\",\n        \"outline\",\n        \"settings\"\n      ]\n    },\n    {\n      \"name\": \"contrast-sharp\",\n      \"tags\": [\n        \"contrast\",\n        \"dark\",\n        \"images\",\n        \"levels\",\n        \"light\",\n        \"settings\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"copy\",\n      \"tags\": [\n        \"copy\",\n        \"duplicate\",\n        \"paper\"\n      ]\n    },\n    {\n      \"name\": \"copy-outline\",\n      \"tags\": [\n        \"copy\",\n        \"duplicate\",\n        \"outline\",\n        \"paper\"\n      ]\n    },\n    {\n      \"name\": \"copy-sharp\",\n      \"tags\": [\n        \"copy\",\n        \"duplicate\",\n        \"paper\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"create\",\n      \"tags\": [\n        \"create\",\n        \"edit\"\n      ]\n    },\n    {\n      \"name\": \"create-outline\",\n      \"tags\": [\n        \"create\",\n        \"edit\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"create-sharp\",\n      \"tags\": [\n        \"create\",\n        \"edit\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"crop\",\n      \"tags\": [\n        \"crop\"\n      ]\n    },\n    {\n      \"name\": \"crop-outline\",\n      \"tags\": [\n        \"crop\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"crop-sharp\",\n      \"tags\": [\n        \"crop\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"cube\",\n      \"tags\": [\n        \"box\",\n        \"container\",\n        \"cube\",\n        \"square\"\n      ]\n    },\n    {\n      \"name\": \"cube-outline\",\n      \"tags\": [\n        \"box\",\n        \"container\",\n        \"cube\",\n        \"outline\",\n        \"square\"\n      ]\n    },\n    {\n      \"name\": \"cube-sharp\",\n      \"tags\": [\n        \"box\",\n        \"container\",\n        \"cube\",\n        \"sharp\",\n        \"square\"\n      ]\n    },\n    {\n      \"name\": \"cut\",\n      \"tags\": [\n        \"cut\"\n      ]\n    },\n    {\n      \"name\": \"cut-outline\",\n      \"tags\": [\n        \"cut\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"cut-sharp\",\n      \"tags\": [\n        \"cut\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"desktop\",\n      \"tags\": [\n        \"desktop\"\n      ]\n    },\n    {\n      \"name\": \"desktop-outline\",\n      \"tags\": [\n        \"desktop\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"desktop-sharp\",\n      \"tags\": [\n        \"desktop\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"diamond\",\n      \"tags\": [\n        \"diamond\"\n      ]\n    },\n    {\n      \"name\": \"diamond-outline\",\n      \"tags\": [\n        \"diamond\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"diamond-sharp\",\n      \"tags\": [\n        \"diamond\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"dice\",\n      \"tags\": [\n        \"dice\"\n      ]\n    },\n    {\n      \"name\": \"dice-outline\",\n      \"tags\": [\n        \"dice\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"dice-sharp\",\n      \"tags\": [\n        \"dice\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"disc\",\n      \"tags\": [\n        \"cd\",\n        \"disc\",\n        \"vinyl\"\n      ]\n    },\n    {\n      \"name\": \"disc-outline\",\n      \"tags\": [\n        \"cd\",\n        \"disc\",\n        \"outline\",\n        \"vinyl\"\n      ]\n    },\n    {\n      \"name\": \"disc-sharp\",\n      \"tags\": [\n        \"cd\",\n        \"disc\",\n        \"sharp\",\n        \"vinyl\"\n      ]\n    },\n    {\n      \"name\": \"document\",\n      \"tags\": [\n        \"document\",\n        \"file\",\n        \"paper\"\n      ]\n    },\n    {\n      \"name\": \"document-attach\",\n      \"tags\": [\n        \"attach\",\n        \"document\"\n      ]\n    },\n    {\n      \"name\": \"document-attach-outline\",\n      \"tags\": [\n        \"attach\",\n        \"document\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"document-attach-sharp\",\n      \"tags\": [\n        \"attach\",\n        \"document\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"document-lock\",\n      \"tags\": [\n        \"document\",\n        \"lock\"\n      ]\n    },\n    {\n      \"name\": \"document-lock-outline\",\n      \"tags\": [\n        \"document\",\n        \"lock\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"document-lock-sharp\",\n      \"tags\": [\n        \"document\",\n        \"lock\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"document-outline\",\n      \"tags\": [\n        \"document\",\n        \"file\",\n        \"outline\",\n        \"paper\"\n      ]\n    },\n    {\n      \"name\": \"document-sharp\",\n      \"tags\": [\n        \"document\",\n        \"file\",\n        \"paper\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"document-text\",\n      \"tags\": [\n        \"document\",\n        \"text\"\n      ]\n    },\n    {\n      \"name\": \"document-text-outline\",\n      \"tags\": [\n        \"document\",\n        \"outline\",\n        \"text\"\n      ]\n    },\n    {\n      \"name\": \"document-text-sharp\",\n      \"tags\": [\n        \"document\",\n        \"sharp\",\n        \"text\"\n      ]\n    },\n    {\n      \"name\": \"documents\",\n      \"tags\": [\n        \"documents\"\n      ]\n    },\n    {\n      \"name\": \"documents-outline\",\n      \"tags\": [\n        \"documents\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"documents-sharp\",\n      \"tags\": [\n        \"documents\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"download\",\n      \"tags\": [\n        \"download\",\n        \"export\"\n      ]\n    },\n    {\n      \"name\": \"download-outline\",\n      \"tags\": [\n        \"download\",\n        \"export\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"download-sharp\",\n      \"tags\": [\n        \"download\",\n        \"export\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"duplicate\",\n      \"tags\": [\n        \"duplicate\"\n      ]\n    },\n    {\n      \"name\": \"duplicate-outline\",\n      \"tags\": [\n        \"duplicate\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"duplicate-sharp\",\n      \"tags\": [\n        \"duplicate\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"ear\",\n      \"tags\": [\n        \"ear\"\n      ]\n    },\n    {\n      \"name\": \"ear-outline\",\n      \"tags\": [\n        \"ear\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"ear-sharp\",\n      \"tags\": [\n        \"ear\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"earth\",\n      \"tags\": [\n        \"earth\",\n        \"globe\"\n      ]\n    },\n    {\n      \"name\": \"earth-outline\",\n      \"tags\": [\n        \"earth\",\n        \"globe\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"earth-sharp\",\n      \"tags\": [\n        \"earth\",\n        \"globe\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"easel\",\n      \"tags\": [\n        \"easel\"\n      ]\n    },\n    {\n      \"name\": \"easel-outline\",\n      \"tags\": [\n        \"easel\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"easel-sharp\",\n      \"tags\": [\n        \"easel\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"egg\",\n      \"tags\": [\n        \"baby\",\n        \"bird\",\n        \"birth\",\n        \"egg\",\n        \"twitter\"\n      ]\n    },\n    {\n      \"name\": \"egg-outline\",\n      \"tags\": [\n        \"baby\",\n        \"bird\",\n        \"birth\",\n        \"egg\",\n        \"outline\",\n        \"twitter\"\n      ]\n    },\n    {\n      \"name\": \"egg-sharp\",\n      \"tags\": [\n        \"baby\",\n        \"bird\",\n        \"birth\",\n        \"egg\",\n        \"sharp\",\n        \"twitter\"\n      ]\n    },\n    {\n      \"name\": \"ellipse\",\n      \"tags\": [\n        \"circle\",\n        \"ellipse\"\n      ]\n    },\n    {\n      \"name\": \"ellipse-outline\",\n      \"tags\": [\n        \"circle\",\n        \"ellipse\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"ellipse-sharp\",\n      \"tags\": [\n        \"circle\",\n        \"ellipse\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"ellipsis-horizontal\",\n      \"tags\": [\n        \"ellipsis\",\n        \"horizontal\"\n      ]\n    },\n    {\n      \"name\": \"ellipsis-horizontal-circle\",\n      \"tags\": [\n        \"circle\",\n        \"ellipsis\",\n        \"horizontal\"\n      ]\n    },\n    {\n      \"name\": \"ellipsis-horizontal-circle-outline\",\n      \"tags\": [\n        \"circle\",\n        \"ellipsis\",\n        \"horizontal\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"ellipsis-horizontal-circle-sharp\",\n      \"tags\": [\n        \"circle\",\n        \"ellipsis\",\n        \"horizontal\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"ellipsis-horizontal-outline\",\n      \"tags\": [\n        \"ellipsis\",\n        \"horizontal\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"ellipsis-horizontal-sharp\",\n      \"tags\": [\n        \"ellipsis\",\n        \"horizontal\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"ellipsis-vertical\",\n      \"tags\": [\n        \"ellipsis\",\n        \"vertical\"\n      ]\n    },\n    {\n      \"name\": \"ellipsis-vertical-circle\",\n      \"tags\": [\n        \"circle\",\n        \"ellipsis\",\n        \"vertical\"\n      ]\n    },\n    {\n      \"name\": \"ellipsis-vertical-circle-outline\",\n      \"tags\": [\n        \"circle\",\n        \"ellipsis\",\n        \"outline\",\n        \"vertical\"\n      ]\n    },\n    {\n      \"name\": \"ellipsis-vertical-circle-sharp\",\n      \"tags\": [\n        \"circle\",\n        \"ellipsis\",\n        \"sharp\",\n        \"vertical\"\n      ]\n    },\n    {\n      \"name\": \"ellipsis-vertical-outline\",\n      \"tags\": [\n        \"ellipsis\",\n        \"outline\",\n        \"vertical\"\n      ]\n    },\n    {\n      \"name\": \"ellipsis-vertical-sharp\",\n      \"tags\": [\n        \"ellipsis\",\n        \"sharp\",\n        \"vertical\"\n      ]\n    },\n    {\n      \"name\": \"enter\",\n      \"tags\": [\n        \"enter\"\n      ]\n    },\n    {\n      \"name\": \"enter-outline\",\n      \"tags\": [\n        \"enter\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"enter-sharp\",\n      \"tags\": [\n        \"enter\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"exit\",\n      \"tags\": [\n        \"exit\"\n      ]\n    },\n    {\n      \"name\": \"exit-outline\",\n      \"tags\": [\n        \"exit\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"exit-sharp\",\n      \"tags\": [\n        \"exit\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"expand\",\n      \"tags\": [\n        \"expand\",\n        \"resize\"\n      ]\n    },\n    {\n      \"name\": \"expand-outline\",\n      \"tags\": [\n        \"expand\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"expand-sharp\",\n      \"tags\": [\n        \"expand\",\n        \"resize\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"extension-puzzle\",\n      \"tags\": [\n        \"extension\",\n        \"puzzle\"\n      ]\n    },\n    {\n      \"name\": \"extension-puzzle-outline\",\n      \"tags\": [\n        \"extension\",\n        \"outline\",\n        \"puzzle\"\n      ]\n    },\n    {\n      \"name\": \"extension-puzzle-sharp\",\n      \"tags\": [\n        \"extension\",\n        \"puzzle\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"eye\",\n      \"tags\": [\n        \"exposed\",\n        \"eye\",\n        \"look\",\n        \"see\",\n        \"view\"\n      ]\n    },\n    {\n      \"name\": \"eye-off\",\n      \"tags\": [\n        \"eye\",\n        \"off\"\n      ]\n    },\n    {\n      \"name\": \"eye-off-outline\",\n      \"tags\": [\n        \"eye\",\n        \"off\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"eye-off-sharp\",\n      \"tags\": [\n        \"eye\",\n        \"off\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"eye-outline\",\n      \"tags\": [\n        \"exposed\",\n        \"eye\",\n        \"look\",\n        \"outline\",\n        \"see\",\n        \"view\"\n      ]\n    },\n    {\n      \"name\": \"eye-sharp\",\n      \"tags\": [\n        \"exposed\",\n        \"eye\",\n        \"look\",\n        \"see\",\n        \"sharp\",\n        \"view\"\n      ]\n    },\n    {\n      \"name\": \"eyedrop\",\n      \"tags\": [\n        \"eyedrop\"\n      ]\n    },\n    {\n      \"name\": \"eyedrop-outline\",\n      \"tags\": [\n        \"eyedrop\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"eyedrop-sharp\",\n      \"tags\": [\n        \"eyedrop\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"fast-food\",\n      \"tags\": [\n        \"fast\",\n        \"food\"\n      ]\n    },\n    {\n      \"name\": \"fast-food-outline\",\n      \"tags\": [\n        \"fast\",\n        \"food\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"fast-food-sharp\",\n      \"tags\": [\n        \"fast\",\n        \"food\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"female\",\n      \"tags\": [\n        \"dudette\",\n        \"female\",\n        \"girl\",\n        \"lady\",\n        \"woman\"\n      ]\n    },\n    {\n      \"name\": \"female-outline\",\n      \"tags\": [\n        \"dudette\",\n        \"female\",\n        \"girl\",\n        \"lady\",\n        \"outline\",\n        \"woman\"\n      ]\n    },\n    {\n      \"name\": \"female-sharp\",\n      \"tags\": [\n        \"dudette\",\n        \"female\",\n        \"girl\",\n        \"lady\",\n        \"sharp\",\n        \"woman\"\n      ]\n    },\n    {\n      \"name\": \"file-tray\",\n      \"tags\": [\n        \"file\",\n        \"tray\"\n      ]\n    },\n    {\n      \"name\": \"file-tray-full\",\n      \"tags\": [\n        \"file\",\n        \"full\",\n        \"tray\"\n      ]\n    },\n    {\n      \"name\": \"file-tray-full-outline\",\n      \"tags\": [\n        \"file\",\n        \"full\",\n        \"outline\",\n        \"tray\"\n      ]\n    },\n    {\n      \"name\": \"file-tray-full-sharp\",\n      \"tags\": [\n        \"file\",\n        \"full\",\n        \"sharp\",\n        \"tray\"\n      ]\n    },\n    {\n      \"name\": \"file-tray-outline\",\n      \"tags\": [\n        \"file\",\n        \"outline\",\n        \"tray\"\n      ]\n    },\n    {\n      \"name\": \"file-tray-sharp\",\n      \"tags\": [\n        \"file\",\n        \"sharp\",\n        \"tray\"\n      ]\n    },\n    {\n      \"name\": \"file-tray-stacked\",\n      \"tags\": [\n        \"file\",\n        \"stacked\",\n        \"tray\"\n      ]\n    },\n    {\n      \"name\": \"file-tray-stacked-outline\",\n      \"tags\": [\n        \"file\",\n        \"outline\",\n        \"stacked\",\n        \"tray\"\n      ]\n    },\n    {\n      \"name\": \"file-tray-stacked-sharp\",\n      \"tags\": [\n        \"file\",\n        \"sharp\",\n        \"stacked\",\n        \"tray\"\n      ]\n    },\n    {\n      \"name\": \"film\",\n      \"tags\": [\n        \"film\"\n      ]\n    },\n    {\n      \"name\": \"film-outline\",\n      \"tags\": [\n        \"film\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"film-sharp\",\n      \"tags\": [\n        \"film\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"filter\",\n      \"tags\": [\n        \"filter\"\n      ]\n    },\n    {\n      \"name\": \"filter-circle\",\n      \"tags\": [\n        \"circle\",\n        \"filter\"\n      ]\n    },\n    {\n      \"name\": \"filter-circle-outline\",\n      \"tags\": [\n        \"circle\",\n        \"filter\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"filter-circle-sharp\",\n      \"tags\": [\n        \"circle\",\n        \"filter\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"filter-outline\",\n      \"tags\": [\n        \"filter\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"filter-sharp\",\n      \"tags\": [\n        \"filter\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"finger-print\",\n      \"tags\": [\n        \"finger\",\n        \"print\"\n      ]\n    },\n    {\n      \"name\": \"finger-print-outline\",\n      \"tags\": [\n        \"finger\",\n        \"outline\",\n        \"print\"\n      ]\n    },\n    {\n      \"name\": \"finger-print-sharp\",\n      \"tags\": [\n        \"finger\",\n        \"print\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"fish\",\n      \"tags\": [\n        \"fish\"\n      ]\n    },\n    {\n      \"name\": \"fish-outline\",\n      \"tags\": [\n        \"fish\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"fish-sharp\",\n      \"tags\": [\n        \"fish\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"fitness\",\n      \"tags\": [\n        \"fitness\"\n      ]\n    },\n    {\n      \"name\": \"fitness-outline\",\n      \"tags\": [\n        \"fitness\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"fitness-sharp\",\n      \"tags\": [\n        \"fitness\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"flag\",\n      \"tags\": [\n        \"favorite\",\n        \"flag\",\n        \"marker\"\n      ]\n    },\n    {\n      \"name\": \"flag-outline\",\n      \"tags\": [\n        \"favorite\",\n        \"flag\",\n        \"marker\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"flag-sharp\",\n      \"tags\": [\n        \"favorite\",\n        \"flag\",\n        \"marker\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"flame\",\n      \"tags\": [\n        \"fire\",\n        \"flame\",\n        \"heat\",\n        \"hot\"\n      ]\n    },\n    {\n      \"name\": \"flame-outline\",\n      \"tags\": [\n        \"fire\",\n        \"flame\",\n        \"heat\",\n        \"hot\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"flame-sharp\",\n      \"tags\": [\n        \"fire\",\n        \"flame\",\n        \"heat\",\n        \"hot\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"flash\",\n      \"tags\": [\n        \"flash\",\n        \"lightning\",\n        \"weather\",\n        \"whether\"\n      ]\n    },\n    {\n      \"name\": \"flash-off\",\n      \"tags\": [\n        \"flash\",\n        \"off\"\n      ]\n    },\n    {\n      \"name\": \"flash-off-outline\",\n      \"tags\": [\n        \"flash\",\n        \"off\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"flash-off-sharp\",\n      \"tags\": [\n        \"flash\",\n        \"off\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"flash-outline\",\n      \"tags\": [\n        \"flash\",\n        \"lightning\",\n        \"outline\",\n        \"weather\",\n        \"whether\"\n      ]\n    },\n    {\n      \"name\": \"flash-sharp\",\n      \"tags\": [\n        \"flash\",\n        \"lightning\",\n        \"sharp\",\n        \"weather\",\n        \"whether\"\n      ]\n    },\n    {\n      \"name\": \"flashlight\",\n      \"tags\": [\n        \"flashlight\"\n      ]\n    },\n    {\n      \"name\": \"flashlight-outline\",\n      \"tags\": [\n        \"flashlight\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"flashlight-sharp\",\n      \"tags\": [\n        \"flashlight\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"flask\",\n      \"tags\": [\n        \"bubbles\",\n        \"flask\",\n        \"mixture\",\n        \"potion\"\n      ]\n    },\n    {\n      \"name\": \"flask-outline\",\n      \"tags\": [\n        \"bubbles\",\n        \"flask\",\n        \"mixture\",\n        \"outline\",\n        \"potion\"\n      ]\n    },\n    {\n      \"name\": \"flask-sharp\",\n      \"tags\": [\n        \"bubbles\",\n        \"flask\",\n        \"mixture\",\n        \"potion\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"flower\",\n      \"tags\": [\n        \"flower\"\n      ]\n    },\n    {\n      \"name\": \"flower-outline\",\n      \"tags\": [\n        \"flower\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"flower-sharp\",\n      \"tags\": [\n        \"flower\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"folder\",\n      \"tags\": [\n        \"file\",\n        \"folder\"\n      ]\n    },\n    {\n      \"name\": \"folder-open\",\n      \"tags\": [\n        \"folder\",\n        \"open\"\n      ]\n    },\n    {\n      \"name\": \"folder-open-outline\",\n      \"tags\": [\n        \"folder\",\n        \"open\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"folder-open-sharp\",\n      \"tags\": [\n        \"folder\",\n        \"open\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"folder-outline\",\n      \"tags\": [\n        \"file\",\n        \"folder\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"folder-sharp\",\n      \"tags\": [\n        \"file\",\n        \"folder\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"football\",\n      \"tags\": [\n        \"football\",\n        \"soccer\"\n      ]\n    },\n    {\n      \"name\": \"football-outline\",\n      \"tags\": [\n        \"football\",\n        \"outline\",\n        \"soccer\"\n      ]\n    },\n    {\n      \"name\": \"football-sharp\",\n      \"tags\": [\n        \"football\",\n        \"sharp\",\n        \"soccer\"\n      ]\n    },\n    {\n      \"name\": \"footsteps\",\n      \"tags\": [\n        \"footsteps\"\n      ]\n    },\n    {\n      \"name\": \"footsteps-outline\",\n      \"tags\": [\n        \"footsteps\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"footsteps-sharp\",\n      \"tags\": [\n        \"footsteps\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"funnel\",\n      \"tags\": [\n        \"funnel\",\n        \"sort\"\n      ]\n    },\n    {\n      \"name\": \"funnel-outline\",\n      \"tags\": [\n        \"funnel\",\n        \"outline\",\n        \"sort\"\n      ]\n    },\n    {\n      \"name\": \"funnel-sharp\",\n      \"tags\": [\n        \"funnel\",\n        \"sharp\",\n        \"sort\"\n      ]\n    },\n    {\n      \"name\": \"game-controller\",\n      \"tags\": [\n        \"controller\",\n        \"game\"\n      ]\n    },\n    {\n      \"name\": \"game-controller-outline\",\n      \"tags\": [\n        \"controller\",\n        \"game\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"game-controller-sharp\",\n      \"tags\": [\n        \"controller\",\n        \"game\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"gift\",\n      \"tags\": [\n        \"gift\"\n      ]\n    },\n    {\n      \"name\": \"gift-outline\",\n      \"tags\": [\n        \"gift\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"gift-sharp\",\n      \"tags\": [\n        \"gift\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"git-branch\",\n      \"tags\": [\n        \"branch\",\n        \"git\"\n      ]\n    },\n    {\n      \"name\": \"git-branch-outline\",\n      \"tags\": [\n        \"branch\",\n        \"git\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"git-branch-sharp\",\n      \"tags\": [\n        \"branch\",\n        \"git\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"git-commit\",\n      \"tags\": [\n        \"commit\",\n        \"git\"\n      ]\n    },\n    {\n      \"name\": \"git-commit-outline\",\n      \"tags\": [\n        \"commit\",\n        \"git\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"git-commit-sharp\",\n      \"tags\": [\n        \"commit\",\n        \"git\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"git-compare\",\n      \"tags\": [\n        \"compare\",\n        \"git\"\n      ]\n    },\n    {\n      \"name\": \"git-compare-outline\",\n      \"tags\": [\n        \"compare\",\n        \"git\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"git-compare-sharp\",\n      \"tags\": [\n        \"compare\",\n        \"git\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"git-merge\",\n      \"tags\": [\n        \"git\",\n        \"merge\"\n      ]\n    },\n    {\n      \"name\": \"git-merge-outline\",\n      \"tags\": [\n        \"git\",\n        \"merge\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"git-merge-sharp\",\n      \"tags\": [\n        \"git\",\n        \"merge\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"git-network\",\n      \"tags\": [\n        \"git\",\n        \"network\"\n      ]\n    },\n    {\n      \"name\": \"git-network-outline\",\n      \"tags\": [\n        \"git\",\n        \"network\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"git-network-sharp\",\n      \"tags\": [\n        \"git\",\n        \"network\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"git-pull-request\",\n      \"tags\": [\n        \"git\",\n        \"pull\",\n        \"request\"\n      ]\n    },\n    {\n      \"name\": \"git-pull-request-outline\",\n      \"tags\": [\n        \"git\",\n        \"outline\",\n        \"pull\",\n        \"request\"\n      ]\n    },\n    {\n      \"name\": \"git-pull-request-sharp\",\n      \"tags\": [\n        \"git\",\n        \"pull\",\n        \"request\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"glasses\",\n      \"tags\": [\n        \"glasses\",\n        \"look\",\n        \"reading\",\n        \"see\",\n        \"steve\"\n      ]\n    },\n    {\n      \"name\": \"glasses-outline\",\n      \"tags\": [\n        \"glasses\",\n        \"look\",\n        \"outline\",\n        \"reading\",\n        \"see\",\n        \"steve\"\n      ]\n    },\n    {\n      \"name\": \"glasses-sharp\",\n      \"tags\": [\n        \"glasses\",\n        \"look\",\n        \"reading\",\n        \"see\",\n        \"sharp\",\n        \"steve\"\n      ]\n    },\n    {\n      \"name\": \"globe\",\n      \"tags\": [\n        \"globe\",\n        \"internet\",\n        \"world\"\n      ]\n    },\n    {\n      \"name\": \"globe-outline\",\n      \"tags\": [\n        \"globe\",\n        \"internet\",\n        \"outline\",\n        \"world\"\n      ]\n    },\n    {\n      \"name\": \"globe-sharp\",\n      \"tags\": [\n        \"globe\",\n        \"internet\",\n        \"sharp\",\n        \"world\"\n      ]\n    },\n    {\n      \"name\": \"golf\",\n      \"tags\": [\n        \"golf\"\n      ]\n    },\n    {\n      \"name\": \"golf-outline\",\n      \"tags\": [\n        \"golf\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"golf-sharp\",\n      \"tags\": [\n        \"golf\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"grid\",\n      \"tags\": [\n        \"grid\",\n        \"menu\"\n      ]\n    },\n    {\n      \"name\": \"grid-outline\",\n      \"tags\": [\n        \"grid\",\n        \"menu\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"grid-sharp\",\n      \"tags\": [\n        \"grid\",\n        \"menu\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"hammer\",\n      \"tags\": [\n        \"hammer\",\n        \"options\",\n        \"settings\",\n        \"tools\"\n      ]\n    },\n    {\n      \"name\": \"hammer-outline\",\n      \"tags\": [\n        \"hammer\",\n        \"options\",\n        \"outline\",\n        \"settings\",\n        \"tools\"\n      ]\n    },\n    {\n      \"name\": \"hammer-sharp\",\n      \"tags\": [\n        \"hammer\",\n        \"options\",\n        \"settings\",\n        \"sharp\",\n        \"tools\"\n      ]\n    },\n    {\n      \"name\": \"hand-left\",\n      \"tags\": [\n        \"hand\",\n        \"left\"\n      ]\n    },\n    {\n      \"name\": \"hand-left-outline\",\n      \"tags\": [\n        \"hand\",\n        \"left\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"hand-left-sharp\",\n      \"tags\": [\n        \"hand\",\n        \"left\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"hand-right\",\n      \"tags\": [\n        \"hand\",\n        \"right\"\n      ]\n    },\n    {\n      \"name\": \"hand-right-outline\",\n      \"tags\": [\n        \"hand\",\n        \"outline\",\n        \"right\"\n      ]\n    },\n    {\n      \"name\": \"hand-right-sharp\",\n      \"tags\": [\n        \"hand\",\n        \"right\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"happy\",\n      \"tags\": [\n        \"fun\",\n        \"good\",\n        \"happy\",\n        \"like\",\n        \"smile\",\n        \"yes\"\n      ]\n    },\n    {\n      \"name\": \"happy-outline\",\n      \"tags\": [\n        \"fun\",\n        \"good\",\n        \"happy\",\n        \"like\",\n        \"outline\",\n        \"smile\",\n        \"yes\"\n      ]\n    },\n    {\n      \"name\": \"happy-sharp\",\n      \"tags\": [\n        \"fun\",\n        \"good\",\n        \"happy\",\n        \"like\",\n        \"sharp\",\n        \"smile\",\n        \"yes\"\n      ]\n    },\n    {\n      \"name\": \"hardware-chip\",\n      \"tags\": [\n        \"chip\",\n        \"hardware\"\n      ]\n    },\n    {\n      \"name\": \"hardware-chip-outline\",\n      \"tags\": [\n        \"chip\",\n        \"hardware\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"hardware-chip-sharp\",\n      \"tags\": [\n        \"chip\",\n        \"hardware\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"headset\",\n      \"tags\": [\n        \"headset\"\n      ]\n    },\n    {\n      \"name\": \"headset-outline\",\n      \"tags\": [\n        \"headset\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"headset-sharp\",\n      \"tags\": [\n        \"headset\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"heart\",\n      \"tags\": [\n        \"heart\",\n        \"love\"\n      ]\n    },\n    {\n      \"name\": \"heart-circle\",\n      \"tags\": [\n        \"circle\",\n        \"heart\",\n        \"love\"\n      ]\n    },\n    {\n      \"name\": \"heart-circle-outline\",\n      \"tags\": [\n        \"circle\",\n        \"heart\",\n        \"love\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"heart-circle-sharp\",\n      \"tags\": [\n        \"circle\",\n        \"heart\",\n        \"love\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"heart-dislike\",\n      \"tags\": [\n        \"dislike\",\n        \"heart\",\n        \"love\"\n      ]\n    },\n    {\n      \"name\": \"heart-dislike-circle\",\n      \"tags\": [\n        \"circle\",\n        \"dislike\",\n        \"heart\",\n        \"love\"\n      ]\n    },\n    {\n      \"name\": \"heart-dislike-circle-outline\",\n      \"tags\": [\n        \"circle\",\n        \"dislike\",\n        \"heart\",\n        \"love\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"heart-dislike-circle-sharp\",\n      \"tags\": [\n        \"circle\",\n        \"dislike\",\n        \"heart\",\n        \"love\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"heart-dislike-outline\",\n      \"tags\": [\n        \"dislike\",\n        \"heart\",\n        \"love\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"heart-dislike-sharp\",\n      \"tags\": [\n        \"dislike\",\n        \"heart\",\n        \"love\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"heart-half\",\n      \"tags\": [\n        \"half\",\n        \"heart\",\n        \"love\"\n      ]\n    },\n    {\n      \"name\": \"heart-half-outline\",\n      \"tags\": [\n        \"half\",\n        \"heart\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"heart-half-sharp\",\n      \"tags\": [\n        \"half\",\n        \"heart\",\n        \"love\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"heart-outline\",\n      \"tags\": [\n        \"heart\",\n        \"love\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"heart-sharp\",\n      \"tags\": [\n        \"heart\",\n        \"love\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"help\",\n      \"tags\": [\n        \"?\",\n        \"circle\",\n        \"help\",\n        \"information\",\n        \"question\"\n      ]\n    },\n    {\n      \"name\": \"help-buoy\",\n      \"tags\": [\n        \"?\",\n        \"buoy\",\n        \"help\",\n        \"question\"\n      ]\n    },\n    {\n      \"name\": \"help-buoy-outline\",\n      \"tags\": [\n        \"?\",\n        \"buoy\",\n        \"help\",\n        \"outline\",\n        \"question\"\n      ]\n    },\n    {\n      \"name\": \"help-buoy-sharp\",\n      \"tags\": [\n        \"?\",\n        \"buoy\",\n        \"help\",\n        \"question\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"help-circle\",\n      \"tags\": [\n        \"?\",\n        \"circle\",\n        \"help\",\n        \"information\",\n        \"question\"\n      ]\n    },\n    {\n      \"name\": \"help-circle-outline\",\n      \"tags\": [\n        \"?\",\n        \"circle\",\n        \"help\",\n        \"information\",\n        \"outline\",\n        \"question\"\n      ]\n    },\n    {\n      \"name\": \"help-circle-sharp\",\n      \"tags\": [\n        \"?\",\n        \"circle\",\n        \"help\",\n        \"information\",\n        \"question\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"help-outline\",\n      \"tags\": [\n        \"help\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"help-sharp\",\n      \"tags\": [\n        \"?\",\n        \"circle\",\n        \"help\",\n        \"information\",\n        \"question\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"home\",\n      \"tags\": [\n        \"home\",\n        \"house\"\n      ]\n    },\n    {\n      \"name\": \"home-outline\",\n      \"tags\": [\n        \"home\",\n        \"house\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"home-sharp\",\n      \"tags\": [\n        \"home\",\n        \"house\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"hourglass\",\n      \"tags\": [\n        \"hourglass\",\n        \"time\"\n      ]\n    },\n    {\n      \"name\": \"hourglass-outline\",\n      \"tags\": [\n        \"hourglass\",\n        \"outline\",\n        \"time\"\n      ]\n    },\n    {\n      \"name\": \"hourglass-sharp\",\n      \"tags\": [\n        \"hourglass\",\n        \"sharp\",\n        \"time\"\n      ]\n    },\n    {\n      \"name\": \"ice-cream\",\n      \"tags\": [\n        \"cream\",\n        \"ice\"\n      ]\n    },\n    {\n      \"name\": \"ice-cream-outline\",\n      \"tags\": [\n        \"cream\",\n        \"ice\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"ice-cream-sharp\",\n      \"tags\": [\n        \"cream\",\n        \"ice\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"id-card\",\n      \"tags\": [\n        \"card\",\n        \"id\"\n      ]\n    },\n    {\n      \"name\": \"id-card-outline\",\n      \"tags\": [\n        \"card\",\n        \"id\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"id-card-sharp\",\n      \"tags\": [\n        \"card\",\n        \"id\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"image\",\n      \"tags\": [\n        \"camera\",\n        \"image\",\n        \"photo\"\n      ]\n    },\n    {\n      \"name\": \"image-outline\",\n      \"tags\": [\n        \"camera\",\n        \"image\",\n        \"outline\",\n        \"photo\"\n      ]\n    },\n    {\n      \"name\": \"image-sharp\",\n      \"tags\": [\n        \"camera\",\n        \"image\",\n        \"photo\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"images\",\n      \"tags\": [\n        \"images\",\n        \"photo\"\n      ]\n    },\n    {\n      \"name\": \"images-outline\",\n      \"tags\": [\n        \"images\",\n        \"outline\",\n        \"photo\"\n      ]\n    },\n    {\n      \"name\": \"images-sharp\",\n      \"tags\": [\n        \"images\",\n        \"photo\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"infinite\",\n      \"tags\": [\n        \"forever\",\n        \"infinite\",\n        \"loop\"\n      ]\n    },\n    {\n      \"name\": \"infinite-outline\",\n      \"tags\": [\n        \"forever\",\n        \"infinite\",\n        \"loop\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"infinite-sharp\",\n      \"tags\": [\n        \"forever\",\n        \"infinite\",\n        \"loop\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"information\",\n      \"tags\": [\n        \"circle\",\n        \"help\",\n        \"information\",\n        \"knowledge\"\n      ]\n    },\n    {\n      \"name\": \"information-circle\",\n      \"tags\": [\n        \"circle\",\n        \"help\",\n        \"information\",\n        \"knowledge\"\n      ]\n    },\n    {\n      \"name\": \"information-circle-outline\",\n      \"tags\": [\n        \"circle\",\n        \"help\",\n        \"information\",\n        \"knowledge\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"information-circle-sharp\",\n      \"tags\": [\n        \"circle\",\n        \"help\",\n        \"information\",\n        \"knowledge\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"information-outline\",\n      \"tags\": [\n        \"information\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"information-sharp\",\n      \"tags\": [\n        \"circle\",\n        \"help\",\n        \"information\",\n        \"knowledge\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"invert-mode\",\n      \"tags\": [\n        \"invert\",\n        \"mode\"\n      ]\n    },\n    {\n      \"name\": \"invert-mode-outline\",\n      \"tags\": [\n        \"invert\",\n        \"mode\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"invert-mode-sharp\",\n      \"tags\": [\n        \"invert\",\n        \"mode\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"journal\",\n      \"tags\": [\n        \"journal\"\n      ]\n    },\n    {\n      \"name\": \"journal-outline\",\n      \"tags\": [\n        \"journal\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"journal-sharp\",\n      \"tags\": [\n        \"journal\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"key\",\n      \"tags\": [\n        \"access\",\n        \"key\"\n      ]\n    },\n    {\n      \"name\": \"key-outline\",\n      \"tags\": [\n        \"access\",\n        \"key\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"key-sharp\",\n      \"tags\": [\n        \"access\",\n        \"key\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"keypad\",\n      \"tags\": [\n        \"keypad\",\n        \"type\"\n      ]\n    },\n    {\n      \"name\": \"keypad-outline\",\n      \"tags\": [\n        \"keypad\",\n        \"outline\",\n        \"type\"\n      ]\n    },\n    {\n      \"name\": \"keypad-sharp\",\n      \"tags\": [\n        \"keypad\",\n        \"sharp\",\n        \"type\"\n      ]\n    },\n    {\n      \"name\": \"language\",\n      \"tags\": [\n        \"language\"\n      ]\n    },\n    {\n      \"name\": \"language-outline\",\n      \"tags\": [\n        \"language\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"language-sharp\",\n      \"tags\": [\n        \"language\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"laptop\",\n      \"tags\": [\n        \"apple\",\n        \"laptop\",\n        \"macbook\",\n        \"osx\"\n      ]\n    },\n    {\n      \"name\": \"laptop-outline\",\n      \"tags\": [\n        \"apple\",\n        \"laptop\",\n        \"macbook\",\n        \"osx\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"laptop-sharp\",\n      \"tags\": [\n        \"apple\",\n        \"laptop\",\n        \"macbook\",\n        \"osx\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"layers\",\n      \"tags\": [\n        \"layers\"\n      ]\n    },\n    {\n      \"name\": \"layers-outline\",\n      \"tags\": [\n        \"layers\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"layers-sharp\",\n      \"tags\": [\n        \"layers\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"leaf\",\n      \"tags\": [\n        \"green\",\n        \"leaf\",\n        \"nature\",\n        \"plant\",\n        \"recycle\"\n      ]\n    },\n    {\n      \"name\": \"leaf-outline\",\n      \"tags\": [\n        \"green\",\n        \"leaf\",\n        \"nature\",\n        \"outline\",\n        \"plant\",\n        \"recycle\"\n      ]\n    },\n    {\n      \"name\": \"leaf-sharp\",\n      \"tags\": [\n        \"green\",\n        \"leaf\",\n        \"nature\",\n        \"plant\",\n        \"recycle\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"library\",\n      \"tags\": [\n        \"library\"\n      ]\n    },\n    {\n      \"name\": \"library-outline\",\n      \"tags\": [\n        \"library\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"library-sharp\",\n      \"tags\": [\n        \"library\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"link\",\n      \"tags\": [\n        \"anchor\",\n        \"attach\",\n        \"chain\",\n        \"href\",\n        \"link\"\n      ]\n    },\n    {\n      \"name\": \"link-outline\",\n      \"tags\": [\n        \"anchor\",\n        \"attach\",\n        \"chain\",\n        \"href\",\n        \"link\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"link-sharp\",\n      \"tags\": [\n        \"anchor\",\n        \"attach\",\n        \"chain\",\n        \"href\",\n        \"link\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"list\",\n      \"tags\": [\n        \"list\"\n      ]\n    },\n    {\n      \"name\": \"list-circle\",\n      \"tags\": [\n        \"circle\",\n        \"list\"\n      ]\n    },\n    {\n      \"name\": \"list-circle-outline\",\n      \"tags\": [\n        \"circle\",\n        \"list\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"list-circle-sharp\",\n      \"tags\": [\n        \"circle\",\n        \"list\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"list-outline\",\n      \"tags\": [\n        \"list\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"list-sharp\",\n      \"tags\": [\n        \"list\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"locate\",\n      \"tags\": [\n        \"gps\",\n        \"locate\",\n        \"maps\",\n        \"navigate\"\n      ]\n    },\n    {\n      \"name\": \"locate-outline\",\n      \"tags\": [\n        \"gps\",\n        \"locate\",\n        \"maps\",\n        \"navigate\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"locate-sharp\",\n      \"tags\": [\n        \"gps\",\n        \"locate\",\n        \"maps\",\n        \"navigate\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"location\",\n      \"tags\": [\n        \"location\"\n      ]\n    },\n    {\n      \"name\": \"location-outline\",\n      \"tags\": [\n        \"location\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"location-sharp\",\n      \"tags\": [\n        \"location\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"lock-closed\",\n      \"tags\": [\n        \"closed\",\n        \"lock\"\n      ]\n    },\n    {\n      \"name\": \"lock-closed-outline\",\n      \"tags\": [\n        \"closed\",\n        \"lock\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"lock-closed-sharp\",\n      \"tags\": [\n        \"closed\",\n        \"lock\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"lock-open\",\n      \"tags\": [\n        \"lock\",\n        \"open\"\n      ]\n    },\n    {\n      \"name\": \"lock-open-outline\",\n      \"tags\": [\n        \"lock\",\n        \"open\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"lock-open-sharp\",\n      \"tags\": [\n        \"lock\",\n        \"open\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"log-in\",\n      \"tags\": [\n        \"login\",\n        \"signin\"\n      ]\n    },\n    {\n      \"name\": \"log-in-outline\",\n      \"tags\": [\n        \"login\",\n        \"outline\",\n        \"signin\"\n      ]\n    },\n    {\n      \"name\": \"log-in-sharp\",\n      \"tags\": [\n        \"login\",\n        \"sharp\",\n        \"signin\"\n      ]\n    },\n    {\n      \"name\": \"log-out\",\n      \"tags\": [\n        \"logout\",\n        \"signout\"\n      ]\n    },\n    {\n      \"name\": \"log-out-outline\",\n      \"tags\": [\n        \"logout\",\n        \"outline\",\n        \"signout\"\n      ]\n    },\n    {\n      \"name\": \"log-out-sharp\",\n      \"tags\": [\n        \"logout\",\n        \"sharp\",\n        \"signout\"\n      ]\n    },\n    {\n      \"name\": \"logo-alipay\",\n      \"tags\": [\n        \"alipay\",\n        \"logo\"\n      ]\n    },\n    {\n      \"name\": \"logo-amazon\",\n      \"tags\": [\n        \"amazon\",\n        \"logo\"\n      ]\n    },\n    {\n      \"name\": \"logo-amplify\",\n      \"tags\": [\n        \"amplify\",\n        \"logo\"\n      ]\n    },\n    {\n      \"name\": \"logo-android\",\n      \"tags\": [\n        \"android\",\n        \"logo\"\n      ]\n    },\n    {\n      \"name\": \"logo-angular\",\n      \"tags\": [\n        \"angular\",\n        \"logo\"\n      ]\n    },\n    {\n      \"name\": \"logo-appflow\",\n      \"tags\": [\n        \"appflow\",\n        \"logo\"\n      ]\n    },\n    {\n      \"name\": \"logo-apple\",\n      \"tags\": [\n        \"apple\",\n        \"logo\"\n      ]\n    },\n    {\n      \"name\": \"logo-apple-appstore\",\n      \"tags\": [\n        \"apple\",\n        \"appstore\",\n        \"logo\"\n      ]\n    },\n    {\n      \"name\": \"logo-apple-ar\",\n      \"tags\": [\n        \"apple\",\n        \"ar\",\n        \"logo\"\n      ]\n    },\n    {\n      \"name\": \"logo-behance\",\n      \"tags\": [\n        \"behance\",\n        \"logo\"\n      ]\n    },\n    {\n      \"name\": \"logo-bitbucket\",\n      \"tags\": [\n        \"bitbucket\",\n        \"logo\"\n      ]\n    },\n    {\n      \"name\": \"logo-bitcoin\",\n      \"tags\": [\n        \"bitcoin\",\n        \"logo\"\n      ]\n    },\n    {\n      \"name\": \"logo-buffer\",\n      \"tags\": [\n        \"buffer\",\n        \"logo\"\n      ]\n    },\n    {\n      \"name\": \"logo-capacitor\",\n      \"tags\": [\n        \"capacitor\",\n        \"logo\"\n      ]\n    },\n    {\n      \"name\": \"logo-chrome\",\n      \"tags\": [\n        \"chrome\",\n        \"logo\"\n      ]\n    },\n    {\n      \"name\": \"logo-closed-captioning\",\n      \"tags\": [\n        \"captioning\",\n        \"closed\",\n        \"logo\"\n      ]\n    },\n    {\n      \"name\": \"logo-codepen\",\n      \"tags\": [\n        \"codepen\",\n        \"logo\"\n      ]\n    },\n    {\n      \"name\": \"logo-css3\",\n      \"tags\": [\n        \"css3\",\n        \"logo\"\n      ]\n    },\n    {\n      \"name\": \"logo-designernews\",\n      \"tags\": [\n        \"designernews\",\n        \"logo\"\n      ]\n    },\n    {\n      \"name\": \"logo-deviantart\",\n      \"tags\": [\n        \"deviantart\",\n        \"logo\"\n      ]\n    },\n    {\n      \"name\": \"logo-discord\",\n      \"tags\": [\n        \"discord\",\n        \"logo\"\n      ]\n    },\n    {\n      \"name\": \"logo-docker\",\n      \"tags\": [\n        \"docker\",\n        \"logo\"\n      ]\n    },\n    {\n      \"name\": \"logo-dribbble\",\n      \"tags\": [\n        \"dribbble\",\n        \"logo\"\n      ]\n    },\n    {\n      \"name\": \"logo-dropbox\",\n      \"tags\": [\n        \"dropbox\",\n        \"logo\"\n      ]\n    },\n    {\n      \"name\": \"logo-edge\",\n      \"tags\": [\n        \"edge\",\n        \"logo\"\n      ]\n    },\n    {\n      \"name\": \"logo-electron\",\n      \"tags\": [\n        \"electron\",\n        \"logo\"\n      ]\n    },\n    {\n      \"name\": \"logo-euro\",\n      \"tags\": [\n        \"euro\",\n        \"logo\"\n      ]\n    },\n    {\n      \"name\": \"logo-facebook\",\n      \"tags\": [\n        \"facebook\",\n        \"logo\"\n      ]\n    },\n    {\n      \"name\": \"logo-figma\",\n      \"tags\": [\n        \"figma\",\n        \"logo\"\n      ]\n    },\n    {\n      \"name\": \"logo-firebase\",\n      \"tags\": [\n        \"firebase\",\n        \"logo\"\n      ]\n    },\n    {\n      \"name\": \"logo-firefox\",\n      \"tags\": [\n        \"firefox\",\n        \"logo\"\n      ]\n    },\n    {\n      \"name\": \"logo-flickr\",\n      \"tags\": [\n        \"flickr\",\n        \"logo\"\n      ]\n    },\n    {\n      \"name\": \"logo-foursquare\",\n      \"tags\": [\n        \"foursquare\",\n        \"logo\"\n      ]\n    },\n    {\n      \"name\": \"logo-github\",\n      \"tags\": [\n        \"github\",\n        \"logo\"\n      ]\n    },\n    {\n      \"name\": \"logo-gitlab\",\n      \"tags\": [\n        \"gitlab\",\n        \"logo\"\n      ]\n    },\n    {\n      \"name\": \"logo-google\",\n      \"tags\": [\n        \"google\",\n        \"logo\"\n      ]\n    },\n    {\n      \"name\": \"logo-google-playstore\",\n      \"tags\": [\n        \"google\",\n        \"logo\",\n        \"playstore\"\n      ]\n    },\n    {\n      \"name\": \"logo-hackernews\",\n      \"tags\": [\n        \"hackernews\",\n        \"logo\"\n      ]\n    },\n    {\n      \"name\": \"logo-html5\",\n      \"tags\": [\n        \"html5\",\n        \"logo\"\n      ]\n    },\n    {\n      \"name\": \"logo-instagram\",\n      \"tags\": [\n        \"instagram\",\n        \"logo\"\n      ]\n    },\n    {\n      \"name\": \"logo-ionic\",\n      \"tags\": [\n        \"ionic\",\n        \"logo\"\n      ]\n    },\n    {\n      \"name\": \"logo-ionitron\",\n      \"tags\": [\n        \"ionitron\",\n        \"logo\"\n      ]\n    },\n    {\n      \"name\": \"logo-javascript\",\n      \"tags\": [\n        \"javascript\",\n        \"logo\"\n      ]\n    },\n    {\n      \"name\": \"logo-laravel\",\n      \"tags\": [\n        \"laravel\",\n        \"logo\"\n      ]\n    },\n    {\n      \"name\": \"logo-linkedin\",\n      \"tags\": [\n        \"linkedin\",\n        \"logo\"\n      ]\n    },\n    {\n      \"name\": \"logo-markdown\",\n      \"tags\": [\n        \"logo\",\n        \"markdown\"\n      ]\n    },\n    {\n      \"name\": \"logo-mastodon\",\n      \"tags\": [\n        \"logo\",\n        \"mastodon\"\n      ]\n    },\n    {\n      \"name\": \"logo-medium\",\n      \"tags\": [\n        \"logo\",\n        \"medium\"\n      ]\n    },\n    {\n      \"name\": \"logo-microsoft\",\n      \"tags\": [\n        \"logo\",\n        \"microsoft\"\n      ]\n    },\n    {\n      \"name\": \"logo-no-smoking\",\n      \"tags\": [\n        \"logo\",\n        \"no\",\n        \"smoking\"\n      ]\n    },\n    {\n      \"name\": \"logo-nodejs\",\n      \"tags\": [\n        \"logo\",\n        \"nodejs\"\n      ]\n    },\n    {\n      \"name\": \"logo-npm\",\n      \"tags\": [\n        \"logo\",\n        \"npm\"\n      ]\n    },\n    {\n      \"name\": \"logo-octocat\",\n      \"tags\": [\n        \"logo\",\n        \"octocat\"\n      ]\n    },\n    {\n      \"name\": \"logo-paypal\",\n      \"tags\": [\n        \"logo\",\n        \"paypal\"\n      ]\n    },\n    {\n      \"name\": \"logo-pinterest\",\n      \"tags\": [\n        \"logo\",\n        \"pinterest\"\n      ]\n    },\n    {\n      \"name\": \"logo-playstation\",\n      \"tags\": [\n        \"logo\",\n        \"playstation\"\n      ]\n    },\n    {\n      \"name\": \"logo-pwa\",\n      \"tags\": [\n        \"logo\",\n        \"pwa\"\n      ]\n    },\n    {\n      \"name\": \"logo-python\",\n      \"tags\": [\n        \"logo\",\n        \"python\"\n      ]\n    },\n    {\n      \"name\": \"logo-react\",\n      \"tags\": [\n        \"logo\",\n        \"react\"\n      ]\n    },\n    {\n      \"name\": \"logo-reddit\",\n      \"tags\": [\n        \"logo\",\n        \"reddit\"\n      ]\n    },\n    {\n      \"name\": \"logo-rss\",\n      \"tags\": [\n        \"logo\",\n        \"rss\"\n      ]\n    },\n    {\n      \"name\": \"logo-sass\",\n      \"tags\": [\n        \"logo\",\n        \"sass\"\n      ]\n    },\n    {\n      \"name\": \"logo-skype\",\n      \"tags\": [\n        \"logo\",\n        \"skype\"\n      ]\n    },\n    {\n      \"name\": \"logo-slack\",\n      \"tags\": [\n        \"logo\",\n        \"slack\"\n      ]\n    },\n    {\n      \"name\": \"logo-snapchat\",\n      \"tags\": [\n        \"logo\",\n        \"snapchat\"\n      ]\n    },\n    {\n      \"name\": \"logo-soundcloud\",\n      \"tags\": [\n        \"logo\",\n        \"soundcloud\"\n      ]\n    },\n    {\n      \"name\": \"logo-stackoverflow\",\n      \"tags\": [\n        \"logo\",\n        \"stackoverflow\"\n      ]\n    },\n    {\n      \"name\": \"logo-steam\",\n      \"tags\": [\n        \"logo\",\n        \"steam\"\n      ]\n    },\n    {\n      \"name\": \"logo-stencil\",\n      \"tags\": [\n        \"logo\",\n        \"stencil\"\n      ]\n    },\n    {\n      \"name\": \"logo-tableau\",\n      \"tags\": [\n        \"logo\",\n        \"tableau\"\n      ]\n    },\n    {\n      \"name\": \"logo-threads\",\n      \"tags\": [\n        \"logo\",\n        \"threads\"\n      ]\n    },\n    {\n      \"name\": \"logo-tiktok\",\n      \"tags\": [\n        \"logo\",\n        \"tiktok\"\n      ]\n    },\n    {\n      \"name\": \"logo-trapeze\",\n      \"tags\": [\n        \"logo\",\n        \"trapeze\"\n      ]\n    },\n    {\n      \"name\": \"logo-tumblr\",\n      \"tags\": [\n        \"logo\",\n        \"tumblr\"\n      ]\n    },\n    {\n      \"name\": \"logo-tux\",\n      \"tags\": [\n        \"logo\",\n        \"tux\"\n      ]\n    },\n    {\n      \"name\": \"logo-twitch\",\n      \"tags\": [\n        \"logo\",\n        \"twitch\"\n      ]\n    },\n    {\n      \"name\": \"logo-twitter\",\n      \"tags\": [\n        \"logo\",\n        \"twitter\",\n        \"x\"\n      ]\n    },\n    {\n      \"name\": \"logo-usd\",\n      \"tags\": [\n        \"logo\",\n        \"usd\"\n      ]\n    },\n    {\n      \"name\": \"logo-venmo\",\n      \"tags\": [\n        \"logo\",\n        \"venmo\"\n      ]\n    },\n    {\n      \"name\": \"logo-vercel\",\n      \"tags\": [\n        \"logo\",\n        \"vercel\"\n      ]\n    },\n    {\n      \"name\": \"logo-vimeo\",\n      \"tags\": [\n        \"logo\",\n        \"vimeo\"\n      ]\n    },\n    {\n      \"name\": \"logo-vk\",\n      \"tags\": [\n        \"logo\",\n        \"vk\"\n      ]\n    },\n    {\n      \"name\": \"logo-vue\",\n      \"tags\": [\n        \"logo\",\n        \"vue\"\n      ]\n    },\n    {\n      \"name\": \"logo-web-component\",\n      \"tags\": [\n        \"component\",\n        \"logo\",\n        \"web\"\n      ]\n    },\n    {\n      \"name\": \"logo-wechat\",\n      \"tags\": [\n        \"logo\",\n        \"wechat\"\n      ]\n    },\n    {\n      \"name\": \"logo-whatsapp\",\n      \"tags\": [\n        \"logo\",\n        \"whatsapp\"\n      ]\n    },\n    {\n      \"name\": \"logo-windows\",\n      \"tags\": [\n        \"logo\",\n        \"windows\"\n      ]\n    },\n    {\n      \"name\": \"logo-wordpress\",\n      \"tags\": [\n        \"logo\",\n        \"wordpress\"\n      ]\n    },\n    {\n      \"name\": \"logo-x\",\n      \"tags\": [\n        \"logo\",\n        \"twitter\",\n        \"x\"\n      ]\n    },\n    {\n      \"name\": \"logo-xbox\",\n      \"tags\": [\n        \"logo\",\n        \"xbox\"\n      ]\n    },\n    {\n      \"name\": \"logo-xing\",\n      \"tags\": [\n        \"logo\",\n        \"xing\"\n      ]\n    },\n    {\n      \"name\": \"logo-yahoo\",\n      \"tags\": [\n        \"logo\",\n        \"yahoo\"\n      ]\n    },\n    {\n      \"name\": \"logo-yen\",\n      \"tags\": [\n        \"logo\",\n        \"yen\"\n      ]\n    },\n    {\n      \"name\": \"logo-youtube\",\n      \"tags\": [\n        \"logo\",\n        \"youtube\"\n      ]\n    },\n    {\n      \"name\": \"magnet\",\n      \"tags\": [\n        \"attraction\",\n        \"magnet\",\n        \"sticky\"\n      ]\n    },\n    {\n      \"name\": \"magnet-outline\",\n      \"tags\": [\n        \"attraction\",\n        \"magnet\",\n        \"outline\",\n        \"sticky\"\n      ]\n    },\n    {\n      \"name\": \"magnet-sharp\",\n      \"tags\": [\n        \"attraction\",\n        \"magnet\",\n        \"sharp\",\n        \"sticky\"\n      ]\n    },\n    {\n      \"name\": \"mail\",\n      \"tags\": [\n        \"email\",\n        \"mail\"\n      ]\n    },\n    {\n      \"name\": \"mail-open\",\n      \"tags\": [\n        \"mail\",\n        \"open\"\n      ]\n    },\n    {\n      \"name\": \"mail-open-outline\",\n      \"tags\": [\n        \"mail\",\n        \"open\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"mail-open-sharp\",\n      \"tags\": [\n        \"mail\",\n        \"open\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"mail-outline\",\n      \"tags\": [\n        \"email\",\n        \"mail\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"mail-sharp\",\n      \"tags\": [\n        \"email\",\n        \"mail\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"mail-unread\",\n      \"tags\": [\n        \"mail\",\n        \"unread\"\n      ]\n    },\n    {\n      \"name\": \"mail-unread-outline\",\n      \"tags\": [\n        \"mail\",\n        \"outline\",\n        \"unread\"\n      ]\n    },\n    {\n      \"name\": \"mail-unread-sharp\",\n      \"tags\": [\n        \"mail\",\n        \"sharp\",\n        \"unread\"\n      ]\n    },\n    {\n      \"name\": \"male\",\n      \"tags\": [\n        \"boy\",\n        \"dude\",\n        \"guy\",\n        \"male\"\n      ]\n    },\n    {\n      \"name\": \"male-female\",\n      \"tags\": [\n        \"female\",\n        \"male\"\n      ]\n    },\n    {\n      \"name\": \"male-female-outline\",\n      \"tags\": [\n        \"female\",\n        \"male\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"male-female-sharp\",\n      \"tags\": [\n        \"female\",\n        \"male\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"male-outline\",\n      \"tags\": [\n        \"male\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"male-sharp\",\n      \"tags\": [\n        \"boy\",\n        \"dude\",\n        \"guy\",\n        \"male\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"man\",\n      \"tags\": [\n        \"boy\",\n        \"dude\",\n        \"guy\",\n        \"male\",\n        \"man\"\n      ]\n    },\n    {\n      \"name\": \"man-outline\",\n      \"tags\": [\n        \"boy\",\n        \"dude\",\n        \"guy\",\n        \"male\",\n        \"man\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"man-sharp\",\n      \"tags\": [\n        \"boy\",\n        \"dude\",\n        \"guy\",\n        \"male\",\n        \"man\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"map\",\n      \"tags\": [\n        \"gps\",\n        \"map\",\n        \"navigation\",\n        \"pin\"\n      ]\n    },\n    {\n      \"name\": \"map-outline\",\n      \"tags\": [\n        \"gps\",\n        \"map\",\n        \"navigation\",\n        \"outline\",\n        \"pin\"\n      ]\n    },\n    {\n      \"name\": \"map-sharp\",\n      \"tags\": [\n        \"gps\",\n        \"map\",\n        \"navigation\",\n        \"pin\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"medal\",\n      \"tags\": [\n        \"medal\"\n      ]\n    },\n    {\n      \"name\": \"medal-outline\",\n      \"tags\": [\n        \"medal\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"medal-sharp\",\n      \"tags\": [\n        \"medal\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"medical\",\n      \"tags\": [\n        \"medical\"\n      ]\n    },\n    {\n      \"name\": \"medical-outline\",\n      \"tags\": [\n        \"medical\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"medical-sharp\",\n      \"tags\": [\n        \"medical\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"medkit\",\n      \"tags\": [\n        \"case\",\n        \"disease\",\n        \"firstaid\",\n        \"health\",\n        \"medkit\",\n        \"sick\"\n      ]\n    },\n    {\n      \"name\": \"medkit-outline\",\n      \"tags\": [\n        \"case\",\n        \"disease\",\n        \"firstaid\",\n        \"health\",\n        \"medkit\",\n        \"outline\",\n        \"sick\"\n      ]\n    },\n    {\n      \"name\": \"medkit-sharp\",\n      \"tags\": [\n        \"case\",\n        \"disease\",\n        \"firstaid\",\n        \"health\",\n        \"medkit\",\n        \"sharp\",\n        \"sick\"\n      ]\n    },\n    {\n      \"name\": \"megaphone\",\n      \"tags\": [\n        \"megaphone\"\n      ]\n    },\n    {\n      \"name\": \"megaphone-outline\",\n      \"tags\": [\n        \"megaphone\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"megaphone-sharp\",\n      \"tags\": [\n        \"megaphone\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"menu\",\n      \"tags\": [\n        \"menu\"\n      ]\n    },\n    {\n      \"name\": \"menu-outline\",\n      \"tags\": [\n        \"menu\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"menu-sharp\",\n      \"tags\": [\n        \"menu\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"mic\",\n      \"tags\": [\n        \"mic\",\n        \"noise\",\n        \"sound\",\n        \"speaker\",\n        \"talk\"\n      ]\n    },\n    {\n      \"name\": \"mic-circle\",\n      \"tags\": [\n        \"circle\",\n        \"mic\",\n        \"noise\",\n        \"sound\",\n        \"speaker\",\n        \"talk\"\n      ]\n    },\n    {\n      \"name\": \"mic-circle-outline\",\n      \"tags\": [\n        \"circle\",\n        \"mic\",\n        \"noise\",\n        \"outline\",\n        \"sound\",\n        \"speaker\",\n        \"talk\"\n      ]\n    },\n    {\n      \"name\": \"mic-circle-sharp\",\n      \"tags\": [\n        \"circle\",\n        \"mic\",\n        \"noise\",\n        \"sharp\",\n        \"sound\",\n        \"speaker\",\n        \"talk\"\n      ]\n    },\n    {\n      \"name\": \"mic-off\",\n      \"tags\": [\n        \"mic\",\n        \"noise\",\n        \"off\",\n        \"sound\",\n        \"speaker\",\n        \"talk\"\n      ]\n    },\n    {\n      \"name\": \"mic-off-circle\",\n      \"tags\": [\n        \"circle\",\n        \"mic\",\n        \"noise\",\n        \"off\",\n        \"sound\",\n        \"speaker\",\n        \"talk\"\n      ]\n    },\n    {\n      \"name\": \"mic-off-circle-outline\",\n      \"tags\": [\n        \"circle\",\n        \"mic\",\n        \"noise\",\n        \"off\",\n        \"outline\",\n        \"sound\",\n        \"speaker\",\n        \"talk\"\n      ]\n    },\n    {\n      \"name\": \"mic-off-circle-sharp\",\n      \"tags\": [\n        \"circle\",\n        \"mic\",\n        \"noise\",\n        \"off\",\n        \"sharp\",\n        \"sound\",\n        \"speaker\",\n        \"talk\"\n      ]\n    },\n    {\n      \"name\": \"mic-off-outline\",\n      \"tags\": [\n        \"mic\",\n        \"noise\",\n        \"off\",\n        \"outline\",\n        \"sound\",\n        \"speaker\",\n        \"talk\"\n      ]\n    },\n    {\n      \"name\": \"mic-off-sharp\",\n      \"tags\": [\n        \"mic\",\n        \"noise\",\n        \"off\",\n        \"sharp\",\n        \"sound\",\n        \"speaker\",\n        \"talk\"\n      ]\n    },\n    {\n      \"name\": \"mic-outline\",\n      \"tags\": [\n        \"mic\",\n        \"noise\",\n        \"outline\",\n        \"sound\",\n        \"speaker\",\n        \"talk\"\n      ]\n    },\n    {\n      \"name\": \"mic-sharp\",\n      \"tags\": [\n        \"mic\",\n        \"noise\",\n        \"sharp\",\n        \"sound\",\n        \"speaker\",\n        \"talk\"\n      ]\n    },\n    {\n      \"name\": \"moon\",\n      \"tags\": [\n        \"dark\",\n        \"moon\",\n        \"night\",\n        \"sky\"\n      ]\n    },\n    {\n      \"name\": \"moon-outline\",\n      \"tags\": [\n        \"dark\",\n        \"moon\",\n        \"night\",\n        \"outline\",\n        \"sky\"\n      ]\n    },\n    {\n      \"name\": \"moon-sharp\",\n      \"tags\": [\n        \"dark\",\n        \"moon\",\n        \"night\",\n        \"sharp\",\n        \"sky\"\n      ]\n    },\n    {\n      \"name\": \"move\",\n      \"tags\": [\n        \"move\"\n      ]\n    },\n    {\n      \"name\": \"move-outline\",\n      \"tags\": [\n        \"move\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"move-sharp\",\n      \"tags\": [\n        \"move\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"musical-note\",\n      \"tags\": [\n        \"listening\",\n        \"musical\",\n        \"noise\",\n        \"note\",\n        \"play\",\n        \"sound\"\n      ]\n    },\n    {\n      \"name\": \"musical-note-outline\",\n      \"tags\": [\n        \"listening\",\n        \"musical\",\n        \"noise\",\n        \"note\",\n        \"outline\",\n        \"play\",\n        \"sound\"\n      ]\n    },\n    {\n      \"name\": \"musical-note-sharp\",\n      \"tags\": [\n        \"listening\",\n        \"musical\",\n        \"noise\",\n        \"note\",\n        \"play\",\n        \"sharp\",\n        \"sound\"\n      ]\n    },\n    {\n      \"name\": \"musical-notes\",\n      \"tags\": [\n        \"listening\",\n        \"musical\",\n        \"noise\",\n        \"notes\",\n        \"play\",\n        \"sound\"\n      ]\n    },\n    {\n      \"name\": \"musical-notes-outline\",\n      \"tags\": [\n        \"listening\",\n        \"musical\",\n        \"noise\",\n        \"notes\",\n        \"outline\",\n        \"play\",\n        \"sound\"\n      ]\n    },\n    {\n      \"name\": \"musical-notes-sharp\",\n      \"tags\": [\n        \"listening\",\n        \"musical\",\n        \"noise\",\n        \"notes\",\n        \"play\",\n        \"sharp\",\n        \"sound\"\n      ]\n    },\n    {\n      \"name\": \"navigate\",\n      \"tags\": [\n        \"gps\",\n        \"location\",\n        \"map\",\n        \"navigate\",\n        \"pin\"\n      ]\n    },\n    {\n      \"name\": \"navigate-circle\",\n      \"tags\": [\n        \"circle\",\n        \"gps\",\n        \"location\",\n        \"map\",\n        \"navigate\",\n        \"pin\"\n      ]\n    },\n    {\n      \"name\": \"navigate-circle-outline\",\n      \"tags\": [\n        \"circle\",\n        \"gps\",\n        \"location\",\n        \"map\",\n        \"navigate\",\n        \"outline\",\n        \"pin\"\n      ]\n    },\n    {\n      \"name\": \"navigate-circle-sharp\",\n      \"tags\": [\n        \"circle\",\n        \"gps\",\n        \"location\",\n        \"map\",\n        \"navigate\",\n        \"pin\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"navigate-outline\",\n      \"tags\": [\n        \"gps\",\n        \"location\",\n        \"map\",\n        \"navigate\",\n        \"outline\",\n        \"pin\"\n      ]\n    },\n    {\n      \"name\": \"navigate-sharp\",\n      \"tags\": [\n        \"gps\",\n        \"location\",\n        \"map\",\n        \"navigate\",\n        \"pin\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"newspaper\",\n      \"tags\": [\n        \"newspaper\"\n      ]\n    },\n    {\n      \"name\": \"newspaper-outline\",\n      \"tags\": [\n        \"newspaper\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"newspaper-sharp\",\n      \"tags\": [\n        \"newspaper\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"notifications\",\n      \"tags\": [\n        \"bell\",\n        \"notifications\"\n      ]\n    },\n    {\n      \"name\": \"notifications-circle\",\n      \"tags\": [\n        \"bell\",\n        \"circle\",\n        \"notifications\"\n      ]\n    },\n    {\n      \"name\": \"notifications-circle-outline\",\n      \"tags\": [\n        \"bell\",\n        \"circle\",\n        \"notifications\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"notifications-circle-sharp\",\n      \"tags\": [\n        \"bell\",\n        \"circle\",\n        \"notifications\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"notifications-off\",\n      \"tags\": [\n        \"bell\",\n        \"notifications\",\n        \"off\"\n      ]\n    },\n    {\n      \"name\": \"notifications-off-circle\",\n      \"tags\": [\n        \"bell\",\n        \"circle\",\n        \"notifications\",\n        \"off\"\n      ]\n    },\n    {\n      \"name\": \"notifications-off-circle-outline\",\n      \"tags\": [\n        \"bell\",\n        \"circle\",\n        \"notifications\",\n        \"off\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"notifications-off-circle-sharp\",\n      \"tags\": [\n        \"bell\",\n        \"circle\",\n        \"notifications\",\n        \"off\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"notifications-off-outline\",\n      \"tags\": [\n        \"bell\",\n        \"notifications\",\n        \"off\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"notifications-off-sharp\",\n      \"tags\": [\n        \"bell\",\n        \"notifications\",\n        \"off\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"notifications-outline\",\n      \"tags\": [\n        \"bell\",\n        \"notifications\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"notifications-sharp\",\n      \"tags\": [\n        \"bell\",\n        \"notifications\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"nuclear\",\n      \"tags\": [\n        \"danger\",\n        \"hazard\",\n        \"nuclear\",\n        \"warning\"\n      ]\n    },\n    {\n      \"name\": \"nuclear-outline\",\n      \"tags\": [\n        \"danger\",\n        \"hazard\",\n        \"nuclear\",\n        \"outline\",\n        \"warning\"\n      ]\n    },\n    {\n      \"name\": \"nuclear-sharp\",\n      \"tags\": [\n        \"danger\",\n        \"hazard\",\n        \"nuclear\",\n        \"sharp\",\n        \"warning\"\n      ]\n    },\n    {\n      \"name\": \"nutrition\",\n      \"tags\": [\n        \"nutrition\"\n      ]\n    },\n    {\n      \"name\": \"nutrition-outline\",\n      \"tags\": [\n        \"nutrition\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"nutrition-sharp\",\n      \"tags\": [\n        \"nutrition\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"open\",\n      \"tags\": [\n        \"anchor\",\n        \"external\",\n        \"link\",\n        \"open\"\n      ]\n    },\n    {\n      \"name\": \"open-outline\",\n      \"tags\": [\n        \"open\",\n        \"outline\"\n      ]\n    },\n    {\n      \"name\": \"open-sharp\",\n      \"tags\": [\n        \"open\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"options\",\n      \"tags\": [\n        \"filters\",\n        \"options\",\n        \"sliders\"\n      ]\n    },\n    {\n      \"name\": \"options-outline\",\n      \"tags\": [\n        \"filters\",\n        \"options\",\n        \"outline\",\n        \"sliders\"\n      ]\n    },\n    {\n      \"name\": \"options-sharp\",\n      \"tags\": [\n        \"filters\",\n        \"options\",\n        \"sharp\",\n        \"sliders\"\n      ]\n    },\n    {\n      \"name\": \"paper-plane\",\n      \"tags\": [\n        \"paper\",\n        \"plane\"\n      ]\n    },\n    {\n      \"name\": \"paper-plane-outline\",\n      \"tags\": [\n        \"outline\",\n        \"paper\",\n        \"plane\"\n      ]\n    },\n    {\n      \"name\": \"paper-plane-sharp\",\n      \"tags\": [\n        \"paper\",\n        \"plane\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"partly-sunny\",\n      \"tags\": [\n        \"partly\",\n        \"sunny\"\n      ]\n    },\n    {\n      \"name\": \"partly-sunny-outline\",\n      \"tags\": [\n        \"outline\",\n        \"partly\",\n        \"sunny\"\n      ]\n    },\n    {\n      \"name\": \"partly-sunny-sharp\",\n      \"tags\": [\n        \"partly\",\n        \"sharp\",\n        \"sunny\"\n      ]\n    },\n    {\n      \"name\": \"pause\",\n      \"tags\": [\n        \"break\",\n        \"freeze\",\n        \"hold\",\n        \"music\",\n        \"pause\"\n      ]\n    },\n    {\n      \"name\": \"pause-circle\",\n      \"tags\": [\n        \"break\",\n        \"circle\",\n        \"freeze\",\n        \"hold\",\n        \"music\",\n        \"pause\"\n      ]\n    },\n    {\n      \"name\": \"pause-circle-outline\",\n      \"tags\": [\n        \"break\",\n        \"circle\",\n        \"freeze\",\n        \"hold\",\n        \"music\",\n        \"outline\",\n        \"pause\"\n      ]\n    },\n    {\n      \"name\": \"pause-circle-sharp\",\n      \"tags\": [\n        \"break\",\n        \"circle\",\n        \"freeze\",\n        \"hold\",\n        \"music\",\n        \"pause\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"pause-outline\",\n      \"tags\": [\n        \"break\",\n        \"freeze\",\n        \"hold\",\n        \"music\",\n        \"outline\",\n        \"pause\"\n      ]\n    },\n    {\n      \"name\": \"pause-sharp\",\n      \"tags\": [\n        \"break\",\n        \"freeze\",\n        \"hold\",\n        \"music\",\n        \"pause\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"paw\",\n      \"tags\": [\n        \"paw\"\n      ]\n    },\n    {\n      \"name\": \"paw-outline\",\n      \"tags\": [\n        \"outline\",\n        \"paw\"\n      ]\n    },\n    {\n      \"name\": \"paw-sharp\",\n      \"tags\": [\n        \"paw\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"pencil\",\n      \"tags\": [\n        \"pencil\"\n      ]\n    },\n    {\n      \"name\": \"pencil-outline\",\n      \"tags\": [\n        \"outline\",\n        \"pencil\"\n      ]\n    },\n    {\n      \"name\": \"pencil-sharp\",\n      \"tags\": [\n        \"pencil\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"people\",\n      \"tags\": [\n        \"head\",\n        \"human\",\n        \"people\",\n        \"person\",\n        \"stalker\",\n        \"users\"\n      ]\n    },\n    {\n      \"name\": \"people-circle\",\n      \"tags\": [\n        \"circle\",\n        \"contacts\",\n        \"head\",\n        \"human\",\n        \"people\",\n        \"person\",\n        \"stalker\",\n        \"users\"\n      ]\n    },\n    {\n      \"name\": \"people-circle-outline\",\n      \"tags\": [\n        \"circle\",\n        \"contacts\",\n        \"head\",\n        \"human\",\n        \"outline\",\n        \"people\",\n        \"person\",\n        \"stalker\",\n        \"users\"\n      ]\n    },\n    {\n      \"name\": \"people-circle-sharp\",\n      \"tags\": [\n        \"circle\",\n        \"contacts\",\n        \"head\",\n        \"human\",\n        \"people\",\n        \"person\",\n        \"sharp\",\n        \"stalker\",\n        \"users\"\n      ]\n    },\n    {\n      \"name\": \"people-outline\",\n      \"tags\": [\n        \"head\",\n        \"human\",\n        \"outline\",\n        \"people\",\n        \"person\",\n        \"stalker\",\n        \"users\"\n      ]\n    },\n    {\n      \"name\": \"people-sharp\",\n      \"tags\": [\n        \"head\",\n        \"human\",\n        \"people\",\n        \"person\",\n        \"sharp\",\n        \"stalker\",\n        \"users\"\n      ]\n    },\n    {\n      \"name\": \"person\",\n      \"tags\": [\n        \"head\",\n        \"human\",\n        \"person\",\n        \"staff\",\n        \"users\"\n      ]\n    },\n    {\n      \"name\": \"person-add\",\n      \"tags\": [\n        \"add\",\n        \"head\",\n        \"human\",\n        \"member\",\n        \"new\",\n        \"person\",\n        \"staff\",\n        \"users\"\n      ]\n    },\n    {\n      \"name\": \"person-add-outline\",\n      \"tags\": [\n        \"add\",\n        \"head\",\n        \"human\",\n        \"member\",\n        \"new\",\n        \"outline\",\n        \"person\",\n        \"staff\",\n        \"users\"\n      ]\n    },\n    {\n      \"name\": \"person-add-sharp\",\n      \"tags\": [\n        \"add\",\n        \"head\",\n        \"human\",\n        \"member\",\n        \"new\",\n        \"person\",\n        \"sharp\",\n        \"staff\",\n        \"users\"\n      ]\n    },\n    {\n      \"name\": \"person-circle\",\n      \"tags\": [\n        \"circle\",\n        \"head\",\n        \"human\",\n        \"person\",\n        \"staff\",\n        \"users\"\n      ]\n    },\n    {\n      \"name\": \"person-circle-outline\",\n      \"tags\": [\n        \"circle\",\n        \"head\",\n        \"human\",\n        \"outline\",\n        \"person\",\n        \"staff\",\n        \"users\"\n      ]\n    },\n    {\n      \"name\": \"person-circle-sharp\",\n      \"tags\": [\n        \"circle\",\n        \"head\",\n        \"human\",\n        \"person\",\n        \"sharp\",\n        \"staff\",\n        \"users\"\n      ]\n    },\n    {\n      \"name\": \"person-outline\",\n      \"tags\": [\n        \"head\",\n        \"human\",\n        \"outline\",\n        \"person\",\n        \"staff\",\n        \"users\"\n      ]\n    },\n    {\n      \"name\": \"person-remove\",\n      \"tags\": [\n        \"person\",\n        \"remove\"\n      ]\n    },\n    {\n      \"name\": \"person-remove-outline\",\n      \"tags\": [\n        \"outline\",\n        \"person\",\n        \"remove\"\n      ]\n    },\n    {\n      \"name\": \"person-remove-sharp\",\n      \"tags\": [\n        \"person\",\n        \"remove\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"person-sharp\",\n      \"tags\": [\n        \"head\",\n        \"human\",\n        \"person\",\n        \"sharp\",\n        \"staff\",\n        \"users\"\n      ]\n    },\n    {\n      \"name\": \"phone-landscape\",\n      \"tags\": [\n        \"landscape\",\n        \"phone\"\n      ]\n    },\n    {\n      \"name\": \"phone-landscape-outline\",\n      \"tags\": [\n        \"landscape\",\n        \"outline\",\n        \"phone\"\n      ]\n    },\n    {\n      \"name\": \"phone-landscape-sharp\",\n      \"tags\": [\n        \"landscape\",\n        \"phone\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"phone-portrait\",\n      \"tags\": [\n        \"phone\",\n        \"portrait\"\n      ]\n    },\n    {\n      \"name\": \"phone-portrait-outline\",\n      \"tags\": [\n        \"outline\",\n        \"phone\",\n        \"portrait\"\n      ]\n    },\n    {\n      \"name\": \"phone-portrait-sharp\",\n      \"tags\": [\n        \"phone\",\n        \"portrait\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"pie-chart\",\n      \"tags\": [\n        \"chart\",\n        \"pie\"\n      ]\n    },\n    {\n      \"name\": \"pie-chart-outline\",\n      \"tags\": [\n        \"chart\",\n        \"outline\",\n        \"pie\"\n      ]\n    },\n    {\n      \"name\": \"pie-chart-sharp\",\n      \"tags\": [\n        \"chart\",\n        \"pie\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"pin\",\n      \"tags\": [\n        \"gps\",\n        \"location\",\n        \"navigation\",\n        \"pin\"\n      ]\n    },\n    {\n      \"name\": \"pin-outline\",\n      \"tags\": [\n        \"gps\",\n        \"location\",\n        \"navigation\",\n        \"outline\",\n        \"pin\"\n      ]\n    },\n    {\n      \"name\": \"pin-sharp\",\n      \"tags\": [\n        \"gps\",\n        \"location\",\n        \"navigation\",\n        \"pin\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"pint\",\n      \"tags\": [\n        \"pint\"\n      ]\n    },\n    {\n      \"name\": \"pint-outline\",\n      \"tags\": [\n        \"outline\",\n        \"pint\"\n      ]\n    },\n    {\n      \"name\": \"pint-sharp\",\n      \"tags\": [\n        \"pint\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"pizza\",\n      \"tags\": [\n        \"drink\",\n        \"eat\",\n        \"food\",\n        \"pizza\"\n      ]\n    },\n    {\n      \"name\": \"pizza-outline\",\n      \"tags\": [\n        \"drink\",\n        \"eat\",\n        \"food\",\n        \"outline\",\n        \"pizza\"\n      ]\n    },\n    {\n      \"name\": \"pizza-sharp\",\n      \"tags\": [\n        \"drink\",\n        \"eat\",\n        \"food\",\n        \"pizza\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"planet\",\n      \"tags\": [\n        \"globe\",\n        \"home\",\n        \"nature\",\n        \"planet\",\n        \"space\",\n        \"world\"\n      ]\n    },\n    {\n      \"name\": \"planet-outline\",\n      \"tags\": [\n        \"globe\",\n        \"home\",\n        \"nature\",\n        \"outline\",\n        \"planet\",\n        \"space\",\n        \"world\"\n      ]\n    },\n    {\n      \"name\": \"planet-sharp\",\n      \"tags\": [\n        \"globe\",\n        \"home\",\n        \"nature\",\n        \"planet\",\n        \"sharp\",\n        \"space\",\n        \"world\"\n      ]\n    },\n    {\n      \"name\": \"play\",\n      \"tags\": [\n        \"arrow\",\n        \"music\",\n        \"play\",\n        \"right\",\n        \"watch\"\n      ]\n    },\n    {\n      \"name\": \"play-back\",\n      \"tags\": [\n        \"back\",\n        \"left\",\n        \"play\"\n      ]\n    },\n    {\n      \"name\": \"play-back-circle\",\n      \"tags\": [\n        \"back\",\n        \"circle\",\n        \"left\",\n        \"play\"\n      ]\n    },\n    {\n      \"name\": \"play-back-circle-outline\",\n      \"tags\": [\n        \"back\",\n        \"circle\",\n        \"left\",\n        \"outline\",\n        \"play\"\n      ]\n    },\n    {\n      \"name\": \"play-back-circle-sharp\",\n      \"tags\": [\n        \"back\",\n        \"circle\",\n        \"left\",\n        \"play\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"play-back-outline\",\n      \"tags\": [\n        \"back\",\n        \"left\",\n        \"outline\",\n        \"play\"\n      ]\n    },\n    {\n      \"name\": \"play-back-sharp\",\n      \"tags\": [\n        \"back\",\n        \"left\",\n        \"play\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"play-circle\",\n      \"tags\": [\n        \"arrow\",\n        \"circle\",\n        \"music\",\n        \"play\",\n        \"right\",\n        \"watch\"\n      ]\n    },\n    {\n      \"name\": \"play-circle-outline\",\n      \"tags\": [\n        \"arrow\",\n        \"circle\",\n        \"music\",\n        \"outline\",\n        \"play\",\n        \"right\",\n        \"watch\"\n      ]\n    },\n    {\n      \"name\": \"play-circle-sharp\",\n      \"tags\": [\n        \"arrow\",\n        \"circle\",\n        \"music\",\n        \"play\",\n        \"right\",\n        \"sharp\",\n        \"watch\"\n      ]\n    },\n    {\n      \"name\": \"play-forward\",\n      \"tags\": [\n        \"forward\",\n        \"play\",\n        \"right\"\n      ]\n    },\n    {\n      \"name\": \"play-forward-circle\",\n      \"tags\": [\n        \"circle\",\n        \"forward\",\n        \"play\",\n        \"right\"\n      ]\n    },\n    {\n      \"name\": \"play-forward-circle-outline\",\n      \"tags\": [\n        \"circle\",\n        \"forward\",\n        \"outline\",\n        \"play\",\n        \"right\"\n      ]\n    },\n    {\n      \"name\": \"play-forward-circle-sharp\",\n      \"tags\": [\n        \"circle\",\n        \"forward\",\n        \"play\",\n        \"right\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"play-forward-outline\",\n      \"tags\": [\n        \"forward\",\n        \"outline\",\n        \"play\",\n        \"right\"\n      ]\n    },\n    {\n      \"name\": \"play-forward-sharp\",\n      \"tags\": [\n        \"forward\",\n        \"play\",\n        \"right\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"play-outline\",\n      \"tags\": [\n        \"arrow\",\n        \"music\",\n        \"outline\",\n        \"play\",\n        \"right\",\n        \"watch\"\n      ]\n    },\n    {\n      \"name\": \"play-sharp\",\n      \"tags\": [\n        \"arrow\",\n        \"music\",\n        \"play\",\n        \"right\",\n        \"sharp\",\n        \"watch\"\n      ]\n    },\n    {\n      \"name\": \"play-skip-back\",\n      \"tags\": [\n        \"back\",\n        \"left\",\n        \"play\",\n        \"skip\"\n      ]\n    },\n    {\n      \"name\": \"play-skip-back-circle\",\n      \"tags\": [\n        \"back\",\n        \"circle\",\n        \"left\",\n        \"play\",\n        \"skip\"\n      ]\n    },\n    {\n      \"name\": \"play-skip-back-circle-outline\",\n      \"tags\": [\n        \"back\",\n        \"circle\",\n        \"left\",\n        \"outline\",\n        \"play\",\n        \"skip\"\n      ]\n    },\n    {\n      \"name\": \"play-skip-back-circle-sharp\",\n      \"tags\": [\n        \"back\",\n        \"circle\",\n        \"left\",\n        \"play\",\n        \"sharp\",\n        \"skip\"\n      ]\n    },\n    {\n      \"name\": \"play-skip-back-outline\",\n      \"tags\": [\n        \"back\",\n        \"left\",\n        \"outline\",\n        \"play\",\n        \"skip\"\n      ]\n    },\n    {\n      \"name\": \"play-skip-back-sharp\",\n      \"tags\": [\n        \"back\",\n        \"left\",\n        \"play\",\n        \"sharp\",\n        \"skip\"\n      ]\n    },\n    {\n      \"name\": \"play-skip-forward\",\n      \"tags\": [\n        \"forward\",\n        \"play\",\n        \"skip\"\n      ]\n    },\n    {\n      \"name\": \"play-skip-forward-circle\",\n      \"tags\": [\n        \"circle\",\n        \"forward\",\n        \"play\",\n        \"right\",\n        \"skip\"\n      ]\n    },\n    {\n      \"name\": \"play-skip-forward-circle-outline\",\n      \"tags\": [\n        \"circle\",\n        \"forward\",\n        \"outline\",\n        \"play\",\n        \"right\",\n        \"skip\"\n      ]\n    },\n    {\n      \"name\": \"play-skip-forward-circle-sharp\",\n      \"tags\": [\n        \"circle\",\n        \"forward\",\n        \"play\",\n        \"right\",\n        \"sharp\",\n        \"skip\"\n      ]\n    },\n    {\n      \"name\": \"play-skip-forward-outline\",\n      \"tags\": [\n        \"forward\",\n        \"outline\",\n        \"play\",\n        \"right\",\n        \"skip\"\n      ]\n    },\n    {\n      \"name\": \"play-skip-forward-sharp\",\n      \"tags\": [\n        \"forward\",\n        \"play\",\n        \"right\",\n        \"sharp\",\n        \"skip\"\n      ]\n    },\n    {\n      \"name\": \"podium\",\n      \"tags\": [\n        \"award\",\n        \"compete\",\n        \"competition\",\n        \"lose\",\n        \"podium\",\n        \"win\"\n      ]\n    },\n    {\n      \"name\": \"podium-outline\",\n      \"tags\": [\n        \"award\",\n        \"compete\",\n        \"competition\",\n        \"lose\",\n        \"outline\",\n        \"podium\",\n        \"win\"\n      ]\n    },\n    {\n      \"name\": \"podium-sharp\",\n      \"tags\": [\n        \"award\",\n        \"compete\",\n        \"competition\",\n        \"lose\",\n        \"podium\",\n        \"sharp\",\n        \"win\"\n      ]\n    },\n    {\n      \"name\": \"power\",\n      \"tags\": [\n        \"off\",\n        \"on\",\n        \"power\"\n      ]\n    },\n    {\n      \"name\": \"power-outline\",\n      \"tags\": [\n        \"off\",\n        \"on\",\n        \"outline\",\n        \"power\"\n      ]\n    },\n    {\n      \"name\": \"power-sharp\",\n      \"tags\": [\n        \"off\",\n        \"on\",\n        \"power\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"pricetag\",\n      \"tags\": [\n        \"$\",\n        \"commerce\",\n        \"items\",\n        \"money\",\n        \"pricetag\",\n        \"shopping\"\n      ]\n    },\n    {\n      \"name\": \"pricetag-outline\",\n      \"tags\": [\n        \"$\",\n        \"commerce\",\n        \"items\",\n        \"money\",\n        \"outline\",\n        \"pricetag\",\n        \"shopping\"\n      ]\n    },\n    {\n      \"name\": \"pricetag-sharp\",\n      \"tags\": [\n        \"$\",\n        \"commerce\",\n        \"items\",\n        \"money\",\n        \"pricetag\",\n        \"sharp\",\n        \"shopping\"\n      ]\n    },\n    {\n      \"name\": \"pricetags\",\n      \"tags\": [\n        \"$\",\n        \"commerce\",\n        \"items\",\n        \"money\",\n        \"pricetags\",\n        \"shopping\"\n      ]\n    },\n    {\n      \"name\": \"pricetags-outline\",\n      \"tags\": [\n        \"$\",\n        \"commerce\",\n        \"items\",\n        \"money\",\n        \"outline\",\n        \"pricetags\",\n        \"shopping\"\n      ]\n    },\n    {\n      \"name\": \"pricetags-sharp\",\n      \"tags\": [\n        \"$\",\n        \"commerce\",\n        \"items\",\n        \"money\",\n        \"pricetags\",\n        \"sharp\",\n        \"shopping\"\n      ]\n    },\n    {\n      \"name\": \"print\",\n      \"tags\": [\n        \"fax\",\n        \"print\"\n      ]\n    },\n    {\n      \"name\": \"print-outline\",\n      \"tags\": [\n        \"fax\",\n        \"outline\",\n        \"print\"\n      ]\n    },\n    {\n      \"name\": \"print-sharp\",\n      \"tags\": [\n        \"fax\",\n        \"print\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"prism\",\n      \"tags\": [\n        \"prism\"\n      ]\n    },\n    {\n      \"name\": \"prism-outline\",\n      \"tags\": [\n        \"outline\",\n        \"prism\"\n      ]\n    },\n    {\n      \"name\": \"prism-sharp\",\n      \"tags\": [\n        \"prism\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"pulse\",\n      \"tags\": [\n        \"hot\",\n        \"live\",\n        \"pulse\",\n        \"rate\"\n      ]\n    },\n    {\n      \"name\": \"pulse-outline\",\n      \"tags\": [\n        \"hot\",\n        \"live\",\n        \"outline\",\n        \"pulse\",\n        \"rate\"\n      ]\n    },\n    {\n      \"name\": \"pulse-sharp\",\n      \"tags\": [\n        \"hot\",\n        \"live\",\n        \"pulse\",\n        \"rate\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"push\",\n      \"tags\": [\n        \"push\"\n      ]\n    },\n    {\n      \"name\": \"push-outline\",\n      \"tags\": [\n        \"outline\",\n        \"push\"\n      ]\n    },\n    {\n      \"name\": \"push-sharp\",\n      \"tags\": [\n        \"push\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"qr-code\",\n      \"tags\": [\n        \"code\",\n        \"qr\"\n      ]\n    },\n    {\n      \"name\": \"qr-code-outline\",\n      \"tags\": [\n        \"code\",\n        \"outline\",\n        \"qr\"\n      ]\n    },\n    {\n      \"name\": \"qr-code-sharp\",\n      \"tags\": [\n        \"code\",\n        \"qr\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"radio\",\n      \"tags\": [\n        \"music\",\n        \"radio\"\n      ]\n    },\n    {\n      \"name\": \"radio-button-off\",\n      \"tags\": [\n        \"button\",\n        \"off\",\n        \"radio\"\n      ]\n    },\n    {\n      \"name\": \"radio-button-off-outline\",\n      \"tags\": [\n        \"button\",\n        \"off\",\n        \"outline\",\n        \"radio\"\n      ]\n    },\n    {\n      \"name\": \"radio-button-off-sharp\",\n      \"tags\": [\n        \"button\",\n        \"off\",\n        \"radio\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"radio-button-on\",\n      \"tags\": [\n        \"button\",\n        \"on\",\n        \"radio\"\n      ]\n    },\n    {\n      \"name\": \"radio-button-on-outline\",\n      \"tags\": [\n        \"button\",\n        \"on\",\n        \"outline\",\n        \"radio\"\n      ]\n    },\n    {\n      \"name\": \"radio-button-on-sharp\",\n      \"tags\": [\n        \"button\",\n        \"on\",\n        \"radio\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"radio-outline\",\n      \"tags\": [\n        \"music\",\n        \"outline\",\n        \"radio\"\n      ]\n    },\n    {\n      \"name\": \"radio-sharp\",\n      \"tags\": [\n        \"music\",\n        \"radio\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"rainy\",\n      \"tags\": [\n        \"cloud\",\n        \"rainy\",\n        \"water\",\n        \"weather\",\n        \"whether\"\n      ]\n    },\n    {\n      \"name\": \"rainy-outline\",\n      \"tags\": [\n        \"cloud\",\n        \"outline\",\n        \"rainy\",\n        \"water\",\n        \"weather\",\n        \"whether\"\n      ]\n    },\n    {\n      \"name\": \"rainy-sharp\",\n      \"tags\": [\n        \"cloud\",\n        \"rainy\",\n        \"sharp\",\n        \"water\",\n        \"weather\",\n        \"whether\"\n      ]\n    },\n    {\n      \"name\": \"reader\",\n      \"tags\": [\n        \"reader\"\n      ]\n    },\n    {\n      \"name\": \"reader-outline\",\n      \"tags\": [\n        \"outline\",\n        \"reader\"\n      ]\n    },\n    {\n      \"name\": \"reader-sharp\",\n      \"tags\": [\n        \"reader\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"receipt\",\n      \"tags\": [\n        \"receipt\"\n      ]\n    },\n    {\n      \"name\": \"receipt-outline\",\n      \"tags\": [\n        \"outline\",\n        \"receipt\"\n      ]\n    },\n    {\n      \"name\": \"receipt-sharp\",\n      \"tags\": [\n        \"receipt\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"recording\",\n      \"tags\": [\n        \"film\",\n        \"recording\",\n        \"tape\",\n        \"voicemail\"\n      ]\n    },\n    {\n      \"name\": \"recording-outline\",\n      \"tags\": [\n        \"film\",\n        \"outline\",\n        \"recording\",\n        \"tape\",\n        \"voicemail\"\n      ]\n    },\n    {\n      \"name\": \"recording-sharp\",\n      \"tags\": [\n        \"film\",\n        \"recording\",\n        \"sharp\",\n        \"tape\",\n        \"voicemail\"\n      ]\n    },\n    {\n      \"name\": \"refresh\",\n      \"tags\": [\n        \"circle\",\n        \"refresh\",\n        \"reload\",\n        \"renew\",\n        \"reset\"\n      ]\n    },\n    {\n      \"name\": \"refresh-circle\",\n      \"tags\": [\n        \"circle\",\n        \"refresh\",\n        \"reload\",\n        \"renew\",\n        \"reset\"\n      ]\n    },\n    {\n      \"name\": \"refresh-circle-outline\",\n      \"tags\": [\n        \"circle\",\n        \"outline\",\n        \"refresh\",\n        \"reload\",\n        \"renew\",\n        \"reset\"\n      ]\n    },\n    {\n      \"name\": \"refresh-circle-sharp\",\n      \"tags\": [\n        \"circle\",\n        \"refresh\",\n        \"reload\",\n        \"renew\",\n        \"reset\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"refresh-outline\",\n      \"tags\": [\n        \"outline\",\n        \"refresh\"\n      ]\n    },\n    {\n      \"name\": \"refresh-sharp\",\n      \"tags\": [\n        \"circle\",\n        \"refresh\",\n        \"reload\",\n        \"renew\",\n        \"reset\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"reload\",\n      \"tags\": [\n        \"reload\"\n      ]\n    },\n    {\n      \"name\": \"reload-circle\",\n      \"tags\": [\n        \"circle\",\n        \"reload\"\n      ]\n    },\n    {\n      \"name\": \"reload-circle-outline\",\n      \"tags\": [\n        \"circle\",\n        \"outline\",\n        \"reload\"\n      ]\n    },\n    {\n      \"name\": \"reload-circle-sharp\",\n      \"tags\": [\n        \"circle\",\n        \"reload\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"reload-outline\",\n      \"tags\": [\n        \"outline\",\n        \"reload\"\n      ]\n    },\n    {\n      \"name\": \"reload-sharp\",\n      \"tags\": [\n        \"reload\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"remove\",\n      \"tags\": [\n        \"circle\",\n        \"minus\",\n        \"remove\",\n        \"subtract\"\n      ]\n    },\n    {\n      \"name\": \"remove-circle\",\n      \"tags\": [\n        \"circle\",\n        \"minus\",\n        \"remove\",\n        \"subtract\"\n      ]\n    },\n    {\n      \"name\": \"remove-circle-outline\",\n      \"tags\": [\n        \"circle\",\n        \"minus\",\n        \"outline\",\n        \"remove\",\n        \"subtract\"\n      ]\n    },\n    {\n      \"name\": \"remove-circle-sharp\",\n      \"tags\": [\n        \"circle\",\n        \"minus\",\n        \"remove\",\n        \"sharp\",\n        \"subtract\"\n      ]\n    },\n    {\n      \"name\": \"remove-outline\",\n      \"tags\": [\n        \"outline\",\n        \"remove\"\n      ]\n    },\n    {\n      \"name\": \"remove-sharp\",\n      \"tags\": [\n        \"circle\",\n        \"minus\",\n        \"remove\",\n        \"sharp\",\n        \"subtract\"\n      ]\n    },\n    {\n      \"name\": \"reorder-four\",\n      \"tags\": [\n        \"four\",\n        \"reorder\"\n      ]\n    },\n    {\n      \"name\": \"reorder-four-outline\",\n      \"tags\": [\n        \"four\",\n        \"outline\",\n        \"reorder\"\n      ]\n    },\n    {\n      \"name\": \"reorder-four-sharp\",\n      \"tags\": [\n        \"four\",\n        \"reorder\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"reorder-three\",\n      \"tags\": [\n        \"reorder\",\n        \"three\"\n      ]\n    },\n    {\n      \"name\": \"reorder-three-outline\",\n      \"tags\": [\n        \"outline\",\n        \"reorder\",\n        \"three\"\n      ]\n    },\n    {\n      \"name\": \"reorder-three-sharp\",\n      \"tags\": [\n        \"reorder\",\n        \"sharp\",\n        \"three\"\n      ]\n    },\n    {\n      \"name\": \"reorder-two\",\n      \"tags\": [\n        \"reorder\",\n        \"two\"\n      ]\n    },\n    {\n      \"name\": \"reorder-two-outline\",\n      \"tags\": [\n        \"outline\",\n        \"reorder\",\n        \"two\"\n      ]\n    },\n    {\n      \"name\": \"reorder-two-sharp\",\n      \"tags\": [\n        \"reorder\",\n        \"sharp\",\n        \"two\"\n      ]\n    },\n    {\n      \"name\": \"repeat\",\n      \"tags\": [\n        \"repeat\"\n      ]\n    },\n    {\n      \"name\": \"repeat-outline\",\n      \"tags\": [\n        \"outline\",\n        \"repeat\"\n      ]\n    },\n    {\n      \"name\": \"repeat-sharp\",\n      \"tags\": [\n        \"repeat\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"resize\",\n      \"tags\": [\n        \"resize\"\n      ]\n    },\n    {\n      \"name\": \"resize-outline\",\n      \"tags\": [\n        \"outline\",\n        \"resize\"\n      ]\n    },\n    {\n      \"name\": \"resize-sharp\",\n      \"tags\": [\n        \"resize\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"restaurant\",\n      \"tags\": [\n        \"eat\",\n        \"restaurant\"\n      ]\n    },\n    {\n      \"name\": \"restaurant-outline\",\n      \"tags\": [\n        \"eat\",\n        \"outline\",\n        \"restaurant\"\n      ]\n    },\n    {\n      \"name\": \"restaurant-sharp\",\n      \"tags\": [\n        \"eat\",\n        \"restaurant\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"return-down-back\",\n      \"tags\": [\n        \"back\",\n        \"down\",\n        \"left\",\n        \"return\"\n      ]\n    },\n    {\n      \"name\": \"return-down-back-outline\",\n      \"tags\": [\n        \"back\",\n        \"down\",\n        \"left\",\n        \"outline\",\n        \"return\"\n      ]\n    },\n    {\n      \"name\": \"return-down-back-sharp\",\n      \"tags\": [\n        \"back\",\n        \"down\",\n        \"left\",\n        \"return\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"return-down-forward\",\n      \"tags\": [\n        \"down\",\n        \"forward\",\n        \"return\",\n        \"right\"\n      ]\n    },\n    {\n      \"name\": \"return-down-forward-outline\",\n      \"tags\": [\n        \"down\",\n        \"forward\",\n        \"outline\",\n        \"return\",\n        \"right\"\n      ]\n    },\n    {\n      \"name\": \"return-down-forward-sharp\",\n      \"tags\": [\n        \"down\",\n        \"forward\",\n        \"return\",\n        \"right\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"return-up-back\",\n      \"tags\": [\n        \"back\",\n        \"left\",\n        \"return\",\n        \"up\"\n      ]\n    },\n    {\n      \"name\": \"return-up-back-outline\",\n      \"tags\": [\n        \"back\",\n        \"left\",\n        \"outline\",\n        \"return\",\n        \"up\"\n      ]\n    },\n    {\n      \"name\": \"return-up-back-sharp\",\n      \"tags\": [\n        \"back\",\n        \"left\",\n        \"return\",\n        \"sharp\",\n        \"up\"\n      ]\n    },\n    {\n      \"name\": \"return-up-forward\",\n      \"tags\": [\n        \"forward\",\n        \"return\",\n        \"right\",\n        \"up\"\n      ]\n    },\n    {\n      \"name\": \"return-up-forward-outline\",\n      \"tags\": [\n        \"forward\",\n        \"outline\",\n        \"return\",\n        \"right\",\n        \"up\"\n      ]\n    },\n    {\n      \"name\": \"return-up-forward-sharp\",\n      \"tags\": [\n        \"forward\",\n        \"return\",\n        \"right\",\n        \"sharp\",\n        \"up\"\n      ]\n    },\n    {\n      \"name\": \"ribbon\",\n      \"tags\": [\n        \"ribbon\"\n      ]\n    },\n    {\n      \"name\": \"ribbon-outline\",\n      \"tags\": [\n        \"outline\",\n        \"ribbon\"\n      ]\n    },\n    {\n      \"name\": \"ribbon-sharp\",\n      \"tags\": [\n        \"ribbon\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"rocket\",\n      \"tags\": [\n        \"rocket\"\n      ]\n    },\n    {\n      \"name\": \"rocket-outline\",\n      \"tags\": [\n        \"outline\",\n        \"rocket\"\n      ]\n    },\n    {\n      \"name\": \"rocket-sharp\",\n      \"tags\": [\n        \"rocket\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"rose\",\n      \"tags\": [\n        \"flower\",\n        \"rose\"\n      ]\n    },\n    {\n      \"name\": \"rose-outline\",\n      \"tags\": [\n        \"flower\",\n        \"outline\",\n        \"rose\"\n      ]\n    },\n    {\n      \"name\": \"rose-sharp\",\n      \"tags\": [\n        \"flower\",\n        \"rose\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"sad\",\n      \"tags\": [\n        \"bad\",\n        \"cry\",\n        \"no\",\n        \"sad\"\n      ]\n    },\n    {\n      \"name\": \"sad-outline\",\n      \"tags\": [\n        \"bad\",\n        \"cry\",\n        \"no\",\n        \"outline\",\n        \"sad\"\n      ]\n    },\n    {\n      \"name\": \"sad-sharp\",\n      \"tags\": [\n        \"bad\",\n        \"cry\",\n        \"no\",\n        \"sad\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"save\",\n      \"tags\": [\n        \"save\"\n      ]\n    },\n    {\n      \"name\": \"save-outline\",\n      \"tags\": [\n        \"outline\",\n        \"save\"\n      ]\n    },\n    {\n      \"name\": \"save-sharp\",\n      \"tags\": [\n        \"save\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"scale\",\n      \"tags\": [\n        \"scale\"\n      ]\n    },\n    {\n      \"name\": \"scale-outline\",\n      \"tags\": [\n        \"outline\",\n        \"scale\"\n      ]\n    },\n    {\n      \"name\": \"scale-sharp\",\n      \"tags\": [\n        \"scale\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"scan\",\n      \"tags\": [\n        \"scan\"\n      ]\n    },\n    {\n      \"name\": \"scan-circle\",\n      \"tags\": [\n        \"circle\",\n        \"scan\"\n      ]\n    },\n    {\n      \"name\": \"scan-circle-outline\",\n      \"tags\": [\n        \"circle\",\n        \"outline\",\n        \"scan\"\n      ]\n    },\n    {\n      \"name\": \"scan-circle-sharp\",\n      \"tags\": [\n        \"circle\",\n        \"scan\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"scan-outline\",\n      \"tags\": [\n        \"outline\",\n        \"scan\"\n      ]\n    },\n    {\n      \"name\": \"scan-sharp\",\n      \"tags\": [\n        \"scan\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"school\",\n      \"tags\": [\n        \"school\"\n      ]\n    },\n    {\n      \"name\": \"school-outline\",\n      \"tags\": [\n        \"outline\",\n        \"school\"\n      ]\n    },\n    {\n      \"name\": \"school-sharp\",\n      \"tags\": [\n        \"school\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"search\",\n      \"tags\": [\n        \"glass\",\n        \"magnifying\",\n        \"search\"\n      ]\n    },\n    {\n      \"name\": \"search-circle\",\n      \"tags\": [\n        \"circle\",\n        \"glass\",\n        \"magnifying\",\n        \"search\"\n      ]\n    },\n    {\n      \"name\": \"search-circle-outline\",\n      \"tags\": [\n        \"circle\",\n        \"glass\",\n        \"magnifying\",\n        \"outline\",\n        \"search\"\n      ]\n    },\n    {\n      \"name\": \"search-circle-sharp\",\n      \"tags\": [\n        \"circle\",\n        \"glass\",\n        \"magnifying\",\n        \"search\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"search-outline\",\n      \"tags\": [\n        \"glass\",\n        \"magnifying\",\n        \"outline\",\n        \"search\"\n      ]\n    },\n    {\n      \"name\": \"search-sharp\",\n      \"tags\": [\n        \"glass\",\n        \"magnifying\",\n        \"search\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"send\",\n      \"tags\": [\n        \"email\",\n        \"paper\",\n        \"send\"\n      ]\n    },\n    {\n      \"name\": \"send-outline\",\n      \"tags\": [\n        \"email\",\n        \"outline\",\n        \"paper\",\n        \"send\"\n      ]\n    },\n    {\n      \"name\": \"send-sharp\",\n      \"tags\": [\n        \"email\",\n        \"paper\",\n        \"send\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"server\",\n      \"tags\": [\n        \"server\"\n      ]\n    },\n    {\n      \"name\": \"server-outline\",\n      \"tags\": [\n        \"outline\",\n        \"server\"\n      ]\n    },\n    {\n      \"name\": \"server-sharp\",\n      \"tags\": [\n        \"server\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"settings\",\n      \"tags\": [\n        \"options\",\n        \"settings\"\n      ]\n    },\n    {\n      \"name\": \"settings-outline\",\n      \"tags\": [\n        \"options\",\n        \"outline\",\n        \"settings\"\n      ]\n    },\n    {\n      \"name\": \"settings-sharp\",\n      \"tags\": [\n        \"options\",\n        \"settings\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"shapes\",\n      \"tags\": [\n        \"shapes\"\n      ]\n    },\n    {\n      \"name\": \"shapes-outline\",\n      \"tags\": [\n        \"outline\",\n        \"shapes\"\n      ]\n    },\n    {\n      \"name\": \"shapes-sharp\",\n      \"tags\": [\n        \"shapes\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"share\",\n      \"tags\": [\n        \"share\"\n      ]\n    },\n    {\n      \"name\": \"share-outline\",\n      \"tags\": [\n        \"outline\",\n        \"share\"\n      ]\n    },\n    {\n      \"name\": \"share-sharp\",\n      \"tags\": [\n        \"share\",\n        \"sharp\"\n      ]\n    },\n    {\n      \"name\": \"share-social\",\n      \"tags\": [\n        \"share\",\n        \"social\"\n      ]\n    },\n    {\n      \"name\": \"share-social-outline\",\n      \"tags\": [\n        \"outline\",\n        \"share\",\n        \"social\"\n      ]\n    },\n    {\n      \"name\": \"share-social-sharp\",\n      \"tags\": [\n        \"share\",\n        \"sharp\",\n        \"social\"\n      ]\n    },\n    {\n      \"name\": \"shield\",\n      \"tags\": [\n        \"shield\"\n      ]\n    },\n    {\n      \"name\": \"shield-checkmark\",\n      \"tags\": [\n        \"checkmark\",\n        \"shield\"\n      ]\n    },\n    {\n      \"name\": \"shield-checkmark-outline\",\n      \"tags\": [\n        \"checkmark\",\n        \"outline\",\n        \"shield\"\n      ]\n    },\n    {\n      \"name\": \"shield-checkmark-sharp\",\n      \"tags\": [\n        \"checkmark\",\n        \"sharp\",\n        \"shield\"\n      ]\n    },\n    {\n      \"name\": \"shield-half\",\n      \"tags\": [\n        \"half\",\n        \"shield\"\n      ]\n    },\n    {\n      \"name\": \"shield-half-outline\",\n      \"tags\": [\n        \"half\",\n        \"outline\",\n        \"shield\"\n      ]\n    },\n    {\n      \"name\": \"shield-half-sharp\",\n      \"tags\": [\n        \"half\",\n        \"sharp\",\n        \"shield\"\n      ]\n    },\n    {\n      \"name\": \"shield-outline\",\n      \"tags\": [\n        \"outline\",\n        \"shield\"\n      ]\n    },\n    {\n      \"name\": \"shield-sharp\",\n      \"tags\": [\n        \"sharp\",\n        \"shield\"\n      ]\n    },\n    {\n      \"name\": \"shirt\",\n      \"tags\": [\n        \"shirt\"\n      ]\n    },\n    {\n      \"name\": \"shirt-outline\",\n      \"tags\": [\n        \"outline\",\n        \"shirt\"\n      ]\n    },\n    {\n      \"name\": \"shirt-sharp\",\n      \"tags\": [\n        \"sharp\",\n        \"shirt\"\n      ]\n    },\n    {\n      \"name\": \"shuffle\",\n      \"tags\": [\n        \"random\",\n        \"shuffle\"\n      ]\n    },\n    {\n      \"name\": \"shuffle-outline\",\n      \"tags\": [\n        \"outline\",\n        \"shuffle\"\n      ]\n    },\n    {\n      \"name\": \"shuffle-sharp\",\n      \"tags\": [\n        \"random\",\n        \"sharp\",\n        \"shuffle\"\n      ]\n    },\n    {\n      \"name\": \"skull\",\n      \"tags\": [\n        \"skull\"\n      ]\n    },\n    {\n      \"name\": \"skull-outline\",\n      \"tags\": [\n        \"outline\",\n        \"skull\"\n      ]\n    },\n    {\n      \"name\": \"skull-sharp\",\n      \"tags\": [\n        \"sharp\",\n        \"skull\"\n      ]\n    },\n    {\n      \"name\": \"snow\",\n      \"tags\": [\n        \"cold\",\n        \"snow\"\n      ]\n    },\n    {\n      \"name\": \"snow-outline\",\n      \"tags\": [\n        \"cold\",\n        \"outline\",\n        \"snow\"\n      ]\n    },\n    {\n      \"name\": \"snow-sharp\",\n      \"tags\": [\n        \"cold\",\n        \"sharp\",\n        \"snow\"\n      ]\n    },\n    {\n      \"name\": \"sparkles\",\n      \"tags\": [\n        \"sparkles\"\n      ]\n    },\n    {\n      \"name\": \"sparkles-outline\",\n      \"tags\": [\n        \"outline\",\n        \"sparkles\"\n      ]\n    },\n    {\n      \"name\": \"sparkles-sharp\",\n      \"tags\": [\n        \"sharp\",\n        \"sparkles\"\n      ]\n    },\n    {\n      \"name\": \"speedometer\",\n      \"tags\": [\n        \"drive\",\n        \"level\",\n        \"speed\",\n        \"speedometer\"\n      ]\n    },\n    {\n      \"name\": \"speedometer-outline\",\n      \"tags\": [\n        \"drive\",\n        \"level\",\n        \"outline\",\n        \"speed\",\n        \"speedometer\"\n      ]\n    },\n    {\n      \"name\": \"speedometer-sharp\",\n      \"tags\": [\n        \"drive\",\n        \"level\",\n        \"sharp\",\n        \"speed\",\n        \"speedometer\"\n      ]\n    },\n    {\n      \"name\": \"square\",\n      \"tags\": [\n        \"square\"\n      ]\n    },\n    {\n      \"name\": \"square-outline\",\n      \"tags\": [\n        \"outline\",\n        \"square\"\n      ]\n    },\n    {\n      \"name\": \"square-sharp\",\n      \"tags\": [\n        \"sharp\",\n        \"square\"\n      ]\n    },\n    {\n      \"name\": \"star\",\n      \"tags\": [\n        \"favorite\",\n        \"star\"\n      ]\n    },\n    {\n      \"name\": \"star-half\",\n      \"tags\": [\n        \"favorite\",\n        \"half\",\n        \"rate\",\n        \"star\"\n      ]\n    },\n    {\n      \"name\": \"star-half-outline\",\n      \"tags\": [\n        \"half\",\n        \"outline\",\n        \"star\"\n      ]\n    },\n    {\n      \"name\": \"star-half-sharp\",\n      \"tags\": [\n        \"favorite\",\n        \"half\",\n        \"rate\",\n        \"sharp\",\n        \"star\"\n      ]\n    },\n    {\n      \"name\": \"star-outline\",\n      \"tags\": [\n        \"favorite\",\n        \"outline\",\n        \"star\"\n      ]\n    },\n    {\n      \"name\": \"star-sharp\",\n      \"tags\": [\n        \"favorite\",\n        \"sharp\",\n        \"star\"\n      ]\n    },\n    {\n      \"name\": \"stats-chart\",\n      \"tags\": [\n        \"chart\",\n        \"stats\"\n      ]\n    },\n    {\n      \"name\": \"stats-chart-outline\",\n      \"tags\": [\n        \"chart\",\n        \"outline\",\n        \"stats\"\n      ]\n    },\n    {\n      \"name\": \"stats-chart-sharp\",\n      \"tags\": [\n        \"chart\",\n        \"sharp\",\n        \"stats\"\n      ]\n    },\n    {\n      \"name\": \"stop\",\n      \"tags\": [\n        \"stop\"\n      ]\n    },\n    {\n      \"name\": \"stop-circle\",\n      \"tags\": [\n        \"circle\",\n        \"stop\"\n      ]\n    },\n    {\n      \"name\": \"stop-circle-outline\",\n      \"tags\": [\n        \"circle\",\n        \"outline\",\n        \"stop\"\n      ]\n    },\n    {\n      \"name\": \"stop-circle-sharp\",\n      \"tags\": [\n        \"circle\",\n        \"sharp\",\n        \"stop\"\n      ]\n    },\n    {\n      \"name\": \"stop-outline\",\n      \"tags\": [\n        \"outline\",\n        \"stop\"\n      ]\n    },\n    {\n      \"name\": \"stop-sharp\",\n      \"tags\": [\n        \"sharp\",\n        \"stop\"\n      ]\n    },\n    {\n      \"name\": \"stopwatch\",\n      \"tags\": [\n        \"stopwatch\",\n        \"time\"\n      ]\n    },\n    {\n      \"name\": \"stopwatch-outline\",\n      \"tags\": [\n        \"outline\",\n        \"stopwatch\",\n        \"time\"\n      ]\n    },\n    {\n      \"name\": \"stopwatch-sharp\",\n      \"tags\": [\n        \"sharp\",\n        \"stopwatch\",\n        \"time\"\n      ]\n    },\n    {\n      \"name\": \"storefront\",\n      \"tags\": [\n        \"storefront\"\n      ]\n    },\n    {\n      \"name\": \"storefront-outline\",\n      \"tags\": [\n        \"outline\",\n        \"storefront\"\n      ]\n    },\n    {\n      \"name\": \"storefront-sharp\",\n      \"tags\": [\n        \"sharp\",\n        \"storefront\"\n      ]\n    },\n    {\n      \"name\": \"subway\",\n      \"tags\": [\n        \"subway\"\n      ]\n    },\n    {\n      \"name\": \"subway-outline\",\n      \"tags\": [\n        \"outline\",\n        \"subway\"\n      ]\n    },\n    {\n      \"name\": \"subway-sharp\",\n      \"tags\": [\n        \"sharp\",\n        \"subway\"\n      ]\n    },\n    {\n      \"name\": \"sunny\",\n      \"tags\": [\n        \"light\",\n        \"sky\",\n        \"sunny\",\n        \"weather\",\n        \"whether\"\n      ]\n    },\n    {\n      \"name\": \"sunny-outline\",\n      \"tags\": [\n        \"light\",\n        \"outline\",\n        \"sky\",\n        \"sunny\",\n        \"weather\",\n        \"whether\"\n      ]\n    },\n    {\n      \"name\": \"sunny-sharp\",\n      \"tags\": [\n        \"light\",\n        \"sharp\",\n        \"sky\",\n        \"sunny\",\n        \"weather\",\n        \"whether\"\n      ]\n    },\n    {\n      \"name\": \"swap-horizontal\",\n      \"tags\": [\n        \"horizontal\",\n        \"swap\"\n      ]\n    },\n    {\n      \"name\": \"swap-horizontal-outline\",\n      \"tags\": [\n        \"horizontal\",\n        \"outline\",\n        \"swap\"\n      ]\n    },\n    {\n      \"name\": \"swap-horizontal-sharp\",\n      \"tags\": [\n        \"horizontal\",\n        \"sharp\",\n        \"swap\"\n      ]\n    },\n    {\n      \"name\": \"swap-vertical\",\n      \"tags\": [\n        \"swap\",\n        \"vertical\"\n      ]\n    },\n    {\n      \"name\": \"swap-vertical-outline\",\n      \"tags\": [\n        \"outline\",\n        \"swap\",\n        \"vertical\"\n      ]\n    },\n    {\n      \"name\": \"swap-vertical-sharp\",\n      \"tags\": [\n        \"sharp\",\n        \"swap\",\n        \"vertical\"\n      ]\n    },\n    {\n      \"name\": \"sync\",\n      \"tags\": [\n        \"sync\"\n      ]\n    },\n    {\n      \"name\": \"sync-circle\",\n      \"tags\": [\n        \"circle\",\n        \"sync\"\n      ]\n    },\n    {\n      \"name\": \"sync-circle-outline\",\n      \"tags\": [\n        \"circle\",\n        \"outline\",\n        \"sync\"\n      ]\n    },\n    {\n      \"name\": \"sync-circle-sharp\",\n      \"tags\": [\n        \"circle\",\n        \"sharp\",\n        \"sync\"\n      ]\n    },\n    {\n      \"name\": \"sync-outline\",\n      \"tags\": [\n        \"outline\",\n        \"sync\"\n      ]\n    },\n    {\n      \"name\": \"sync-sharp\",\n      \"tags\": [\n        \"sharp\",\n        \"sync\"\n      ]\n    },\n    {\n      \"name\": \"tablet-landscape\",\n      \"tags\": [\n        \"landscape\",\n        \"tablet\"\n      ]\n    },\n    {\n      \"name\": \"tablet-landscape-outline\",\n      \"tags\": [\n        \"landscape\",\n        \"outline\",\n        \"tablet\"\n      ]\n    },\n    {\n      \"name\": \"tablet-landscape-sharp\",\n      \"tags\": [\n        \"landscape\",\n        \"sharp\",\n        \"tablet\"\n      ]\n    },\n    {\n      \"name\": \"tablet-portrait\",\n      \"tags\": [\n        \"portrait\",\n        \"tablet\"\n      ]\n    },\n    {\n      \"name\": \"tablet-portrait-outline\",\n      \"tags\": [\n        \"outline\",\n        \"portrait\",\n        \"tablet\"\n      ]\n    },\n    {\n      \"name\": \"tablet-portrait-sharp\",\n      \"tags\": [\n        \"portrait\",\n        \"sharp\",\n        \"tablet\"\n      ]\n    },\n    {\n      \"name\": \"telescope\",\n      \"tags\": [\n        \"telescope\"\n      ]\n    },\n    {\n      \"name\": \"telescope-outline\",\n      \"tags\": [\n        \"outline\",\n        \"telescope\"\n      ]\n    },\n    {\n      \"name\": \"telescope-sharp\",\n      \"tags\": [\n        \"sharp\",\n        \"telescope\"\n      ]\n    },\n    {\n      \"name\": \"tennisball\",\n      \"tags\": [\n        \"tennisball\"\n      ]\n    },\n    {\n      \"name\": \"tennisball-outline\",\n      \"tags\": [\n        \"outline\",\n        \"tennisball\"\n      ]\n    },\n    {\n      \"name\": \"tennisball-sharp\",\n      \"tags\": [\n        \"sharp\",\n        \"tennisball\"\n      ]\n    },\n    {\n      \"name\": \"terminal\",\n      \"tags\": [\n        \"terminal\"\n      ]\n    },\n    {\n      \"name\": \"terminal-outline\",\n      \"tags\": [\n        \"outline\",\n        \"terminal\"\n      ]\n    },\n    {\n      \"name\": \"terminal-sharp\",\n      \"tags\": [\n        \"sharp\",\n        \"terminal\"\n      ]\n    },\n    {\n      \"name\": \"text\",\n      \"tags\": [\n        \"text\"\n      ]\n    },\n    {\n      \"name\": \"text-outline\",\n      \"tags\": [\n        \"outline\",\n        \"text\"\n      ]\n    },\n    {\n      \"name\": \"text-sharp\",\n      \"tags\": [\n        \"sharp\",\n        \"text\"\n      ]\n    },\n    {\n      \"name\": \"thermometer\",\n      \"tags\": [\n        \"cold\",\n        \"heat\",\n        \"hot\",\n        \"mercury\",\n        \"temperature\",\n        \"thermometer\"\n      ]\n    },\n    {\n      \"name\": \"thermometer-outline\",\n      \"tags\": [\n        \"cold\",\n        \"heat\",\n        \"hot\",\n        \"mercury\",\n        \"outline\",\n        \"temperature\",\n        \"thermometer\"\n      ]\n    },\n    {\n      \"name\": \"thermometer-sharp\",\n      \"tags\": [\n        \"cold\",\n        \"heat\",\n        \"hot\",\n        \"mercury\",\n        \"sharp\",\n        \"temperature\",\n        \"thermometer\"\n      ]\n    },\n    {\n      \"name\": \"thumbs-down\",\n      \"tags\": [\n        \"down\",\n        \"thumbs\"\n      ]\n    },\n    {\n      \"name\": \"thumbs-down-outline\",\n      \"tags\": [\n        \"down\",\n        \"outline\",\n        \"thumbs\"\n      ]\n    },\n    {\n      \"name\": \"thumbs-down-sharp\",\n      \"tags\": [\n        \"down\",\n        \"sharp\",\n        \"thumbs\"\n      ]\n    },\n    {\n      \"name\": \"thumbs-up\",\n      \"tags\": [\n        \"thumbs\",\n        \"up\"\n      ]\n    },\n    {\n      \"name\": \"thumbs-up-outline\",\n      \"tags\": [\n        \"outline\",\n        \"thumbs\",\n        \"up\"\n      ]\n    },\n    {\n      \"name\": \"thumbs-up-sharp\",\n      \"tags\": [\n        \"sharp\",\n        \"thumbs\",\n        \"up\"\n      ]\n    },\n    {\n      \"name\": \"thunderstorm\",\n      \"tags\": [\n        \"cloudy\",\n        \"lightning\",\n        \"overcast\",\n        \"rain\",\n        \"sky\",\n        \"storm\",\n        \"thunderstorm\",\n        \"weather\",\n        \"whether\"\n      ]\n    },\n    {\n      \"name\": \"thunderstorm-outline\",\n      \"tags\": [\n        \"cloudy\",\n        \"lightning\",\n        \"outline\",\n        \"overcast\",\n        \"rain\",\n        \"sky\",\n        \"storm\",\n        \"thunderstorm\",\n        \"weather\",\n        \"whether\"\n      ]\n    },\n    {\n      \"name\": \"thunderstorm-sharp\",\n      \"tags\": [\n        \"cloudy\",\n        \"lightning\",\n        \"overcast\",\n        \"rain\",\n        \"sharp\",\n        \"sky\",\n        \"storm\",\n        \"thunderstorm\",\n        \"weather\",\n        \"whether\"\n      ]\n    },\n    {\n      \"name\": \"ticket\",\n      \"tags\": [\n        \"ticket\"\n      ]\n    },\n    {\n      \"name\": \"ticket-outline\",\n      \"tags\": [\n        \"outline\",\n        \"ticket\"\n      ]\n    },\n    {\n      \"name\": \"ticket-sharp\",\n      \"tags\": [\n        \"sharp\",\n        \"ticket\"\n      ]\n    },\n    {\n      \"name\": \"time\",\n      \"tags\": [\n        \"clock\",\n        \"hour\",\n        \"minute\",\n        \"second\",\n        \"time\",\n        \"watch\"\n      ]\n    },\n    {\n      \"name\": \"time-outline\",\n      \"tags\": [\n        \"clock\",\n        \"hour\",\n        \"minute\",\n        \"outline\",\n        \"second\",\n        \"time\",\n        \"watch\"\n      ]\n    },\n    {\n      \"name\": \"time-sharp\",\n      \"tags\": [\n        \"clock\",\n        \"hour\",\n        \"minute\",\n        \"second\",\n        \"sharp\",\n        \"time\",\n        \"watch\"\n      ]\n    },\n    {\n      \"name\": \"timer\",\n      \"tags\": [\n        \"clock\",\n        \"timer\"\n      ]\n    },\n    {\n      \"name\": \"timer-outline\",\n      \"tags\": [\n        \"clock\",\n        \"outline\",\n        \"timer\"\n      ]\n    },\n    {\n      \"name\": \"timer-sharp\",\n      \"tags\": [\n        \"clock\",\n        \"sharp\",\n        \"timer\"\n      ]\n    },\n    {\n      \"name\": \"today\",\n      \"tags\": [\n        \"today\"\n      ]\n    },\n    {\n      \"name\": \"today-outline\",\n      \"tags\": [\n        \"outline\",\n        \"today\"\n      ]\n    },\n    {\n      \"name\": \"today-sharp\",\n      \"tags\": [\n        \"sharp\",\n        \"today\"\n      ]\n    },\n    {\n      \"name\": \"toggle\",\n      \"tags\": [\n        \"switch\",\n        \"toggle\"\n      ]\n    },\n    {\n      \"name\": \"toggle-outline\",\n      \"tags\": [\n        \"outline\",\n        \"switch\",\n        \"toggle\"\n      ]\n    },\n    {\n      \"name\": \"toggle-sharp\",\n      \"tags\": [\n        \"sharp\",\n        \"switch\",\n        \"toggle\"\n      ]\n    },\n    {\n      \"name\": \"trail-sign\",\n      \"tags\": [\n        \"sign\",\n        \"trail\"\n      ]\n    },\n    {\n      \"name\": \"trail-sign-outline\",\n      \"tags\": [\n        \"outline\",\n        \"sign\",\n        \"trail\"\n      ]\n    },\n    {\n      \"name\": \"trail-sign-sharp\",\n      \"tags\": [\n        \"sharp\",\n        \"sign\",\n        \"trail\"\n      ]\n    },\n    {\n      \"name\": \"train\",\n      \"tags\": [\n        \"train\"\n      ]\n    },\n    {\n      \"name\": \"train-outline\",\n      \"tags\": [\n        \"outline\",\n        \"train\"\n      ]\n    },\n    {\n      \"name\": \"train-sharp\",\n      \"tags\": [\n        \"sharp\",\n        \"train\"\n      ]\n    },\n    {\n      \"name\": \"transgender\",\n      \"tags\": [\n        \"transgender\"\n      ]\n    },\n    {\n      \"name\": \"transgender-outline\",\n      \"tags\": [\n        \"outline\",\n        \"transgender\"\n      ]\n    },\n    {\n      \"name\": \"transgender-sharp\",\n      \"tags\": [\n        \"sharp\",\n        \"transgender\"\n      ]\n    },\n    {\n      \"name\": \"trash\",\n      \"tags\": [\n        \"close\",\n        \"delete\",\n        \"remove\",\n        \"trash\"\n      ]\n    },\n    {\n      \"name\": \"trash-bin\",\n      \"tags\": [\n        \"bin\",\n        \"trash\"\n      ]\n    },\n    {\n      \"name\": \"trash-bin-outline\",\n      \"tags\": [\n        \"bin\",\n        \"outline\",\n        \"trash\"\n      ]\n    },\n    {\n      \"name\": \"trash-bin-sharp\",\n      \"tags\": [\n        \"bin\",\n        \"sharp\",\n        \"trash\"\n      ]\n    },\n    {\n      \"name\": \"trash-outline\",\n      \"tags\": [\n        \"close\",\n        \"delete\",\n        \"outline\",\n        \"remove\",\n        \"trash\"\n      ]\n    },\n    {\n      \"name\": \"trash-sharp\",\n      \"tags\": [\n        \"close\",\n        \"delete\",\n        \"remove\",\n        \"sharp\",\n        \"trash\"\n      ]\n    },\n    {\n      \"name\": \"trending-down\",\n      \"tags\": [\n        \"down\",\n        \"trending\"\n      ]\n    },\n    {\n      \"name\": \"trending-down-outline\",\n      \"tags\": [\n        \"down\",\n        \"outline\",\n        \"trending\"\n      ]\n    },\n    {\n      \"name\": \"trending-down-sharp\",\n      \"tags\": [\n        \"down\",\n        \"sharp\",\n        \"trending\"\n      ]\n    },\n    {\n      \"name\": \"trending-up\",\n      \"tags\": [\n        \"trending\",\n        \"up\"\n      ]\n    },\n    {\n      \"name\": \"trending-up-outline\",\n      \"tags\": [\n        \"outline\",\n        \"trending\",\n        \"up\"\n      ]\n    },\n    {\n      \"name\": \"trending-up-sharp\",\n      \"tags\": [\n        \"sharp\",\n        \"trending\",\n        \"up\"\n      ]\n    },\n    {\n      \"name\": \"triangle\",\n      \"tags\": [\n        \"triangle\"\n      ]\n    },\n    {\n      \"name\": \"triangle-outline\",\n      \"tags\": [\n        \"outline\",\n        \"triangle\"\n      ]\n    },\n    {\n      \"name\": \"triangle-sharp\",\n      \"tags\": [\n        \"sharp\",\n        \"triangle\"\n      ]\n    },\n    {\n      \"name\": \"trophy\",\n      \"tags\": [\n        \"award\",\n        \"compete\",\n        \"competition\",\n        \"lose\",\n        \"trophy\",\n        \"win\"\n      ]\n    },\n    {\n      \"name\": \"trophy-outline\",\n      \"tags\": [\n        \"award\",\n        \"compete\",\n        \"competition\",\n        \"lose\",\n        \"outline\",\n        \"trophy\",\n        \"win\"\n      ]\n    },\n    {\n      \"name\": \"trophy-sharp\",\n      \"tags\": [\n        \"award\",\n        \"compete\",\n        \"competition\",\n        \"lose\",\n        \"sharp\",\n        \"trophy\",\n        \"win\"\n      ]\n    },\n    {\n      \"name\": \"tv\",\n      \"tags\": [\n        \"television\",\n        \"tv\"\n      ]\n    },\n    {\n      \"name\": \"tv-outline\",\n      \"tags\": [\n        \"outline\",\n        \"television\",\n        \"tv\"\n      ]\n    },\n    {\n      \"name\": \"tv-sharp\",\n      \"tags\": [\n        \"sharp\",\n        \"television\",\n        \"tv\"\n      ]\n    },\n    {\n      \"name\": \"umbrella\",\n      \"tags\": [\n        \"dry\",\n        \"rain\",\n        \"shelter\",\n        \"umbrella\",\n        \"wet\"\n      ]\n    },\n    {\n      \"name\": \"umbrella-outline\",\n      \"tags\": [\n        \"dry\",\n        \"outline\",\n        \"rain\",\n        \"shelter\",\n        \"umbrella\",\n        \"wet\"\n      ]\n    },\n    {\n      \"name\": \"umbrella-sharp\",\n      \"tags\": [\n        \"dry\",\n        \"rain\",\n        \"sharp\",\n        \"shelter\",\n        \"umbrella\",\n        \"wet\"\n      ]\n    },\n    {\n      \"name\": \"unlink\",\n      \"tags\": [\n        \"unlink\"\n      ]\n    },\n    {\n      \"name\": \"unlink-outline\",\n      \"tags\": [\n        \"outline\",\n        \"unlink\"\n      ]\n    },\n    {\n      \"name\": \"unlink-sharp\",\n      \"tags\": [\n        \"sharp\",\n        \"unlink\"\n      ]\n    },\n    {\n      \"name\": \"videocam\",\n      \"tags\": [\n        \"camera\",\n        \"film\",\n        \"movie\",\n        \"videocam\"\n      ]\n    },\n    {\n      \"name\": \"videocam-off\",\n      \"tags\": [\n        \"off\",\n        \"videocam\"\n      ]\n    },\n    {\n      \"name\": \"videocam-off-outline\",\n      \"tags\": [\n        \"off\",\n        \"outline\",\n        \"videocam\"\n      ]\n    },\n    {\n      \"name\": \"videocam-off-sharp\",\n      \"tags\": [\n        \"off\",\n        \"sharp\",\n        \"videocam\"\n      ]\n    },\n    {\n      \"name\": \"videocam-outline\",\n      \"tags\": [\n        \"camera\",\n        \"film\",\n        \"movie\",\n        \"outline\",\n        \"videocam\"\n      ]\n    },\n    {\n      \"name\": \"videocam-sharp\",\n      \"tags\": [\n        \"camera\",\n        \"film\",\n        \"movie\",\n        \"sharp\",\n        \"videocam\"\n      ]\n    },\n    {\n      \"name\": \"volume-high\",\n      \"tags\": [\n        \"high\",\n        \"volume\"\n      ]\n    },\n    {\n      \"name\": \"volume-high-outline\",\n      \"tags\": [\n        \"high\",\n        \"outline\",\n        \"volume\"\n      ]\n    },\n    {\n      \"name\": \"volume-high-sharp\",\n      \"tags\": [\n        \"high\",\n        \"sharp\",\n        \"volume\"\n      ]\n    },\n    {\n      \"name\": \"volume-low\",\n      \"tags\": [\n        \"low\",\n        \"volume\"\n      ]\n    },\n    {\n      \"name\": \"volume-low-outline\",\n      \"tags\": [\n        \"low\",\n        \"outline\",\n        \"volume\"\n      ]\n    },\n    {\n      \"name\": \"volume-low-sharp\",\n      \"tags\": [\n        \"low\",\n        \"sharp\",\n        \"volume\"\n      ]\n    },\n    {\n      \"name\": \"volume-medium\",\n      \"tags\": [\n        \"medium\",\n        \"volume\"\n      ]\n    },\n    {\n      \"name\": \"volume-medium-outline\",\n      \"tags\": [\n        \"medium\",\n        \"outline\",\n        \"volume\"\n      ]\n    },\n    {\n      \"name\": \"volume-medium-sharp\",\n      \"tags\": [\n        \"medium\",\n        \"sharp\",\n        \"volume\"\n      ]\n    },\n    {\n      \"name\": \"volume-mute\",\n      \"tags\": [\n        \"mute\",\n        \"sound\",\n        \"volume\"\n      ]\n    },\n    {\n      \"name\": \"volume-mute-outline\",\n      \"tags\": [\n        \"mute\",\n        \"outline\",\n        \"sound\",\n        \"volume\"\n      ]\n    },\n    {\n      \"name\": \"volume-mute-sharp\",\n      \"tags\": [\n        \"mute\",\n        \"sharp\",\n        \"sound\",\n        \"volume\"\n      ]\n    },\n    {\n      \"name\": \"volume-off\",\n      \"tags\": [\n        \"off\",\n        \"volume\"\n      ]\n    },\n    {\n      \"name\": \"volume-off-outline\",\n      \"tags\": [\n        \"off\",\n        \"outline\",\n        \"volume\"\n      ]\n    },\n    {\n      \"name\": \"volume-off-sharp\",\n      \"tags\": [\n        \"off\",\n        \"sharp\",\n        \"volume\"\n      ]\n    },\n    {\n      \"name\": \"walk\",\n      \"tags\": [\n        \"walk\"\n      ]\n    },\n    {\n      \"name\": \"walk-outline\",\n      \"tags\": [\n        \"outline\",\n        \"walk\"\n      ]\n    },\n    {\n      \"name\": \"walk-sharp\",\n      \"tags\": [\n        \"sharp\",\n        \"walk\"\n      ]\n    },\n    {\n      \"name\": \"wallet\",\n      \"tags\": [\n        \"cash\",\n        \"money\",\n        \"wallet\"\n      ]\n    },\n    {\n      \"name\": \"wallet-outline\",\n      \"tags\": [\n        \"cash\",\n        \"money\",\n        \"outline\",\n        \"wallet\"\n      ]\n    },\n    {\n      \"name\": \"wallet-sharp\",\n      \"tags\": [\n        \"cash\",\n        \"money\",\n        \"sharp\",\n        \"wallet\"\n      ]\n    },\n    {\n      \"name\": \"warning\",\n      \"tags\": [\n        \"warning\"\n      ]\n    },\n    {\n      \"name\": \"warning-outline\",\n      \"tags\": [\n        \"outline\",\n        \"warning\"\n      ]\n    },\n    {\n      \"name\": \"warning-sharp\",\n      \"tags\": [\n        \"sharp\",\n        \"warning\"\n      ]\n    },\n    {\n      \"name\": \"watch\",\n      \"tags\": [\n        \"watch\"\n      ]\n    },\n    {\n      \"name\": \"watch-outline\",\n      \"tags\": [\n        \"outline\",\n        \"watch\"\n      ]\n    },\n    {\n      \"name\": \"watch-sharp\",\n      \"tags\": [\n        \"sharp\",\n        \"watch\"\n      ]\n    },\n    {\n      \"name\": \"water\",\n      \"tags\": [\n        \"water\"\n      ]\n    },\n    {\n      \"name\": \"water-outline\",\n      \"tags\": [\n        \"outline\",\n        \"water\"\n      ]\n    },\n    {\n      \"name\": \"water-sharp\",\n      \"tags\": [\n        \"sharp\",\n        \"water\"\n      ]\n    },\n    {\n      \"name\": \"wifi\",\n      \"tags\": [\n        \"bars\",\n        \"connection\",\n        \"internet\",\n        \"wifi\"\n      ]\n    },\n    {\n      \"name\": \"wifi-outline\",\n      \"tags\": [\n        \"bars\",\n        \"connection\",\n        \"internet\",\n        \"outline\",\n        \"wifi\"\n      ]\n    },\n    {\n      \"name\": \"wifi-sharp\",\n      \"tags\": [\n        \"bars\",\n        \"connection\",\n        \"internet\",\n        \"sharp\",\n        \"wifi\"\n      ]\n    },\n    {\n      \"name\": \"wine\",\n      \"tags\": [\n        \"glass\",\n        \"wine\"\n      ]\n    },\n    {\n      \"name\": \"wine-outline\",\n      \"tags\": [\n        \"glass\",\n        \"outline\",\n        \"wine\"\n      ]\n    },\n    {\n      \"name\": \"wine-sharp\",\n      \"tags\": [\n        \"glass\",\n        \"sharp\",\n        \"wine\"\n      ]\n    },\n    {\n      \"name\": \"woman\",\n      \"tags\": [\n        \"dudette\",\n        \"female\",\n        \"girl\",\n        \"lady\",\n        \"woman\"\n      ]\n    },\n    {\n      \"name\": \"woman-outline\",\n      \"tags\": [\n        \"dudette\",\n        \"female\",\n        \"girl\",\n        \"lady\",\n        \"outline\",\n        \"woman\"\n      ]\n    },\n    {\n      \"name\": \"woman-sharp\",\n      \"tags\": [\n        \"dudette\",\n        \"female\",\n        \"girl\",\n        \"lady\",\n        \"sharp\",\n        \"woman\"\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": "src/index.html",
    "content": "<!DOCTYPE html>\n<html dir=\"ltr\" lang=\"en\" mode=\"ios\">\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=5.0\" />\n    <title>Ionicons Icon Component</title>\n    <script type=\"module\" src=\"/build/ionicons.esm.js\"></script>\n    <script nomodule src=\"/build/ionicons.js\"></script>\n  </head>\n\n  <body>\n    <h1>Ionicons</h1>\n\n    <h2>Default</h2>\n    <ion-icon name=\"cellular\"></ion-icon>\n    <ion-icon name=\"at\"></ion-icon>\n    <ion-icon name=\"call\"></ion-icon>\n    <ion-icon name=\"football\"></ion-icon>\n    <ion-icon name=\"analytics\"></ion-icon>\n    <ion-icon name=\"grid\"></ion-icon>\n    <ion-icon name=\"funnel\"></ion-icon>\n    <ion-icon name=\"watch\"></ion-icon>\n    <ion-icon name=\"add-circle-outline\"></ion-icon>\n\n    <h2>Mode from html ios mode attribute</h2>\n    <ion-icon md=\"logo-android\" ios=\"logo-apple\"></ion-icon>\n    <ion-icon md=\"logo-android\" ios=\"logo-apple\"></ion-icon>\n\n    <h2>Mode set on icon</h2>\n    <ion-icon mode=\"ios\" md=\"logo-android\" ios=\"logo-apple\"></ion-icon>\n    <ion-icon mode=\"md\" md=\"logo-android\" ios=\"logo-apple\"></ion-icon>\n\n    <h2>Colors</h2>\n    <ion-icon color=\"primary\" name=\"cellular\"></ion-icon>\n    <ion-icon color=\"secondary\" name=\"at\"></ion-icon>\n    <ion-icon color=\"tertiary\" name=\"call\"></ion-icon>\n    <ion-icon color=\"success\" name=\"football\"></ion-icon>\n    <ion-icon color=\"warning\" name=\"analytics\"></ion-icon>\n    <ion-icon color=\"danger\" name=\"grid\"></ion-icon>\n    <ion-icon color=\"light\" name=\"funnel\"></ion-icon>\n    <ion-icon color=\"medium\" name=\"watch\"></ion-icon>\n    <ion-icon color=\"dark\" name=\"toggle\"></ion-icon>\n\n    <h2>Stroke width</h2>\n    <ion-icon name=\"heart-outline\" style=\"--ionicon-stroke-width: 8px\"></ion-icon>\n\n    <h2>Font size</h2>\n    <ion-icon name=\"book\" style=\"font-size: 50px\"></ion-icon>\n    <ion-icon src=\"./assets/bug_report.svg\" style=\"font-size: 50px\"></ion-icon>\n\n    <h2>Custom SVGs</h2>\n    <ion-icon src=\"./assets/bug_report.svg\"></ion-icon>\n    <ion-icon src=\"./assets/chat.svg\"></ion-icon>\n    <ion-icon src=\"./assets/commute.svg\"></ion-icon>\n    <ion-icon src=\"./assets/copyright.svg\"></ion-icon>\n    <ion-icon src=\"./assets/done_all.svg\"></ion-icon>\n    <ion-icon src=\"./assets/lock_open.svg\"></ion-icon>\n    <ion-icon src=\"./assets/toll.svg\"></ion-icon>\n    <ion-icon src=\"./assets/web_asset.svg\"></ion-icon>\n    <ion-icon src=\"./assets/work_outline.svg\"></ion-icon>\n\n    <h2>Custom SVGs: colors</h2>\n    <ion-icon color=\"primary\" src=\"./assets/bug_report.svg\"></ion-icon>\n    <ion-icon color=\"secondary\" src=\"./assets/chat.svg\"></ion-icon>\n    <ion-icon color=\"tertiary\" src=\"./assets/commute.svg\"></ion-icon>\n    <ion-icon color=\"success\" src=\"./assets/copyright.svg\"></ion-icon>\n    <ion-icon color=\"warning\" src=\"./assets/done_all.svg\"></ion-icon>\n    <ion-icon color=\"danger\" src=\"./assets/lock_open.svg\"></ion-icon>\n    <ion-icon color=\"light\" src=\"./assets/toll.svg\"></ion-icon>\n    <ion-icon color=\"medium\" src=\"./assets/web_asset.svg\"></ion-icon>\n    <ion-icon color=\"dark\" src=\"./assets/work_outline.svg\"></ion-icon>\n\n    <h2>Custom CSS</h2>\n    <ion-icon class=\"custom\" name=\"grid\"></ion-icon>\n    <ion-icon class=\"custom\" name=\"funnel\"></ion-icon>\n    <ion-icon class=\"custom\" name=\"watch\"></ion-icon>\n    <ion-icon class=\"custom\" name=\"logo-react\"></ion-icon>\n    <ion-icon class=\"custom\" name=\"logo-javascript\"></ion-icon>\n    <ion-icon class=\"custom\" name=\"logo-angular\"></ion-icon>\n    <ion-icon class=\"custom\" src=\"./assets/done_all.svg\"></ion-icon>\n    <ion-icon class=\"custom\" src=\"./assets/web_asset.svg\"></ion-icon>\n    <ion-icon class=\"custom\" src=\"./assets/work_outline.svg\"></ion-icon>\n\n    <h2>Aria</h2>\n    <ion-icon name=\"cellular\"></ion-icon>\n    <ion-icon name=\"cellular\" aria-label=\"Mobile data\"></ion-icon>\n    <ion-icon name=\"cellular\" aria-hidden=\"true\"></ion-icon>\n\n    <div id=\"rtl-tests\">\n      <h1>RTL</h1>\n\n      <h2>Default: Non-arrows</h2>\n      <ion-icon name=\"cut\"></ion-icon>\n      <ion-icon name=\"call\"></ion-icon>\n      <ion-icon name=\"checkbox\"></ion-icon>\n      <ion-icon name=\"brush\"></ion-icon>\n\n      <h2>Flip: Non-arrows</h2>\n      <ion-icon name=\"cut\" flip-rtl></ion-icon>\n      <ion-icon name=\"call\" flip-rtl></ion-icon>\n      <ion-icon name=\"checkbox\" flip-rtl></ion-icon>\n      <ion-icon name=\"brush\" flip-rtl></ion-icon>\n\n      <h2>Auto Flip: arrows</h2>\n      <ion-icon name=\"arrow-up\"></ion-icon>\n      <ion-icon name=\"arrow-forward\"></ion-icon>\n      <ion-icon name=\"arrow-down\"></ion-icon>\n      <ion-icon name=\"arrow-back\"></ion-icon>\n\n      <h2>Un-flip: arrows</h2>\n      <ion-icon name=\"arrow-up\" flip-rtl=\"false\"></ion-icon>\n      <ion-icon name=\"arrow-forward\" flip-rtl=\"false\"></ion-icon>\n      <ion-icon name=\"arrow-down\" flip-rtl=\"false\"></ion-icon>\n      <ion-icon name=\"arrow-back\" flip-rtl=\"false\"></ion-icon>\n\n      <h2>Auto Flip: chevrons</h2>\n      <div class=\"auto-flip-chevrons\">\n        <ion-icon name=\"chevron-up\"></ion-icon>\n        <ion-icon name=\"chevron-forward\"></ion-icon>\n        <ion-icon name=\"chevron-down\"></ion-icon>\n        <ion-icon name=\"chevron-back\"></ion-icon>\n      </div>\n\n      <h2>Un-flip: chevrons</h2>\n      <div class=\"un-flip-chevrons\">\n        <ion-icon name=\"chevron-up\" flip-rtl=\"false\"></ion-icon>\n        <ion-icon name=\"chevron-forward\" flip-rtl=\"false\"></ion-icon>\n        <ion-icon name=\"chevron-down\" flip-rtl=\"false\"></ion-icon>\n        <ion-icon name=\"chevron-back\" flip-rtl=\"false\"></ion-icon>\n      </div>\n\n      <h2>Auto Flip, RTL on components</h2>\n      <ion-icon name=\"arrow-up\" dir=\"rtl\" flip-rtl></ion-icon>\n      <ion-icon name=\"arrow-forward\" dir=\"rtl\" flip-rtl></ion-icon>\n      <ion-icon name=\"arrow-down\" dir=\"rtl\" flip-rtl></ion-icon>\n      <ion-icon name=\"arrow-back\" dir=\"rtl\" flip-rtl></ion-icon>\n    </div>\n\n    <h2>Sanitized (shouldn't show)</h2>\n    <ion-icon src=\"./assets/sanitize.svg\"></ion-icon>\n\n    <h2>Not Sanitized (should show)</h2>\n    <ion-icon sanitize=\"false\" src=\"./assets/no-sanitize.svg\"></ion-icon>\n\n    <h2>Base64 url</h2>\n    <ion-icon\n      src=\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBmaWxsPSJub25lIiBkPSJNMCAwaDI0djI0SDBWMHoiLz48cGF0aCBkPSJNMjAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxOGw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxNEg2bC0yIDJWNGgxNnYxMnoiLz48L3N2Zz4=\"></ion-icon>\n\n    <p>\n      <a href=\"./cheatsheet.html\">Cheatsheet</a>\n    </p>\n\n    <style>\n      html {\n        font-size: 32px;\n      }\n      \n      body {\n        margin: 0;\n        padding: 16px;\n        font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;\n      }\n\n      h1 {\n        margin: 15px 0 5px;\n        font-size: 25px;\n      }\n\n      h2 {\n        margin: 15px 0 5px;\n        font-size: 18px;\n      }\n\n      .custom {\n        stroke: red;\n        fill: blue;\n      }\n    </style>\n  </body>\n</html>\n"
  },
  {
    "path": "src/index.ts",
    "content": "export { setAssetPath } from '@stencil/core';\n\nexport { addIcons } from './components/icon/utils';\nexport type { Components, JSX } from './components';\n"
  },
  {
    "path": "src/ionicons.web-types.json",
    "content": "{\n  \"$schema\": \"http://json.schemastore.org/web-types\",\n  \"name\": \"ionicons\",\n  \"version\": \"0.0.0\",\n  \"description-markup\": \"markdown\",\n  \"contributions\": {\n    \"html\": {\n      \"elements\": [\n        {\n          \"name\": \"ion-icon\",\n          \"description\": \"The Ionicons Web Component is an easy and performant way to use Ionicons in your app. The component will dynamically load an SVG for each icon, so your app is only requesting the icons that you need.\",\n          \"doc-url\": \"https://ionic.io/ionicons/usage\",\n          \"attributes\": [\n            {\n              \"name\": \"name\",\n              \"description\": \"The name of the built-in icon from the Ionicons package.\",\n              \"priority\": \"high\",\n              \"doc-url\": \"https://ionic.io/ionicons/usage#basic-usage\",\n              \"value\": {\n                \"type\": \"symbol\"\n              },\n              \"values\": [\n                {\n                  \"name\": \"The ion-icon\",\n                  \"pattern\": {\n                    \"items\": \"ionicons\"\n                  }\n                }\n              ]\n            },\n            {\n              \"name\": \"src\",\n              \"priority\": \"high\",\n              \"description\": \"Provide url of a custom SVG icon. The `src` attribute works the same as `<img src=\\\"...\\\">` in that the url must be accessible from the webpage that's making a request for the image. Additionally, the external file can only be a valid `svg` and does not allow scripts or events within the `svg` element.\",\n              \"doc-url\": \"https://ionic.io/ionicons/usage#basic-usage\"\n            },\n            {\n              \"name\": \"md\",\n              \"description\": \"Provide icon variant specific to MD platform\",\n              \"priority\": \"high\",\n              \"doc-url\": \"https://ionic.io/ionicons/usage#basic-usage\",\n              \"value\": {\n                \"type\": \"symbol\"\n              },\n              \"values\": [\n                {\n                  \"name\": \"The ion-icon\",\n                  \"pattern\": {\n                    \"items\": \"ionicons\"\n                  }\n                }\n              ]\n            },\n            {\n              \"name\": \"ios\",\n              \"description\": \"Provide icon variant specific to iOS platform\",\n              \"priority\": \"high\",\n              \"doc-url\": \"https://ionic.io/ionicons/usage#basic-usage\",\n              \"value\": {\n                \"type\": \"symbol\"\n              },\n              \"values\": [\n                {\n                  \"name\": \"The ion-icon\",\n                  \"pattern\": {\n                    \"items\": \"ionicons\"\n                  }\n                }\n              ]\n            },\n            {\n              \"name\": \"size\",\n              \"description\": \"Specify the icon size using one of the pre-defined font sizes.\\n\\nAlternatively you can set a specific size by applying the `font-size` CSS property on the `ion-icon` component. It's recommended to use pixel sizes that are a multiple of 8 (8, 16, 32, 64, etc.)\",\n              \"doc-url\": \"https://ionic.io/ionicons/usage#basic-usage\",\n              \"priority\": \"high\",\n              \"value\": {\n                \"type\": \"enum\"\n              },\n              \"values\": [\n                {\n                  \"name\": \"small\"\n                },\n                {\n                  \"name\": \"large\"\n                }\n              ]\n            }\n          ]\n        }\n      ],\n      \"ionicons\": [\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "src/utils/test/playwright/index.ts",
    "content": "export * from './playwright-page';\nexport * from './playwright-declarations';\n"
  },
  {
    "path": "src/utils/test/playwright/page/utils/goto.ts",
    "content": "import type { Page, TestInfo } from '@playwright/test';\n\n/**\n * This is an extended version of Playwright's\n * page.goto method. In addition to performing\n * the normal page.goto work, this code also\n * automatically waits for the Stencil components\n * to be hydrated before proceeding with the test.\n */\nexport const goto = async (page: Page, url: string, options: any, _: TestInfo, originalFn: typeof page.goto) => {\n  const result = await Promise.all([\n    page.waitForFunction(() => (window as any).testAppLoaded === true, { timeout: 4750 }),\n    originalFn(url, options),\n  ]);\n\n  return result[1];\n};\n"
  },
  {
    "path": "src/utils/test/playwright/page/utils/index.ts",
    "content": "export * from './goto';\n"
  },
  {
    "path": "src/utils/test/playwright/playwright-declarations.ts",
    "content": "import type { Page, Response } from '@playwright/test';\n\nexport interface E2EPage extends Page {\n  /**\n   * Returns the main resource response. In case of multiple redirects, the navigation will resolve with the response of the\n   * last redirect.\n   *\n   * The method will throw an error if:\n   * - there's an SSL error (e.g. in case of self-signed certificates).\n   * - target URL is invalid.\n   * - the `timeout` is exceeded during navigation.\n   * - the remote server does not respond or is unreachable.\n   * - the main resource failed to load.\n   *\n   * The method will not throw an error when any valid HTTP status code is returned by the remote server, including 404 \"Not\n   * Found\" and 500 \"Internal Server Error\".  The status code for such responses can be retrieved by calling\n   * [response.status()](https://playwright.dev/docs/api/class-response#response-status).\n   *\n   * > NOTE: The method either throws an error or returns a main resource response. The only exceptions are navigation to\n   * `about:blank` or navigation to the same URL with a different hash, which would succeed and return `null`.\n   * > NOTE: Headless mode doesn't support navigation to a PDF document. See the\n   * [upstream issue](https://bugs.chromium.org/p/chromium/issues/detail?id=761295).\n   *\n   * Shortcut for main frame's [frame.goto(url[, options])](https://playwright.dev/docs/api/class-frame#frame-goto)\n   * @param url URL to navigate page to. The url should include scheme, e.g. `https://`. When a `baseURL` via the context options was provided and the passed URL is a path, it gets merged via the\n   * [`new URL()`](https://developer.mozilla.org/en-US/docs/Web/API/URL/URL) constructor.\n   */\n  goto: (\n    url: string,\n    options?: {\n      /**\n       * Referer header value. If provided it will take preference over the referer header value set by\n       * [page.setExtraHTTPHeaders(headers)](https://playwright.dev/docs/api/class-page#page-set-extra-http-headers).\n       */\n      referer?: string;\n\n      /**\n       * Maximum operation time in milliseconds, defaults to 30 seconds, pass `0` to disable timeout. The default value can be\n       * changed by using the\n       * [browserContext.setDefaultNavigationTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-navigation-timeout),\n       * [browserContext.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-browsercontext#browser-context-set-default-timeout),\n       * [page.setDefaultNavigationTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-navigation-timeout)\n       * or [page.setDefaultTimeout(timeout)](https://playwright.dev/docs/api/class-page#page-set-default-timeout) methods.\n       */\n      timeout?: number;\n\n      /**\n       * When to consider operation succeeded, defaults to `load`. Events can be either:\n       * - `'domcontentloaded'` - consider operation to be finished when the `DOMContentLoaded` event is fired.\n       * - `'load'` - consider operation to be finished when the `load` event is fired.\n       * - `'networkidle'` - consider operation to be finished when there are no network connections for at least `500` ms.\n       * - `'commit'` - consider operation to be finished when network response is received and the document started loading.\n       */\n      waitUntil?: 'load' | 'domcontentloaded' | 'networkidle' | 'commit';\n    },\n  ) => Promise<null | Response>;\n}\n"
  },
  {
    "path": "src/utils/test/playwright/playwright-page.ts",
    "content": "import type {\n  PlaywrightTestArgs,\n  PlaywrightTestOptions,\n  PlaywrightWorkerArgs,\n  PlaywrightWorkerOptions,\n  TestInfo,\n} from '@playwright/test';\nimport { test as base } from '@playwright/test';\n\nimport { goto as goToPage } from './page/utils';\nimport type { E2EPage } from './playwright-declarations';\n\ntype CustomTestArgs = PlaywrightTestArgs &\n  PlaywrightTestOptions &\n  PlaywrightWorkerArgs &\n  PlaywrightWorkerOptions & {\n    page: E2EPage;\n  };\n\ntype CustomFixtures = {\n  page: E2EPage;\n};\n\n/**\n * Extends the base `page` test figure within Playwright.\n * @param page The page to extend.\n * @param testInfo The test info.\n * @returns The modified playwright page with extended functionality.\n */\nexport async function extendPageFixture(page: E2EPage, testInfo: TestInfo) {\n  const originalGoto = page.goto.bind(page);\n\n  /**\n   * Adds a global flag on the window that the test suite\n   * can use to determine when it is safe to execute tests\n   * on hydrated Stencil components.\n   */\n  await page.addInitScript(`\n  (function() {\n    window.addEventListener('appload', () => {\n      window.testAppLoaded = true;\n    });\n  })();`);\n  // Overridden Playwright methods\n  page.goto = (url: string, options) => goToPage(page, url, options, testInfo, originalGoto);\n\n  return page;\n}\n\nexport const test = base.extend<CustomFixtures>({\n  page: async ({ page }: CustomTestArgs, use: (r: E2EPage) => Promise<void>, testInfo: TestInfo) => {\n    page = await extendPageFixture(page, testInfo);\n    await use(page);\n  },\n});\n"
  },
  {
    "path": "stencil.config.ts",
    "content": "import { Config } from '@stencil/core';\n\nexport const config: Config = {\n  namespace: 'ionicons',\n  sourceMap: false,\n  outputTargets: [\n    {\n      type: 'dist',\n      collectionDir: './collection',\n      empty: false,\n    },\n    {\n      type: 'dist-custom-elements',\n      externalRuntime: false,\n      dir: './components',\n    },\n    {\n      type: 'docs-readme',\n    },\n    {\n      type: 'www',\n      copy: [\n        {\n          src: './components/test/*.svg',\n          dest: './assets/',\n        },\n        {\n          src: './components/test/',\n          dest: './test/',\n        },\n        {\n          src: './svg/*.svg',\n          dest: './svg/',\n        },\n      ],\n      empty: false,\n      serviceWorker: false,\n    },\n  ],\n};\n"
  },
  {
    "path": "tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"baseUrl\": \".\",\n    \"strict\": true,\n    \"allowSyntheticDefaultImports\": true,\n    \"allowUnreachableCode\": false,\n    \"declaration\": false,\n    \"experimentalDecorators\": true,\n    \"lib\": [\"dom\", \"es2017\"],\n    \"moduleResolution\": \"bundler\",\n    \"module\": \"esnext\",\n    \"target\": \"es2017\",\n    \"noUnusedLocals\": true,\n    \"noUnusedParameters\": true,\n    \"jsx\": \"react\",\n    \"jsxFactory\": \"h\",\n    \"paths\": {\n      \"@utils/*\": [\"src/utils/*\"]\n    }\n  },\n  \"include\": [\"src\"],\n  \"exclude\": [\"node_modules\", \"src/utils/test\"]\n}\n"
  },
  {
    "path": "tsconfig.spec.json",
    "content": "{\n  \"extends\": \"tsconfig.json\",\n  \"exclude\": [\"node_modules\"]\n}\n"
  }
]