[
  {
    "path": ".github/workflows/build.yml",
    "content": "name: Build\n\non:\n  pull_request:\n\npermissions:\n  contents: read\n\njobs:\n  build:\n    name: Build\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n\n      - name: Setup Java\n        uses: actions/setup-java@v4\n        with:\n          java-version: 21\n          distribution: zulu\n          cache: gradle\n\n      - name: Build\n        shell: bash\n        run: ./gradlew build -S\n"
  },
  {
    "path": ".github/workflows/cache.yml",
    "content": "name: Clear cache\n\non:\n  schedule:\n    - cron: '0 3 * * *'\n  workflow_dispatch:\n\njobs:\n  clear:\n    name: Delete all caches\n    runs-on: ubuntu-latest\n    steps:\n      - name: Clear caches\n        uses: easimon/wipe-cache@v2\n"
  },
  {
    "path": ".github/workflows/early-access.yml",
    "content": "name: EarlyAccess\n\non:\n  push:\n    branches: [ main ]\n\npermissions:\n  actions: write\n  id-token: write\n  contents: write\n\njobs:\n  precheck:\n    name: Precheck\n    uses: redis/riot/.github/workflows/step-precheck.yml@main\n    secrets: inherit\n\n  jlink:\n    name: Jlink\n    needs: [precheck]\n    if: endsWith(${{ needs.precheck.outputs.version }}, '-SNAPSHOT')\n    uses: redis/riot/.github/workflows/step-jlink.yml@main\n    with:\n      project-version: ${{ needs.precheck.outputs.version }}\n    secrets:\n      codecov-token: ${{ secrets.CODECOV_TOKEN }}\n\n  release:\n    name: Release\n    needs: [precheck, jlink]\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v4\n        with:\n          fetch-depth: 0\n\n      - name: Download artifacts\n        uses: actions/download-artifact@v4\n        with:\n          name: artifacts\n          path: plugins/riot/build\n\n      - name: Download repos\n        uses: actions/download-artifact@v4\n        with:\n          name: repos\n          path: build/repos/local/release\n\n      - name: Download jlink\n        uses: actions/download-artifact@v4\n        with:\n          name: jlink\n          path: out/jreleaser/assemble/riot-standalone/jlink\n\n      - name: Release\n        uses: jreleaser/release-action@v2\n        with:\n          arguments: full-release\n        env:\n          JRELEASER_DOCKER_DEFAULT_USERNAME: ${{ secrets.DOCKER_USERNAME }}\n          JRELEASER_DOCKER_DEFAULT_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}\n          JRELEASER_GITHUB_PASSWORD: ${{ secrets.GIT_ACCESS_TOKEN }}\n          JRELEASER_GITHUB_TOKEN: ${{ secrets.GIT_ACCESS_TOKEN }}\n          JRELEASER_GITHUB_USERNAME: ${{ secrets.GIT_USER }}\n          JRELEASER_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}\n          JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.GPG_PUBLIC_KEY }}\n          JRELEASER_GPG_SECRET_KEY: ${{ secrets.GPG_SECRET_KEY }}\n          JRELEASER_NEXUS2_USERNAME: ${{ secrets.SONATYPE_USERNAME }}\n          JRELEASER_NEXUS2_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}\n          JRELEASER_PROJECT_VERSION: ${{ needs.precheck.outputs.version }}\n          JRELEASER_SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}\n\n      - name: JReleaser release output\n        if: always()\n        uses: actions/upload-artifact@v4\n        with:\n          name: riot-release\n          path: |\n            out/jreleaser/trace.log\n            out/jreleaser/output.properties"
  },
  {
    "path": ".github/workflows/publish.yml",
    "content": "name: Publish\n\non:\n  workflow_dispatch:\n    inputs:\n      version:\n        description: 'Release version'\n        required: true\n\npermissions:\n  actions: write\n  id-token: write\n  contents: write\n\njobs:\n  precheck:\n    name: Precheck\n    runs-on: ubuntu-latest\n    outputs:\n      version: ${{ steps.vars.outputs.VERSION }}\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v4\n\n  publish:\n    name: Publish\n    needs: [precheck]\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v4\n        with:\n          ref: main\n          fetch-depth: 0\n\n      - name: Version\n        id: vars\n        shell: bash\n        run: |\n          echo \"VERSION=${{ github.event.inputs.version }}\" >> $GITHUB_OUTPUT\n          echo ${{ github.event.inputs.version }} > VERSION\n\n      - name: Setup Java\n        uses: actions/setup-java@v4\n        with:\n          java-version: ${{ vars.JAVA_VERSION }}\n          distribution: ${{ vars.JAVA_DISTRO }}\n          cache: gradle\n\n      - name: Deploy\n        env:\n          GRGIT_USER: ${{ secrets.GIT_USER }}\n          GRGIT_PASS: ${{ secrets.GIT_ACCESS_TOKEN }}\n        run: |\n          ./gradlew -Prelease=true -PreproducibleBuild=true gitPublishPush -S"
  },
  {
    "path": ".github/workflows/release.yml",
    "content": "name: Release\n\non:\n  workflow_dispatch:\n    inputs:\n      version:\n        description: 'Release version'\n        required: true\n      build-tasks:\n        description: 'Build tasks'\n        default: 'build aggregateTestReports aggregateJacocoReport publish'\n        required: false\n        type: string\n\npermissions:\n  actions: write\n  id-token: write\n  contents: write\n\njobs:\n  precheck:\n    name: Precheck\n    runs-on: ubuntu-latest\n    outputs:\n      version: ${{ steps.vars.outputs.VERSION }}\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v4\n\n      - name: Version\n        id: vars\n        shell: bash\n        run: |\n          echo \"VERSION=${{ github.event.inputs.version }}\" >> $GITHUB_OUTPUT\n          echo ${{ github.event.inputs.version }} > VERSION\n          git add VERSION\n          sed -i -e \"s/^\\:project-version\\:\\ .*/:project-version: ${{ github.event.inputs.version }}/g\" README.adoc\n          git config --global user.email \"${{ secrets.COMMIT_EMAIL }}\"\n          git config --global user.name \"Julien Ruaux\"\n          git commit -a -m \"Releasing version ${{ github.event.inputs.version }}\"\n          git push origin main\n\n  jlink:\n    name: Jlink\n    needs: [precheck]\n    uses: redis/riot/.github/workflows/step-jlink.yml@main\n    with:\n      project-version: ${{ needs.precheck.outputs.version }}\n      tasks: ${{ github.event.inputs.build-tasks }}\n    secrets:\n      codecov-token: ${{ secrets.CODECOV_TOKEN }}\n\n  release:\n    name: Release\n    needs: [precheck, jlink]\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v4\n        with:\n          ref: main\n          fetch-depth: 0\n\n      - name: Download artifacts\n        uses: actions/download-artifact@v4\n        with:\n          name: artifacts\n          path: plugins/riot/build\n\n      - name: Download repos\n        uses: actions/download-artifact@v4\n        with:\n          name: repos\n          path: build/repos/local/release\n\n      - name: Download jlink\n        uses: actions/download-artifact@v4\n        with:\n          name: jlink\n          path: out/jreleaser/assemble/riot-standalone/jlink\n\n      - name: Setup Java\n        uses: actions/setup-java@v4\n        with:\n          java-version: ${{ vars.JAVA_VERSION }}\n          distribution: ${{ vars.JAVA_DISTRO }}\n          cache: gradle\n\n      - name: Deploy\n        env:\n          GRGIT_USER: ${{ secrets.GIT_USER }}\n          GRGIT_PASS: ${{ secrets.GIT_ACCESS_TOKEN }}\n        run: |\n          ./gradlew -Prelease=true -PreproducibleBuild=true publish gitPublishPush -S\n\n      - name: Upload deploy artifacts\n        uses: actions/upload-artifact@v4\n        with:\n          retention-days: 7\n          name: deploy\n          path: |\n            build/repos/local/release/\n\n      - name: Release\n        uses: jreleaser/release-action@v2\n        with:\n          arguments: full-release\n        env:\n          JRELEASER_DOCKER_DEFAULT_USERNAME: ${{ secrets.DOCKER_USERNAME }}\n          JRELEASER_DOCKER_DEFAULT_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}\n          JRELEASER_GITHUB_PASSWORD: ${{ secrets.GIT_ACCESS_TOKEN }}\n          JRELEASER_GITHUB_TOKEN: ${{ secrets.GIT_ACCESS_TOKEN }}\n          JRELEASER_GITHUB_USERNAME: ${{ secrets.GIT_USER }}\n          JRELEASER_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}\n          JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.GPG_PUBLIC_KEY }}\n          JRELEASER_GPG_SECRET_KEY: ${{ secrets.GPG_SECRET_KEY }}\n          JRELEASER_NEXUS2_USERNAME: ${{ secrets.SONATYPE_USERNAME }}\n          JRELEASER_NEXUS2_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}\n          JRELEASER_PROJECT_VERSION: ${{ needs.precheck.outputs.version }}\n          JRELEASER_SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}\n\n      - name: JReleaser release output\n        if: always()\n        uses: actions/upload-artifact@v4\n        with:\n          name: riot-release\n          path: |\n            out/jreleaser/trace.log\n            out/jreleaser/output.properties"
  },
  {
    "path": ".github/workflows/step-jlink.yml",
    "content": "name: X-Jlink\n\non:\n  workflow_call:\n    inputs:\n      project-version:\n        required: true\n        type: string\n      tasks:\n        default: 'build aggregateTestReports aggregateJacocoReport publish'\n        required: false\n        type: string\n    secrets:\n      codecov-token:\n        required: false\n\npermissions:\n  contents: read\n\njobs:\n  jlink:\n    name: Jlink\n    runs-on: ubuntu-latest\n    env:\n      CI: true\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v4\n        with:\n          ref: main\n\n      - name: Setup Java\n        uses: actions/setup-java@v4\n        with:\n          java-version: ${{ vars.JAVA_VERSION }}\n          distribution: ${{ vars.JAVA_DISTRO }}\n          cache: gradle\n\n      - name: Version\n        if: endsWith(${{ inputs.project-version }}, '-SNAPSHOT') != true\n        run: |\n          echo ${{ inputs.project-version }} > VERSION\n\n      - name: Build\n        run: ./gradlew -Prelease=true -PreproducibleBuild=true ${{ inputs.tasks }} -S\n        \n      - name: Upload test reports\n        if: failure()\n        uses: actions/upload-artifact@v4\n        with:\n          name: test-reports\n          path: |\n            build/reports/aggregate-tests/\n\n      - name: Upload coverage to Codecov\n        uses: codecov/codecov-action@v4\n        env:\n          CODECOV_TOKEN: ${{ secrets.codecov-token }}\n\n      - name: Jlink\n        uses: jreleaser/release-action@v2\n        with:\n          arguments: assemble --assembler jlink\n          setup-java: false\n        env:\n          JRELEASER_PROJECT_VERSION: ${{ inputs.project-version }}\n\n      - name: JReleaser output\n        if: always()\n        uses: actions/upload-artifact@v4\n        with:\n          name: riot-jlink\n          path: |\n            out/jreleaser/trace.log\n            out/jreleaser/output.properties\n\n      - name: Dependencies\n        run: |\n          ls -l plugins/riot/build/dependencies/flat\n          \n      - name: Upload repos\n        uses: actions/upload-artifact@v4\n        with:\n          retention-days: 1\n          name: repos\n          path: |\n            build/repos/local/release\n\n      - name: Upload artifacts\n        uses: actions/upload-artifact@v4\n        with:\n          retention-days: 1\n          name: artifacts\n          path: |\n            plugins/riot/build/libs/\n            plugins/riot/build/dependencies/\n            plugins/riot/build/distributions/\n\n      - name: Stop Gradle daemon\n        shell: bash\n        run: ./gradlew -stop\n\n      - name: Upload jlink\n        uses: actions/upload-artifact@v4\n        with:\n          retention-days: 1\n          name: jlink\n          path: |\n            out/jreleaser/assemble/riot-standalone/jlink/*.zip\n"
  },
  {
    "path": ".github/workflows/step-precheck.yml",
    "content": "name: X-Precheck\n\non:\n  workflow_call:\n    outputs:\n      version:\n        description: version\n        value: ${{ jobs.precheck.outputs.version }}\n\npermissions:\n  contents: read\n\njobs:\n  precheck:\n    name: Precheck\n    if: github.repository == 'redis/riot' && startsWith(github.event.head_commit.message, 'Releasing version') != true\n    runs-on: ubuntu-latest\n    outputs:\n      version: ${{ steps.vars.outputs.VERSION }}\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v4\n\n      - name: Cancel previous run\n        uses: styfle/cancel-workflow-action@0.12.1\n        with:\n          access_token: ${{ secrets.GITHUB_TOKEN }}\n\n      - name: Version\n        id: vars\n        shell: bash\n        run: |\n          echo \"VERSION=$(cat VERSION)\" >> $GITHUB_OUTPUT\n"
  },
  {
    "path": ".github/workflows/trigger-early-access.yml",
    "content": "name: Trigger Early Access\n\non:\n  workflow_dispatch:\n\npermissions:\n  contents: read\n\njobs:\n  earlyaccess:\n    name: Trigger Early Access\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n\n      - name: Setup Java\n        uses: actions/setup-java@v4\n        with:\n          java-version: ${{ vars.JAVA_VERSION }}\n          distribution: ${{ vars.JAVA_DISTRO }}\n          cache: gradle\n\n      - name: Build\n        run: ./gradlew -PreproducibleBuild=true build -S\n\n      - name: Rename artifacts\n        run: |\n          mkdir early-access\n          cp plugins/riot/build/distributions/riot-*-SNAPSHOT.zip early-access/riot-early-access.zip\n\n      - name: Release early-access artifacts\n        uses: marvinpinto/action-automatic-releases@latest\n        with:\n          automatic_release_tag: early-access\n          repo_token: ${{ secrets.GIT_ACCESS_TOKEN }}\n          prerelease: true\n          title: RIOT Early-Access\n          files: |\n            early-access/*\n"
  },
  {
    "path": ".gitignore",
    "content": "/out/\nbuild\n.gradle\n/.idea\nbin\n.project\n.classpath\n.settings\n.DS_Store\nhs_err_pid*.log\n*.bkp"
  },
  {
    "path": "LICENSE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n"
  },
  {
    "path": "README.adoc",
    "content": ":linkattrs:\n:project-owner:   redis\n:project-name:    riot\n:project-group:   com.redis\n:project-version: 4.3.0\n:project-title:   RIOT\n\nimage::docs/guide/src/docs/resources/images/riot.svg[RIOT]\n\n---\n\n[IMPORTANT]\n====\n*⚠️ This project is no longer maintained.*\n\nRIOT has been superseded by https://github.com/redis/riotx-dist[*RIOT-X*], an enterprise-grade version with enhanced features and active support from Redis, Inc.\n\n* *For new projects:* Please use https://redis.github.io/riotx/[RIOT-X]\n* *Existing users:* You can continue using RIOT, but no new features or bug fixes will be provided\n* *Support:* All support requests should be directed to the RIOT-X project\n\nhttps://github.com/redis/riotx-dist[→ Go to RIOT-X on GitHub]\n====\n\n---\n\nGet data in and out of Redis with link:http://redis.github.io/riot/[{project-title}]!\n\nRedis Input/Output Tools ({project-title}) is a command-line utility designed to help you get data in and out of Redis.\n\nIt supports many different sources and targets:\n\n* Relational databases\n* Files (CSV, JSON, XML)\n* Data generators (Redis data structures, Faker)\n* and Redis itself with live and/or snapshot replication.\n\n== Documentation\n\nlink:http://redis.github.io/riot/[redis.github.io/riot]\n\n== Support\n\n*This project is no longer actively maintained.*\n\nFor support, please use https://github.com/redis/riotx-dist[RIOT-X], the actively maintained successor to this project.\n\nExisting issues will remain open for historical reference, but new issues and pull requests will not be addressed.\n\n== Badges\n\nimage:https://github.com/{project-owner}/{project-name}/actions/workflows/early-access.yml/badge.svg[\"Build Status\", link=\"https://github.com/{project-owner}/{project-name}/actions/workflows/early-access.yml\"]\nimage:https://img.shields.io/github/release/{project-owner}/{project-name}.svg[\"Latest\", link=\"https://github.com/{project-owner}/{project-name}/releases/latest\"]\nimage:https://codecov.io/gh/{project-owner}/{project-name}/graph/badge.svg?token=bwm6gyXU0v[\"Coverage\", link=\"https://codecov.io/gh/{project-owner}/{project-name}\"]\n\n== License\n\n{project-title} is licensed under the Apache 2.0 License.\nCopyright (C) 2023 Redis, Inc.\n"
  },
  {
    "path": "VERSION",
    "content": "4.3.0\n"
  },
  {
    "path": "build.gradle",
    "content": "/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * Copyright 2020-2023 The RIOT authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconfig {\n    info {\n        description = 'RIOT'\n        inceptionYear = '2020'\n        vendor = 'Redis'\n        tags = ['redis', 'tool', 'import', 'export', 'replication']\n\n        links {\n            website      = \"https://github.com/redis/${project.rootProject.name}\"\n            issueTracker = \"https://github.com/redis/${project.rootProject.name}/issues\"\n            scm          = \"https://github.com/redis/${project.rootProject.name}.git\"\n        }\n\n        scm {\n            url                 = \"https://github.com/redis/${project.rootProject.name}\"\n            connection          = \"scm:git:https://github.com/redis/${project.rootProject.name}.git\"\n            developerConnection = \"scm:git:git@github.com:redis/${project.rootProject.name}.git\"\n        }\n\n        specification {\n            enabled = true\n        }\n\n        implementation {\n            enabled = true\n        }\n        \n        people {\n            clearDomainSet()\n            person {\n                id    = 'jruaux'\n                name  = 'Julien Ruaux'\n                roles = ['developer', 'author']\n            }\n        }\n    }\n\n    docs {\n        javadoc {\n            autoLinks {\n                enabled = false\n            }\n        }\n    }\n    \n    licensing {\n        enabled = false\n    }\n\n    coverage {\n        jacoco {\n            enabled = true\n            toolVersion = jacocoPluginVersion\n        }\n    }\n}\n\nallprojects {\n    repositories {\n        mavenLocal()\n        maven {\n            url 'https://s01.oss.sonatype.org/content/repositories/snapshots/'\n        }\n    }\n\n    tasks.withType(GenerateModuleMetadata) {\n        enabled = false\n    }\n\n    tasks.withType(JavaCompile) {\n        options.encoding = 'UTF-8'\n    }\n}\n\nsubprojects { subproj ->\n    if (!subproj.name.contains('guide')) {\n    \n        config {\n\t        info {\n\t            description = project.project_description\n\t        }\n            coverage {\n                jacoco {\n\t\t            toolVersion = jacocoPluginVersion\n                }\n            }\n\t    }\n\n\t    license {\n\t        exclude('build/**')\n\t    }\n\n\t    dependencies {\n            compileOnly 'org.projectlombok:lombok'\n            annotationProcessor 'org.projectlombok:lombok'\n            testImplementation 'org.junit.jupiter:junit-jupiter-api'\n            testImplementation 'org.junit.jupiter:junit-jupiter-params'\n            testImplementation 'org.junit.jupiter:junit-jupiter-engine'\n            testImplementation 'org.junit.platform:junit-platform-launcher'\n            testImplementation 'org.testcontainers:junit-jupiter'\n\t        testImplementation group: 'com.redis', name: 'testcontainers-redis', version: testcontainersRedisVersion\n\t    }\n\n\t    test {\n\t        useJUnitPlatform()\n\t    }\n\n\t    configurations {\n\t        all*.exclude module: 'spring-boot-starter-logging'\n\t        all*.exclude module: 'commons-logging'\n\t    }\n\n\t    bootJar {\n            enabled = false\n        }\n\n        jar {\n            enabled = true\n            archiveClassifier = ''\n        }\n\n\t}\n}\n\nsubprojects { p ->\n    config {\n        coverage {\n            jacoco {\n                enabled = hasTestsAt(p.file('src/test'))\n            }\n        }\n    }\n    \n    configurations.all {\n        resolutionStrategy.eachDependency { DependencyResolveDetails details ->\n            if (details.requested.name == 'lettuce-core' ) {\n                details.useVersion lettuceVersion\n            }\n        }\n    }\n}\n\ngradleProjects {\n    subprojects {\n        dirs(['core']) {\n            compileJava {\n                options.compilerArgs += [\"-AprojectPath=${project.group}/${project.name}\"]\n            }\n\n            if (!(project.findProperty('automatic.module.name.skip') ?: false).toBoolean()) {\n                jar {\n                    manifest {\n                        attributes('Automatic-Module-Name': project.findProperty('automatic.module.name'))\n                    }\n                }\n            }\n        }\n    }\n}\n\nboolean hasTestsAt(File testDir) {\n    testDir.exists() && testDir.listFiles()?.size()\n}"
  },
  {
    "path": "core/riot-core/gradle.properties",
    "content": "#\n# SPDX-License-Identifier: Apache-2.0\n#\n# Copyright 2022-2023 The RIOT authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\nproject_description = RIOT Core\nautomatic.module.name = com.redis.riot.core\n"
  },
  {
    "path": "core/riot-core/riot-core.gradle",
    "content": "/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * Copyright 2020-2023 The RIOT authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\ndependencies {\n    api 'org.slf4j:slf4j-api'\n    implementation 'org.slf4j:slf4j-simple'\n    api group: 'info.picocli', name: 'picocli', version: picocliVersion\n    annotationProcessor group: 'info.picocli', name: 'picocli-codegen', version: picocliVersion\n    implementation 'org.springframework.boot:spring-boot'\n    implementation group: 'me.tongfei', name: 'progressbar', version: progressbarVersion\n    api group: 'com.redis', name: 'spring-batch-redis-infrastructure', version: springBatchRedisVersion\n    testImplementation 'org.awaitility:awaitility'\n}\n\nproject.rootProject.gradle.addBuildListener(new BuildAdapter() {\n    @Override\n    void projectsEvaluated(Gradle gradle) {\n        gradle.rootProject.subprojects\n            .find { p -> p.name == 'riot-core' }\n            .processResources {\n                inputs.property('build_date', gradle.rootProject.config.buildInfo.buildDate + ':' + gradle.rootProject.config.buildInfo.buildTime)\n                filesMatching(['**/RiotVersion.properties']) {\n                    expand(\n                        'riot_version': gradle.rootProject.version,\n                        'build_date': gradle.rootProject.config.buildInfo.buildDate,\n                        'build_time': gradle.rootProject.config.buildInfo.buildTime,\n                        'build_revision': gradle.rootProject.config.buildInfo.buildRevision\n                    )\n                }\n            }\n    }\n})"
  },
  {
    "path": "core/riot-core/src/main/java/com/redis/riot/core/AbstractCallableCommand.java",
    "content": "package com.redis.riot.core;\n\nimport java.util.concurrent.Callable;\n\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\nimport picocli.CommandLine.Command;\nimport picocli.CommandLine.Option;\n\n@Command\npublic abstract class AbstractCallableCommand extends BaseCommand implements Callable<Integer> {\n\n\t@Option(names = \"--help\", usageHelp = true, description = \"Show this help message and exit.\")\n\tprivate boolean helpRequested;\n\n\tprotected Logger log;\n\n\t@Override\n\tpublic Integer call() throws Exception {\n\t\tinitialize();\n\t\ttry {\n\t\t\texecute();\n\t\t} finally {\n\t\t\tteardown();\n\t\t}\n\t\treturn 0;\n\t}\n\n\tprotected void initialize() {\n\t\tif (log == null) {\n\t\t\tlog = LoggerFactory.getLogger(getClass());\n\t\t}\n\t}\n\n\tprotected abstract void execute();\n\n\tprotected void teardown() {\n\t\t// do nothing\n\t}\n\n\tpublic Logger getLog() {\n\t\treturn log;\n\t}\n\n\tpublic void setLog(Logger log) {\n\t\tthis.log = log;\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-core/src/main/java/com/redis/riot/core/AbstractJobCommand.java",
    "content": "package com.redis.riot.core;\n\nimport java.util.Arrays;\nimport java.util.Collection;\nimport java.util.Iterator;\nimport java.util.List;\n\nimport org.springframework.batch.core.BatchStatus;\nimport org.springframework.batch.core.ExitStatus;\nimport org.springframework.batch.core.ItemWriteListener;\nimport org.springframework.batch.core.Job;\nimport org.springframework.batch.core.JobExecution;\nimport org.springframework.batch.core.JobExecutionException;\nimport org.springframework.batch.core.JobExecutionListener;\nimport org.springframework.batch.core.JobParameters;\nimport org.springframework.batch.core.JobParametersBuilder;\nimport org.springframework.batch.core.JobParametersInvalidException;\nimport org.springframework.batch.core.StepExecution;\nimport org.springframework.batch.core.StepExecutionListener;\nimport org.springframework.batch.core.explore.JobExplorer;\nimport org.springframework.batch.core.job.builder.JobBuilder;\nimport org.springframework.batch.core.job.builder.SimpleJobBuilder;\nimport org.springframework.batch.core.launch.JobLauncher;\nimport org.springframework.batch.core.launch.support.RunIdIncrementer;\nimport org.springframework.batch.core.launch.support.TaskExecutorJobLauncher;\nimport org.springframework.batch.core.repository.JobExecutionAlreadyRunningException;\nimport org.springframework.batch.core.repository.JobInstanceAlreadyCompleteException;\nimport org.springframework.batch.core.repository.JobRepository;\nimport org.springframework.batch.core.repository.JobRestartException;\nimport org.springframework.batch.core.step.builder.FaultTolerantStepBuilder;\nimport org.springframework.batch.core.step.builder.SimpleStepBuilder;\nimport org.springframework.batch.core.step.builder.StepBuilder;\nimport org.springframework.batch.core.step.skip.AlwaysSkipItemSkipPolicy;\nimport org.springframework.batch.core.step.skip.NeverSkipItemSkipPolicy;\nimport org.springframework.batch.core.step.tasklet.TaskletStep;\nimport org.springframework.batch.item.ItemReader;\nimport org.springframework.batch.item.ItemStreamReader;\nimport org.springframework.batch.item.ItemStreamSupport;\nimport org.springframework.batch.item.ItemWriter;\nimport org.springframework.batch.item.support.SynchronizedItemReader;\nimport org.springframework.batch.item.support.SynchronizedItemStreamReader;\nimport org.springframework.core.task.SyncTaskExecutor;\nimport org.springframework.core.task.TaskExecutor;\nimport org.springframework.retry.policy.AlwaysRetryPolicy;\nimport org.springframework.retry.policy.NeverRetryPolicy;\nimport org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;\nimport org.springframework.transaction.PlatformTransactionManager;\nimport org.springframework.util.Assert;\nimport org.springframework.util.ClassUtils;\nimport org.springframework.util.CollectionUtils;\n\nimport com.redis.spring.batch.JobUtils;\nimport com.redis.spring.batch.item.AbstractAsyncItemStreamSupport;\nimport com.redis.spring.batch.item.PollableItemReader;\nimport com.redis.spring.batch.step.FlushingStepBuilder;\n\nimport picocli.CommandLine.ArgGroup;\nimport picocli.CommandLine.Command;\nimport picocli.CommandLine.Option;\n\n@Command\npublic abstract class AbstractJobCommand extends AbstractCallableCommand {\n\n\tpublic static final String DEFAULT_JOB_REPOSITORY_NAME = \"riot\";\n\n\t@Option(names = \"--job-name\", description = \"Job name.\", paramLabel = \"<string>\", hidden = true)\n\tprivate String jobName;\n\n\t@Option(names = \"--repeat\", description = \"After the job completes keep repeating it on a fixed interval (ex 5m, 1h)\", paramLabel = \"<dur>\")\n\tprivate RiotDuration repeatEvery;\n\n\t@ArgGroup(exclusive = false, heading = \"Job options%n\")\n\tprivate StepArgs stepArgs = new StepArgs();\n\n\tprivate String jobRepositoryName = DEFAULT_JOB_REPOSITORY_NAME;\n\tprivate JobRepository jobRepository;\n\tprivate PlatformTransactionManager transactionManager;\n\tprivate JobLauncher jobLauncher;\n\tprivate JobExplorer jobExplorer;\n\n\tprotected Runnable onJobSuccessCallback;\n\n\t@Override\n\tprotected void initialize() {\n\t\tsuper.initialize();\n\t\tif (jobName == null) {\n\t\t\tjobName = jobName();\n\t\t}\n\t\tif (jobRepository == null) {\n\t\t\ttry {\n\t\t\t\tjobRepository = JobUtils.jobRepositoryFactoryBean(jobRepositoryName).getObject();\n\t\t\t} catch (Exception e) {\n\t\t\t\tthrow new RiotException(\"Could not create job repository\", e);\n\t\t\t}\n\t\t}\n\t\tif (transactionManager == null) {\n\t\t\ttransactionManager = JobUtils.resourcelessTransactionManager();\n\t\t}\n\t\tif (jobLauncher == null) {\n\t\t\ttry {\n\t\t\t\tjobLauncher = jobLauncher();\n\t\t\t} catch (Exception e) {\n\t\t\t\tthrow new RiotException(\"Could not create job launcher\", e);\n\t\t\t}\n\t\t}\n\t\tif (jobExplorer == null) {\n\t\t\ttry {\n\t\t\t\tjobExplorer = JobUtils.jobExplorerFactoryBean(jobRepositoryName).getObject();\n\t\t\t} catch (Exception e) {\n\t\t\t\tlog.warn(\"Error getting jobExplorer\", e);\n\t\t\t\tthrow new RiotException(\"Could not create job explorer\", e);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate JobLauncher jobLauncher() throws Exception {\n\t\tTaskExecutorJobLauncher launcher = new TaskExecutorJobLauncher();\n\t\tlauncher.setJobRepository(jobRepository);\n\t\tlauncher.setTaskExecutor(new SyncTaskExecutor());\n\t\tlauncher.afterPropertiesSet();\n\t\treturn launcher;\n\t}\n\n\tprotected void configureAsyncStreamSupport(AbstractAsyncItemStreamSupport<?, ?> reader) {\n\t\treader.setJobRepository(jobRepository);\n\t}\n\n\tprivate JobBuilder jobBuilder() {\n\t\treturn new JobBuilder(jobName, jobRepository);\n\t}\n\n\t@Override\n\tprotected void execute() {\n\t\tJob job = job();\n\t\tJobExecution jobExecution;\n\t\ttry {\n\t\t\tjobExecution = jobLauncher.run(job, new JobParameters());\n\t\t} catch (JobExecutionException e) {\n\t\t\tthrow new RiotException(e);\n\t\t}\n\t\tif (JobUtils.isFailed(jobExecution.getExitStatus())) {\n\t\t\tfor (StepExecution stepExecution : jobExecution.getStepExecutions()) {\n\t\t\t\tExitStatus stepExitStatus = stepExecution.getExitStatus();\n\t\t\t\tif (JobUtils.isFailed(stepExitStatus)) {\n\t\t\t\t\tif (CollectionUtils.isEmpty(stepExecution.getFailureExceptions())) {\n\t\t\t\t\t\tthrow new RiotException(stepExitStatus.getExitDescription());\n\t\t\t\t\t}\n\t\t\t\t\tthrow wrapException(stepExecution.getFailureExceptions());\n\t\t\t\t}\n\t\t\t}\n\t\t\tthrow wrapException(jobExecution.getFailureExceptions());\n\t\t}\n\t}\n\n\tprivate String jobName() {\n\t\tif (commandSpec == null) {\n\t\t\treturn ClassUtils.getShortName(getClass());\n\t\t}\n\t\treturn commandSpec.name();\n\t}\n\n\tprivate RiotException wrapException(List<Throwable> throwables) {\n\t\tif (throwables.isEmpty()) {\n\t\t\treturn new RiotException(\"Job failed\");\n\t\t}\n\t\treturn new RiotException(throwables.get(0));\n\t}\n\n\tprotected Job job(Step<?, ?>... steps) {\n\t\treturn job(Arrays.asList(steps));\n\t}\n\n\tprotected Job job(Collection<Step<?, ?>> steps) {\n\t\tAssert.notEmpty(steps, \"At least one step must be specified\");\n\t\tIterator<Step<?, ?>> iterator = steps.iterator();\n\t\tSimpleJobBuilder job = jobBuilder().start(step(iterator.next()));\n\t\twhile (iterator.hasNext()) {\n\t\t\tjob.next(step(iterator.next()));\n\t\t}\n\n\t\tif (repeatEvery != null) {\n\t\t\tjob.incrementer(new RunIdIncrementer());\n\t\t\tjob.preventRestart();\n\t\t\tjob.listener(new RepeatJobExecutionListener(job, steps));\n\t\t}\n\n\t\treturn job.build();\n\t}\n\n\tprivate class RepeatJobExecutionListener implements JobExecutionListener {\n\n\t\tprivate final SimpleJobBuilder job;\n\t\tprivate final Collection<Step<?, ?>> steps;\n\t\tprivate Job lastJob;\n\n\t\tpublic RepeatJobExecutionListener(SimpleJobBuilder job, Collection<Step<?, ?>> steps) {\n\t\t\tthis.job = job;\n\t\t\tthis.steps = steps;\n\t\t}\n\n\t\t@Override\n\t\tpublic void afterJob(JobExecution jobExecution) {\n\t\t\tif (jobExecution.getStatus() == BatchStatus.COMPLETED) {\n\t\t\t\tif (null != onJobSuccessCallback) {\n\t\t\t\t\tonJobSuccessCallback.run();\n\t\t\t\t}\n\n\t\t\t\tlog.info(\"Finished job, will run again in {}\", repeatEvery);\n\t\t\t\ttry {\n\t\t\t\t\tThread.sleep(repeatEvery.getValue().toMillis());\n\t\t\t\t\tif (lastJob == null) {\n\t\t\t\t\t\tlastJob = job.build();\n\t\t\t\t\t}\n\n\t\t\t\t\tJob nextJob = jobBuilder().start(step(steps.stream().findFirst().get()))\n\t\t\t\t\t\t\t.incrementer(new RunIdIncrementer()).preventRestart().listener(this).build();\n\n\t\t\t\t\tJobParametersBuilder paramsBuilder = new JobParametersBuilder(jobExecution.getJobParameters(),\n\t\t\t\t\t\t\tjobExplorer);\n\n\t\t\t\t\tjobLauncher.run(nextJob,\n\t\t\t\t\t\t\tparamsBuilder.addString(\"runTime\", String.valueOf(System.currentTimeMillis()))\n\t\t\t\t\t\t\t\t\t.getNextJobParameters(lastJob).toJobParameters());\n\t\t\t\t\tlastJob = nextJob;\n\t\t\t\t} catch (InterruptedException | JobExecutionAlreadyRunningException | JobRestartException\n\t\t\t\t\t\t| JobInstanceAlreadyCompleteException | JobParametersInvalidException e) {\n\t\t\t\t\tthrow new RiotException(e);\n\t\t\t\t}\n\t\t\t}\n\t\t\tJobExecutionListener.super.afterJob(jobExecution);\n\t\t}\n\t}\n\n\tprotected boolean shouldShowProgress() {\n\t\treturn stepArgs.getProgressArgs().getStyle() != ProgressStyle.NONE;\n\t}\n\n\tprotected abstract Job job();\n\n\tprivate <I, O> TaskletStep step(Step<I, O> step) {\n\t\tlog.info(\"Creating {}\", step);\n\t\tSimpleStepBuilder<I, O> builder = simpleStep(step);\n\t\tif (stepArgs.getRetryPolicy() == RetryPolicy.NEVER && stepArgs.getSkipPolicy() == SkipPolicy.NEVER) {\n\t\t\tlog.info(\"Skipping fault-tolerance for step {}\", step.getName());\n\t\t\treturn builder.build();\n\t\t}\n\t\tlog.info(\"Adding fault-tolerance to step {}\", step.getName());\n\t\tFaultTolerantStepBuilder<I, O> ftStep = builder.faultTolerant();\n\t\tstep.getSkip().forEach(ftStep::skip);\n\t\tstep.getNoSkip().forEach(ftStep::noSkip);\n\t\tstep.getRetry().forEach(ftStep::retry);\n\t\tstep.getNoRetry().forEach(ftStep::noRetry);\n\t\tftStep.retryLimit(stepArgs.getRetryLimit());\n\t\tftStep.retryPolicy(retryPolicy());\n\t\tftStep.skipLimit(stepArgs.getSkipLimit());\n\t\tftStep.skipPolicy(skipPolicy());\n\t\treturn ftStep.build();\n\t}\n\n\tprivate org.springframework.retry.RetryPolicy retryPolicy() {\n\t\tswitch (stepArgs.getRetryPolicy()) {\n\t\tcase ALWAYS:\n\t\t\treturn new AlwaysRetryPolicy();\n\t\tcase NEVER:\n\t\t\treturn new NeverRetryPolicy();\n\t\tdefault:\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tprivate org.springframework.batch.core.step.skip.SkipPolicy skipPolicy() {\n\t\tswitch (stepArgs.getSkipPolicy()) {\n\t\tcase ALWAYS:\n\t\t\treturn new AlwaysSkipItemSkipPolicy();\n\t\tcase NEVER:\n\t\t\treturn new NeverSkipItemSkipPolicy();\n\t\tdefault:\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t@SuppressWarnings(\"removal\")\n\tprivate <I, O> SimpleStepBuilder<I, O> simpleStep(Step<I, O> step) {\n\t\tString stepName = jobName + \"-\" + step.getName();\n\t\tif (stepName.length() > 80) {\n\t\t\tstepName = stepName.substring(0, 69) + \"…\" + stepName.substring(stepName.length() - 10);\n\t\t}\n\t\tif (step.getReader() instanceof ItemStreamSupport) {\n\t\t\t((ItemStreamSupport) step.getReader()).setName(stepName + \"-reader\");\n\t\t}\n\t\tlog.info(\"Creating step {} with chunk size {}\", stepName, stepArgs.getChunkSize());\n\t\tSimpleStepBuilder<I, O> builder = new StepBuilder(stepName, jobRepository).<I, O>chunk(stepArgs.getChunkSize(),\n\t\t\t\ttransactionManager);\n\t\tbuilder.reader(reader(step));\n\t\tbuilder.writer(writer(step));\n\t\tbuilder.processor(step.getProcessor());\n\t\tbuilder.taskExecutor(taskExecutor());\n\t\tbuilder.throttleLimit(stepArgs.getThreads());\n\t\tstep.getExecutionListeners().forEach(builder::listener);\n\t\tstep.getWriteListeners().forEach(builder::listener);\n\t\tif (shouldShowProgress()) {\n\t\t\tProgressStepExecutionListener<I, O> listener = new ProgressStepExecutionListener<>(step);\n\t\t\tbuilder.listener((StepExecutionListener) listener);\n\t\t\tbuilder.listener((ItemWriteListener<?>) listener);\n\t\t}\n\t\tif (step.isLive()) {\n\t\t\tlog.info(\"Creating flushing step with flush interval {} and idle timeout {}\", step.getFlushInterval(),\n\t\t\t\t\tstep.getIdleTimeout());\n\t\t\tFlushingStepBuilder<I, O> flushingStepBuilder = new FlushingStepBuilder<>(builder);\n\t\t\tflushingStepBuilder.flushInterval(step.getFlushInterval());\n\t\t\tflushingStepBuilder.idleTimeout(step.getIdleTimeout());\n\t\t\treturn flushingStepBuilder;\n\t\t}\n\t\treturn builder;\n\t}\n\n\tprivate TaskExecutor taskExecutor() {\n\t\tif (stepArgs.getThreads() == 1) {\n\t\t\treturn new SyncTaskExecutor();\n\t\t}\n\t\tlog.info(\"Creating thread-pool task executor of size {}\", stepArgs.getThreads());\n\t\tThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();\n\t\ttaskExecutor.setMaxPoolSize(stepArgs.getThreads());\n\t\ttaskExecutor.setCorePoolSize(stepArgs.getThreads());\n\t\ttaskExecutor.initialize();\n\t\treturn taskExecutor;\n\t}\n\n\tprivate <I, O> ItemReader<? extends I> reader(Step<I, O> step) {\n\t\tif (stepArgs.getThreads() == 1 || step.getReader() instanceof PollableItemReader) {\n\t\t\treturn step.getReader();\n\t\t}\n\t\tlog.info(\"Synchronizing reader in step {}\", step.getName());\n\t\tif (step.getReader() instanceof ItemStreamReader) {\n\t\t\tSynchronizedItemStreamReader<I> synchronizedReader = new SynchronizedItemStreamReader<>();\n\t\t\tsynchronizedReader.setDelegate((ItemStreamReader<I>) step.getReader());\n\t\t\treturn synchronizedReader;\n\t\t}\n\t\treturn new SynchronizedItemReader<>(step.getReader());\n\t}\n\n\tprivate <I, O> ItemWriter<? super O> writer(Step<I, O> step) {\n\t\tItemWriter<O> writer = step.getWriter();\n\t\tif (stepArgs.isDryRun()) {\n\t\t\tlog.info(\"Using no-op writer\");\n\t\t\twriter = new NoopItemWriter<>();\n\t\t}\n\t\tif (stepArgs.getSleep() != null) {\n\t\t\tlog.info(\"Throttling writer with sleep={}\", stepArgs.getSleep());\n\t\t\twriter = new ThrottledItemWriter<>(writer, stepArgs.getSleep().getValue());\n\t\t}\n\t\treturn writer;\n\t}\n\n\tpublic String getJobName() {\n\t\treturn jobName;\n\t}\n\n\tpublic void setJobName(String name) {\n\t\tthis.jobName = name;\n\t}\n\n\tpublic StepArgs getJobArgs() {\n\t\treturn stepArgs;\n\t}\n\n\tpublic void setJobArgs(StepArgs args) {\n\t\tthis.stepArgs = args;\n\t}\n\n\tpublic String getJobRepositoryName() {\n\t\treturn jobRepositoryName;\n\t}\n\n\tpublic void setJobRepositoryName(String jobRepositoryName) {\n\t\tthis.jobRepositoryName = jobRepositoryName;\n\t}\n\n\tpublic JobRepository getJobRepository() {\n\t\treturn jobRepository;\n\t}\n\n\tpublic void setJobRepository(JobRepository jobRepository) {\n\t\tthis.jobRepository = jobRepository;\n\t}\n\n\tpublic PlatformTransactionManager getTransactionManager() {\n\t\treturn transactionManager;\n\t}\n\n\tpublic void setTransactionManager(PlatformTransactionManager transactionManager) {\n\t\tthis.transactionManager = transactionManager;\n\t}\n\n\tpublic JobLauncher getJobLauncher() {\n\t\treturn jobLauncher;\n\t}\n\n\tpublic void setJobLauncher(JobLauncher jobLauncher) {\n\t\tthis.jobLauncher = jobLauncher;\n\t}\n\n\tpublic JobExplorer getJobExplorer() {\n\t\treturn jobExplorer;\n\t}\n\n\tpublic void setJobExplorer(JobExplorer jobExplorer) {\n\t\tthis.jobExplorer = jobExplorer;\n\t}\n}\n"
  },
  {
    "path": "core/riot-core/src/main/java/com/redis/riot/core/BaseCommand.java",
    "content": "package com.redis.riot.core;\n\nimport java.util.Map;\n\nimport picocli.CommandLine.Command;\nimport picocli.CommandLine.Mixin;\nimport picocli.CommandLine.Model.CommandSpec;\nimport picocli.CommandLine.Option;\nimport picocli.CommandLine.Spec;\n\n@Command(usageHelpAutoWidth = true, mixinStandardHelpOptions = true, abbreviateSynopsis = true)\npublic class BaseCommand {\n\n\tstatic {\n\t\tif (System.getenv().containsKey(\"RIOT_NO_COLOR\")) {\n\t\t\tSystem.setProperty(\"picocli.ansi\", \"false\");\n\t\t}\n\t}\n\n\t@Spec\n\tprotected CommandSpec commandSpec;\n\n\t@Mixin\n\tLoggingMixin loggingMixin;\n\n\t@Option(names = \"-D\", paramLabel = \"<key=value>\", description = \"Sets a System property.\", mapFallbackValue = \"\", hidden = true)\n\tvoid setProperty(Map<String, String> props) {\n\t\tprops.forEach(System::setProperty);\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-core/src/main/java/com/redis/riot/core/CompositeExecutionStrategy.java",
    "content": "package com.redis.riot.core;\n\nimport picocli.CommandLine.ExecutionException;\nimport picocli.CommandLine.IExecutionStrategy;\nimport picocli.CommandLine.ParameterException;\nimport picocli.CommandLine.ParseResult;\n\npublic class CompositeExecutionStrategy implements IExecutionStrategy {\n\n\tprivate final IExecutionStrategy inactive;\n\tprivate final IExecutionStrategy active;\n\n\tpublic CompositeExecutionStrategy(IExecutionStrategy inactive, IExecutionStrategy active) {\n\t\tthis.inactive = inactive;\n\t\tthis.active = active;\n\t}\n\n\t@Override\n\tpublic int execute(ParseResult parseResult) throws ExecutionException, ParameterException {\n\t\tinactive.execute(parseResult);\n\t\treturn active.execute(parseResult);\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-core/src/main/java/com/redis/riot/core/Expression.java",
    "content": "package com.redis.riot.core;\n\nimport java.util.function.Predicate;\n\nimport org.springframework.expression.EvaluationContext;\nimport org.springframework.expression.common.TemplateParserContext;\nimport org.springframework.expression.spel.standard.SpelExpressionParser;\n\npublic class Expression {\n\n\tprotected static final SpelExpressionParser PARSER = new SpelExpressionParser();\n\n\tprotected final org.springframework.expression.Expression spelExpression;\n\n\tpublic Expression(org.springframework.expression.Expression expression) {\n\t\tthis.spelExpression = expression;\n\t}\n\n\t@Override\n\tpublic String toString() {\n\t\treturn spelExpression.getExpressionString();\n\t}\n\n\tpublic <T> Predicate<T> predicate(EvaluationContext context) {\n\t\treturn t -> spelExpression.getValue(context, t, Boolean.class);\n\t}\n\n\tpublic Object getValue(EvaluationContext context) {\n\t\treturn spelExpression.getValue(context);\n\t}\n\n\tpublic Object getValue(EvaluationContext context, Object rootObject) {\n\t\treturn spelExpression.getValue(context, rootObject);\n\t}\n\n\tpublic Long getLong(EvaluationContext context, Object rootObject) {\n\t\treturn spelExpression.getValue(context, rootObject, Long.class);\n\t}\n\n\tpublic String getString(EvaluationContext context, Object rootObject) {\n\t\treturn spelExpression.getValue(context, rootObject, String.class);\n\t}\n\n\tpublic static Expression parse(String expression) {\n\t\treturn new Expression(PARSER.parseExpression(expression));\n\t}\n\n\tpublic static TemplateExpression parseTemplate(String expression) {\n\t\treturn new TemplateExpression(PARSER.parseExpression(expression, new TemplateParserContext()));\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-core/src/main/java/com/redis/riot/core/IO.java",
    "content": "package com.redis.riot.core;\n\nimport java.io.PrintWriter;\n\npublic interface IO {\n\n\tPrintWriter getOut();\n\n\tvoid setOut(PrintWriter out);\n\n\tPrintWriter getErr();\n\n\tvoid setErr(PrintWriter err);\n\n}\n"
  },
  {
    "path": "core/riot-core/src/main/java/com/redis/riot/core/LoggingMixin.java",
    "content": "package com.redis.riot.core;\n\nimport static picocli.CommandLine.Spec.Target.MIXEE;\n\nimport java.util.LinkedHashMap;\nimport java.util.Map;\n\nimport org.slf4j.event.Level;\nimport org.slf4j.simple.SimpleLogger;\n\nimport picocli.CommandLine.Model.CommandSpec;\nimport picocli.CommandLine.Option;\nimport picocli.CommandLine.ParseResult;\nimport picocli.CommandLine.Spec;\n\npublic class LoggingMixin {\n\n\tpublic static final boolean DEFAULT_SHOW_DATE_TIME = true;\n\tpublic static final boolean DEFAULT_SHOW_THREAD_NAME = true;\n\tpublic static final boolean DEFAULT_SHOW_LOG_NAME = true;\n\tpublic static final Level DEFAULT_LEVEL = Level.WARN;\n\n\t/**\n\t * This mixin is able to climb the command hierarchy because the\n\t * {@code @Spec(Target.MIXEE)}-annotated field gets a reference to the command\n\t * where it is used.\n\t */\n\tprivate @Spec(MIXEE) CommandSpec mixee; // spec of the command where the @Mixin is used\n\n\tprivate String file;\n\tprivate boolean showDateTime = DEFAULT_SHOW_DATE_TIME;\n\tprivate String dateTimeFormat;\n\tprivate boolean showThreadId;\n\tprivate boolean showThreadName = DEFAULT_SHOW_THREAD_NAME;\n\tprivate boolean showLogName = DEFAULT_SHOW_LOG_NAME;\n\tprivate boolean showShortLogName;\n\tprivate boolean levelInBrackets;\n\tprivate Map<String, Level> levels = new LinkedHashMap<>();\n\tprivate Level level = DEFAULT_LEVEL;\n\n\tprivate static LoggingMixin getTopLevelCommandLoggingMixin(CommandSpec commandSpec) {\n\t\treturn ((MainCommand) commandSpec.root().userObject()).loggingMixin;\n\t}\n\n\t@Option(names = \"--log-file\", description = \"Log output target. Can be a path or special values System.out and System.err (default: System.err).\", paramLabel = \"<file>\")\n\tpublic void setFile(String file) {\n\t\tgetTopLevelCommandLoggingMixin(mixee).file = file;\n\t}\n\n\t@Option(names = \"--log-time\", description = \"Include current date and time in log messages. True by default.\", negatable = true, defaultValue = \"true\", fallbackValue = \"true\")\n\tpublic void setShowDateTime(boolean show) {\n\t\tgetTopLevelCommandLoggingMixin(mixee).showDateTime = show;\n\t}\n\n\t@Option(names = \"--log-time-fmt\", defaultValue = \"yyyy-MM-dd HH:mm:ss.SSS\", description = \"Date and time format to be used in log messages (default: ${DEFAULT-VALUE}). Use with --log-time.\", paramLabel = \"<f>\")\n\tpublic void setDateTimeFormat(String format) {\n\t\tgetTopLevelCommandLoggingMixin(mixee).dateTimeFormat = format;\n\t}\n\n\t@Option(names = \"--log-thread-id\", description = \"Include current thread ID in log messages.\", hidden = true)\n\tpublic void setShowThreadId(boolean show) {\n\t\tgetTopLevelCommandLoggingMixin(mixee).showThreadId = show;\n\t}\n\n\t@Option(names = \"--log-thread\", description = \"Show current thread name in log messages. True by default.\", negatable = true, defaultValue = \"true\", fallbackValue = \"true\", hidden = true)\n\tpublic void setShowThreadName(boolean show) {\n\t\tgetTopLevelCommandLoggingMixin(mixee).showThreadName = show;\n\t}\n\n\t@Option(names = \"--log-name\", description = \"Show logger instance name in log messages. True by default.\", negatable = true, defaultValue = \"true\", fallbackValue = \"true\", hidden = true)\n\tpublic void setShowLogName(boolean show) {\n\t\tgetTopLevelCommandLoggingMixin(mixee).showLogName = show;\n\t}\n\n\t@Option(names = \"--log-short\", description = \"Include last component of logger instance name in log messages. True by default.\", negatable = true, defaultValue = \"true\", fallbackValue = \"true\", hidden = true)\n\tpublic void setShowShortLogName(boolean show) {\n\t\tgetTopLevelCommandLoggingMixin(mixee).showShortLogName = show;\n\t}\n\n\t@Option(names = \"--log-level-brck\", description = \"Output log level string in brackets.\", hidden = true)\n\tpublic void setLevelInBrackets(boolean enable) {\n\t\tgetTopLevelCommandLoggingMixin(mixee).levelInBrackets = enable;\n\t}\n\n\t@Option(arity = \"1..*\", names = \"--log\", description = \"Custom log levels (e.g.: io.lettuce=INFO).\", paramLabel = \"<lvl>\")\n\tpublic void setLevels(Map<String, Level> levels) {\n\t\tgetTopLevelCommandLoggingMixin(mixee).levels = levels;\n\t}\n\n\t@Option(names = { \"-d\", \"--debug\" }, description = \"Log in debug mode.\")\n\tpublic void setDebug(boolean enable) {\n\t\tif (enable) {\n\t\t\tgetTopLevelCommandLoggingMixin(mixee).level = Level.DEBUG;\n\t\t}\n\t}\n\n\t@Option(names = { \"-i\", \"--info\" }, description = \"Set log level to info.\")\n\tpublic void setInfo(boolean enable) {\n\t\tif (enable) {\n\t\t\tgetTopLevelCommandLoggingMixin(mixee).level = Level.INFO;\n\t\t}\n\t}\n\n\t@Option(names = { \"-q\", \"--quiet\" }, description = \"Log errors only.\")\n\tpublic void setError(boolean enable) {\n\t\tif (enable) {\n\t\t\tgetTopLevelCommandLoggingMixin(mixee).level = Level.ERROR;\n\t\t}\n\t}\n\n\t@Option(names = \"--log-level\", description = \"Set log level: ${COMPLETION-CANDIDATES} (default: WARN).\", paramLabel = \"<lvl>\", hidden = true)\n\tpublic void setLevel(Level level) {\n\t\tgetTopLevelCommandLoggingMixin(mixee).level = level;\n\t}\n\n\tpublic static int executionStrategy(ParseResult parseResult) {\n\t\tgetTopLevelCommandLoggingMixin(parseResult.commandSpec()).configureLoggers();\n\t\treturn 0;\n\t}\n\n\tpublic void configureLoggers() {\n\t\tLoggingMixin mixin = getTopLevelCommandLoggingMixin(mixee);\n\t\tSystem.setProperty(SimpleLogger.DEFAULT_LOG_LEVEL_KEY, mixin.level.name());\n\t\tif (mixin.file != null) {\n\t\t\tSystem.setProperty(SimpleLogger.LOG_FILE_KEY, mixin.file);\n\t\t}\n\t\tsetBoolean(SimpleLogger.SHOW_DATE_TIME_KEY, mixin.showDateTime);\n\t\tif (mixin.dateTimeFormat != null) {\n\t\t\tSystem.setProperty(SimpleLogger.DATE_TIME_FORMAT_KEY, mixin.dateTimeFormat);\n\t\t}\n\t\tsetBoolean(SimpleLogger.SHOW_THREAD_ID_KEY, mixin.showThreadId);\n\t\tsetBoolean(SimpleLogger.SHOW_THREAD_NAME_KEY, mixin.showThreadName);\n\t\tsetBoolean(SimpleLogger.SHOW_LOG_NAME_KEY, mixin.showLogName);\n\t\tsetBoolean(SimpleLogger.SHOW_SHORT_LOG_NAME_KEY, mixin.showShortLogName);\n\t\tsetBoolean(SimpleLogger.LEVEL_IN_BRACKETS_KEY, mixin.levelInBrackets);\n\t\tsetLogLevel(\"com.amazonaws.internal\", Level.ERROR);\n\t\tsetLogLevel(\"com.redis.spring.batch.step.FlushingFaultTolerantStepBuilder\", Level.ERROR);\n\t\tsetLogLevel(\"org.springframework.batch.core.step.builder.FaultTolerantStepBuilder\", Level.ERROR);\n\t\tsetLogLevel(\"org.springframework.batch.core.step.item.ChunkMonitor\", Level.ERROR);\n\t\tmixin.levels.forEach(this::setLogLevel);\n\t}\n\n\tprivate void setLogLevel(String key, Level level) {\n\t\tSystem.setProperty(SimpleLogger.LOG_KEY_PREFIX + key, level.name());\n\t}\n\n\tprivate void setBoolean(String property, boolean value) {\n\t\tSystem.setProperty(property, String.valueOf(value));\n\t}\n\n\tpublic boolean isStacktrace() {\n\t\treturn level.toInt() <= Level.INFO.toInt();\n\t}\n\n}"
  },
  {
    "path": "core/riot-core/src/main/java/com/redis/riot/core/MainCommand.java",
    "content": "package com.redis.riot.core;\n\nimport java.io.PrintWriter;\nimport java.util.concurrent.Callable;\n\nimport org.springframework.util.unit.DataSize;\n\nimport picocli.CommandLine;\nimport picocli.CommandLine.ParseResult;\nimport picocli.CommandLine.RunLast;\n\npublic class MainCommand extends BaseCommand implements Callable<Integer>, IO {\n\n\tprivate PrintWriter out;\n\tprivate PrintWriter err;\n\n\t@Override\n\tpublic Integer call() throws Exception {\n\t\tcommandSpec.commandLine().usage(out);\n\t\treturn 0;\n\t}\n\n\tprotected CommandLine commandLine() {\n\t\treturn new CommandLine(this);\n\t}\n\n\tpublic int run(String... args) {\n\t\tCommandLine commandLine = commandLine();\n\t\tsetOut(commandLine.getOut());\n\t\tsetErr(commandLine.getErr());\n\t\tcommandLine.setCaseInsensitiveEnumValuesAllowed(true);\n\t\tcommandLine.setUnmatchedOptionsAllowedAsOptionParameters(false);\n\t\tcommandLine.setExecutionExceptionHandler(new PrintExceptionMessageHandler());\n\t\tregisterConverters(commandLine);\n\t\tcommandLine.setExecutionStrategy(\n\t\t\t\tnew CompositeExecutionStrategy(LoggingMixin::executionStrategy, this::executionStrategy));\n\t\treturn commandLine.execute(args);\n\t}\n\n\tprotected int executionStrategy(ParseResult parseResult) {\n\t\treturn new RunLast().execute(parseResult);\n\t}\n\n\tprotected void registerConverters(CommandLine commandLine) {\n\t\tcommandLine.registerConverter(RiotDuration.class, RiotDuration::parse);\n\t\tcommandLine.registerConverter(DataSize.class, MainCommand::parseDataSize);\n\t\tcommandLine.registerConverter(Expression.class, Expression::parse);\n\t\tcommandLine.registerConverter(TemplateExpression.class, Expression::parseTemplate);\n\t}\n\n\tpublic static DataSize parseDataSize(String string) {\n\t\treturn DataSize.parse(string.toUpperCase());\n\t}\n\n\t@Override\n\tpublic PrintWriter getOut() {\n\t\treturn out;\n\t}\n\n\t@Override\n\tpublic void setOut(PrintWriter out) {\n\t\tthis.out = out;\n\t}\n\n\t@Override\n\tpublic PrintWriter getErr() {\n\t\treturn err;\n\t}\n\n\t@Override\n\tpublic void setErr(PrintWriter err) {\n\t\tthis.err = err;\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-core/src/main/java/com/redis/riot/core/NoopItemWriter.java",
    "content": "package com.redis.riot.core;\n\nimport org.springframework.batch.item.Chunk;\nimport org.springframework.batch.item.ItemWriter;\n\npublic class NoopItemWriter<T> implements ItemWriter<T> {\n\n\t@Override\n\tpublic void write(Chunk<? extends T> items) {\n\t\t// Do nothing\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-core/src/main/java/com/redis/riot/core/PrintExceptionMessageHandler.java",
    "content": "package com.redis.riot.core;\n\nimport picocli.CommandLine;\nimport picocli.CommandLine.IExecutionExceptionHandler;\nimport picocli.CommandLine.ParseResult;\n\npublic class PrintExceptionMessageHandler implements IExecutionExceptionHandler {\n\n\tpublic int handleExecutionException(Exception exception, CommandLine cmd, ParseResult parseResult) {\n\n\t\tThrowable finalException = unwrapException(exception);\n\n\t\tif (cmd.getCommand() instanceof BaseCommand) {\n\t\t\tif (((BaseCommand) cmd.getCommand()).loggingMixin.isStacktrace()) {\n\t\t\t\tfinalException.printStackTrace(cmd.getErr());\n\t\t\t}\n\t\t}\n\n\t\t// bold red error message\n\t\tcmd.getErr().println(cmd.getColorScheme().errorText(finalException.getMessage()));\n\n\t\treturn cmd.getExitCodeExceptionMapper() != null ? cmd.getExitCodeExceptionMapper().getExitCode(finalException)\n\t\t\t\t: cmd.getCommandSpec().exitCodeOnExecutionException();\n\t}\n\n\tprivate Throwable unwrapException(Exception exception) {\n\t\tif (exception instanceof RiotException) {\n\t\t\tRiotException riotException = (RiotException) exception;\n\t\t\tif (riotException.getCause() == null) {\n\t\t\t\treturn riotException;\n\t\t\t}\n\t\t\treturn riotException.getCause();\n\t\t}\n\t\treturn exception;\n\t}\n\n}"
  },
  {
    "path": "core/riot-core/src/main/java/com/redis/riot/core/ProcessingItemWriter.java",
    "content": "package com.redis.riot.core;\n\nimport org.springframework.batch.item.Chunk;\nimport org.springframework.batch.item.ExecutionContext;\nimport org.springframework.batch.item.ItemProcessor;\nimport org.springframework.batch.item.ItemStream;\nimport org.springframework.batch.item.ItemStreamException;\nimport org.springframework.batch.item.ItemStreamSupport;\nimport org.springframework.batch.item.ItemStreamWriter;\nimport org.springframework.batch.item.ItemWriter;\nimport org.springframework.util.ClassUtils;\n\npublic class ProcessingItemWriter<S, T> extends ItemStreamSupport implements ItemStreamWriter<S> {\n\n\tprivate final ItemProcessor<S, T> processor;\n\tprivate final ItemWriter<T> writer;\n\n\tpublic ProcessingItemWriter(ItemProcessor<S, T> processor, ItemWriter<T> writer) {\n\t\tsetName(ClassUtils.getShortName(getClass()));\n\t\tthis.processor = processor;\n\t\tthis.writer = writer;\n\t}\n\n\t@Override\n\tpublic void open(ExecutionContext executionContext) throws ItemStreamException {\n\t\tif (processor instanceof ItemStream) {\n\t\t\t((ItemStream) processor).open(executionContext);\n\n\t\t}\n\t\tif (writer instanceof ItemStream) {\n\t\t\t((ItemStream) writer).open(executionContext);\n\t\t}\n\t}\n\n\t@Override\n\tpublic void close() throws ItemStreamException {\n\t\tif (writer instanceof ItemStream) {\n\t\t\t((ItemStream) writer).close();\n\t\t}\n\t\tif (processor instanceof ItemStream) {\n\t\t\t((ItemStream) processor).close();\n\t\t}\n\t}\n\n\t@Override\n\tpublic void update(ExecutionContext executionContext) throws ItemStreamException {\n\t\tif (processor instanceof ItemStream) {\n\t\t\t((ItemStream) processor).update(executionContext);\n\t\t}\n\t\tif (writer instanceof ItemStream) {\n\t\t\t((ItemStream) writer).update(executionContext);\n\t\t}\n\t}\n\n\t@Override\n\tpublic void write(Chunk<? extends S> chunk) throws Exception {\n\t\tChunk<T> processedChunk = new Chunk<>();\n\t\tfor (S item : chunk) {\n\t\t\tT processedItem = processor.process(item);\n\t\t\tif (processedItem != null) {\n\t\t\t\tprocessedChunk.add(processedItem);\n\t\t\t}\n\t\t}\n\t\twriter.write(processedChunk);\n\t}\n\n}"
  },
  {
    "path": "core/riot-core/src/main/java/com/redis/riot/core/ProgressArgs.java",
    "content": "package com.redis.riot.core;\n\nimport lombok.ToString;\nimport picocli.CommandLine.Option;\n\n@ToString\npublic class ProgressArgs {\n\n\tpublic static final RiotDuration DEFAULT_UPDATE_INTERVAL = RiotDuration.ofSeconds(1);\n\tpublic static final ProgressStyle DEFAULT_STYLE = ProgressStyle.ASCII;\n\n\t@Option(names = \"--progress\", description = \"Progress style: ${COMPLETION-CANDIDATES} (default: ${DEFAULT-VALUE}).\", paramLabel = \"<style>\")\n\tprivate ProgressStyle style = DEFAULT_STYLE;\n\n\t@Option(names = \"--progress-rate\", description = \"Progress update interval (default: ${DEFAULT-VALUE}).\", paramLabel = \"<dur>\", hidden = true)\n\tprivate RiotDuration updateInterval = DEFAULT_UPDATE_INTERVAL;\n\n\tpublic ProgressStyle getStyle() {\n\t\treturn style;\n\t}\n\n\tpublic void setStyle(ProgressStyle style) {\n\t\tthis.style = style;\n\t}\n\n\tpublic RiotDuration getUpdateInterval() {\n\t\treturn updateInterval;\n\t}\n\n\tpublic void setUpdateInterval(RiotDuration interval) {\n\t\tthis.updateInterval = interval;\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-core/src/main/java/com/redis/riot/core/ProgressStepExecutionListener.java",
    "content": "package com.redis.riot.core;\n\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.springframework.batch.core.ExitStatus;\nimport org.springframework.batch.core.ItemWriteListener;\nimport org.springframework.batch.core.StepExecution;\nimport org.springframework.batch.core.StepExecutionListener;\nimport org.springframework.batch.item.Chunk;\n\nimport me.tongfei.progressbar.DelegatingProgressBarConsumer;\nimport me.tongfei.progressbar.ProgressBar;\nimport me.tongfei.progressbar.ProgressBarBuilder;\nimport me.tongfei.progressbar.ProgressBarStyle;\n\n/**\n * Listener tracking writer or step progress with by a progress bar.\n * \n * @author Julien Ruaux\n * @since 3.1.2\n */\n@SuppressWarnings(\"rawtypes\")\npublic class ProgressStepExecutionListener<I, O> implements StepExecutionListener, ItemWriteListener {\n\n\tprivate final Step<I, O> step;\n\n\tprivate ProgressArgs progressArgs = new ProgressArgs();\n\n\tprivate ProgressBar progressBar;\n\n\tpublic ProgressStepExecutionListener(Step<I, O> step) {\n\t\tthis.step = step;\n\t}\n\n\t@Override\n\tpublic void beforeStep(StepExecution stepExecution) {\n\t\tProgressBarBuilder progressBarBuilder = new ProgressBarBuilder();\n\t\tprogressBarBuilder.setTaskName(step.getTaskName());\n\t\tprogressBarBuilder.setStyle(progressBarStyle());\n\t\tprogressBarBuilder\n\t\t\t\t.setUpdateIntervalMillis(Math.toIntExact(progressArgs.getUpdateInterval().getValue().toMillis()));\n\t\tprogressBarBuilder.showSpeed();\n\t\tif (progressArgs.getStyle() == ProgressStyle.LOG) {\n\t\t\tLogger logger = LoggerFactory.getLogger(getClass());\n\t\t\tprogressBarBuilder.setConsumer(new DelegatingProgressBarConsumer(logger::info));\n\t\t}\n\t\tprogressBarBuilder.setInitialMax(step.maxItemCount());\n\t\tthis.progressBar = progressBarBuilder.build();\n\t}\n\n\tprivate ProgressBarStyle progressBarStyle() {\n\t\tswitch (progressArgs.getStyle()) {\n\t\tcase BAR:\n\t\t\treturn ProgressBarStyle.COLORFUL_UNICODE_BAR;\n\t\tcase BLOCK:\n\t\t\treturn ProgressBarStyle.COLORFUL_UNICODE_BLOCK;\n\t\tdefault:\n\t\t\treturn ProgressBarStyle.ASCII;\n\t\t}\n\t}\n\n\t@Override\n\tpublic void afterWrite(Chunk items) {\n\t\tif (progressBar != null) {\n\t\t\tprogressBar.stepBy(items.size());\n\t\t\tprogressBar.setExtraMessage(step.statusMessage());\n\t\t}\n\t}\n\n\t@Override\n\tpublic ExitStatus afterStep(StepExecution stepExecution) {\n\t\tif (progressBar != null) {\n\t\t\tif (!stepExecution.getStatus().isUnsuccessful()) {\n\t\t\t\tprogressBar.stepTo(progressBar.getMax());\n\t\t\t}\n\t\t\tprogressBar.close();\n\t\t\tprogressBar = null;\n\t\t}\n\t\treturn stepExecution.getExitStatus();\n\t}\n\n\tpublic ProgressArgs getProgressArgs() {\n\t\treturn progressArgs;\n\t}\n\n\tpublic void setProgressArgs(ProgressArgs args) {\n\t\tthis.progressArgs = args;\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-core/src/main/java/com/redis/riot/core/ProgressStyle.java",
    "content": "package com.redis.riot.core;\n\npublic enum ProgressStyle {\n\n\tBLOCK, BAR, ASCII, LOG, NONE\n\n}"
  },
  {
    "path": "core/riot-core/src/main/java/com/redis/riot/core/QuietMapAccessor.java",
    "content": "package com.redis.riot.core;\n\nimport org.springframework.context.expression.MapAccessor;\nimport org.springframework.expression.AccessException;\nimport org.springframework.expression.EvaluationContext;\nimport org.springframework.expression.TypedValue;\nimport org.springframework.lang.Nullable;\n\n/**\n * {@link org.springframework.context.expression.MapAccessor} that always\n * returns true for canRead and does not throw AccessExceptions\n */\npublic class QuietMapAccessor extends MapAccessor {\n\n\t@Override\n\tpublic boolean canRead(EvaluationContext context, @Nullable Object target, String name) {\n\t\treturn true;\n\t}\n\n\t@Override\n\tpublic TypedValue read(EvaluationContext context, @Nullable Object target, String name) {\n\t\ttry {\n\t\t\treturn super.read(context, target, name);\n\t\t} catch (AccessException e) {\n\t\t\treturn new TypedValue(null);\n\t\t}\n\t}\n\n}"
  },
  {
    "path": "core/riot-core/src/main/java/com/redis/riot/core/RetryPolicy.java",
    "content": "package com.redis.riot.core;\n\npublic enum RetryPolicy {\n\n\tALWAYS, NEVER, LIMIT\n\n}\n"
  },
  {
    "path": "core/riot-core/src/main/java/com/redis/riot/core/RiotDuration.java",
    "content": "package com.redis.riot.core;\n\nimport java.time.Duration;\nimport java.time.temporal.ChronoUnit;\n\nimport org.springframework.boot.convert.DurationStyle;\nimport org.springframework.util.Assert;\n\n/**\n * Wrapper around java.time.Duration with a custom toString\n */\npublic class RiotDuration {\n\n\tprivate final Duration value;\n\tprivate final ChronoUnit displayUnit;\n\n\tpublic RiotDuration(long value, ChronoUnit unit) {\n\t\tthis(Duration.of(value, unit), unit);\n\t}\n\n\tpublic RiotDuration(Duration duration, ChronoUnit displayUnit) {\n\t\tAssert.notNull(duration, \"Duration must not be null\");\n\t\tAssert.notNull(displayUnit, \"Unit must not be null\");\n\t\tthis.value = duration;\n\t\tthis.displayUnit = displayUnit;\n\t}\n\n\tpublic Duration getValue() {\n\t\treturn value;\n\t}\n\n\t@Override\n\tpublic String toString() {\n\t\treturn DurationStyle.SIMPLE.print(value, displayUnit);\n\t}\n\n\tpublic static RiotDuration parse(String string) {\n\t\treturn new RiotDuration(DurationStyle.SIMPLE.parse(string), ChronoUnit.MILLIS);\n\t}\n\n\tpublic static RiotDuration of(long value, ChronoUnit unit) {\n\t\treturn new RiotDuration(value, unit);\n\t}\n\n\tpublic static RiotDuration of(Duration duration, ChronoUnit unit) {\n\t\treturn new RiotDuration(duration, unit);\n\t}\n\n\tpublic static RiotDuration ofSeconds(long seconds) {\n\t\treturn new RiotDuration(seconds, ChronoUnit.SECONDS);\n\t}\n\n\tpublic static RiotDuration ofMillis(long millis) {\n\t\treturn new RiotDuration(millis, ChronoUnit.MILLIS);\n\t}\n}\n"
  },
  {
    "path": "core/riot-core/src/main/java/com/redis/riot/core/RiotException.java",
    "content": "package com.redis.riot.core;\n\n@SuppressWarnings(\"serial\")\npublic class RiotException extends RuntimeException {\n\n\tpublic RiotException(String message, Throwable cause) {\n\t\tsuper(message, cause);\n\t}\n\n\tpublic RiotException(String message) {\n\t\tsuper(message);\n\t}\n\n\tpublic RiotException(Throwable cause) {\n\t\tsuper(cause);\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-core/src/main/java/com/redis/riot/core/RiotUtils.java",
    "content": "package com.redis.riot.core;\n\nimport static java.nio.charset.StandardCharsets.UTF_8;\n\nimport java.io.BufferedWriter;\nimport java.io.ByteArrayOutputStream;\nimport java.io.OutputStream;\nimport java.io.OutputStreamWriter;\nimport java.io.PrintStream;\nimport java.io.PrintWriter;\nimport java.io.UnsupportedEncodingException;\nimport java.time.Duration;\nimport java.util.Collection;\nimport java.util.List;\nimport java.util.Objects;\nimport java.util.function.Function;\nimport java.util.stream.Collectors;\nimport java.util.stream.IntStream;\nimport java.util.stream.Stream;\nimport java.util.stream.StreamSupport;\n\nimport org.springframework.batch.item.ItemProcessor;\nimport org.springframework.batch.item.function.FunctionItemProcessor;\nimport org.springframework.batch.item.support.CompositeItemProcessor;\nimport org.springframework.expression.spel.support.StandardEvaluationContext;\nimport org.springframework.util.ClassUtils;\nimport org.springframework.util.ObjectUtils;\n\npublic abstract class RiotUtils {\n\n\tprivate RiotUtils() {\n\t}\n\n\tpublic static String mask(char[] password) {\n\t\tif (ObjectUtils.isEmpty(password)) {\n\t\t\treturn null;\n\t\t}\n\t\treturn mask(password.length);\n\t}\n\n\tprivate static String mask(int length) {\n\t\treturn IntStream.range(0, length).mapToObj(i -> \"*\").collect(Collectors.joining());\n\t}\n\n\tpublic static String mask(String password) {\n\t\tif (ObjectUtils.isEmpty(password)) {\n\t\t\treturn null;\n\t\t}\n\t\treturn mask(password.length());\n\t}\n\n\tpublic static <S, T> ItemProcessor<S, T> processor(Collection<? extends Function<?, ?>> functions) {\n\t\treturn processor(functions.toArray(new Function[0]));\n\t}\n\n\t@SuppressWarnings(\"unchecked\")\n\tpublic static <S, T> ItemProcessor<S, T> processor(Function<?, ?>... functions) {\n\t\treturn processor(Stream.of(functions).filter(Objects::nonNull).map(FunctionItemProcessor::new)\n\t\t\t\t.toArray(ItemProcessor[]::new));\n\t}\n\n\tpublic static <S, T> ItemProcessor<S, T> processor(ItemProcessor<?, ?>... processors) {\n\t\treturn processor(Stream.of(processors));\n\t}\n\n\tpublic static <S, T> ItemProcessor<S, T> processor(Iterable<? extends ItemProcessor<?, ?>> processors) {\n\t\treturn processor(StreamSupport.stream(processors.spliterator(), false));\n\t}\n\n\t@SuppressWarnings(\"unchecked\")\n\tpublic static <S, T> ItemProcessor<S, T> processor(Stream<? extends ItemProcessor<?, ?>> processors) {\n\t\tList<? extends ItemProcessor<?, ?>> list = processors.filter(Objects::nonNull).collect(Collectors.toList());\n\t\tif (list.isEmpty()) {\n\t\t\treturn null;\n\t\t}\n\t\tif (list.size() > 1) {\n\t\t\tCompositeItemProcessor<S, T> composite = new CompositeItemProcessor<>();\n\t\t\tcomposite.setDelegates(list);\n\t\t\treturn composite;\n\t\t}\n\t\treturn (ItemProcessor<S, T>) list.get(0);\n\t}\n\n\tpublic static boolean isPositive(Duration duration) {\n\t\treturn duration != null && !duration.isNegative() && !duration.isZero();\n\t}\n\n\tpublic static PrintStream newPrintStream(OutputStream out) {\n\t\treturn newPrintStream(out, true);\n\t}\n\n\tpublic static PrintStream newPrintStream(OutputStream out, boolean autoFlush) {\n\t\ttry {\n\t\t\treturn new PrintStream(out, autoFlush, UTF_8.name());\n\t\t} catch (UnsupportedEncodingException e) {\n\t\t\tthrow new IllegalArgumentException(e);\n\t\t}\n\t}\n\n\tpublic static PrintWriter newPrintWriter(OutputStream out) {\n\t\treturn newPrintWriter(out, true);\n\t}\n\n\tpublic static PrintWriter newPrintWriter(OutputStream out, boolean autoFlush) {\n\t\treturn new PrintWriter(new BufferedWriter(new OutputStreamWriter(out, UTF_8)), autoFlush);\n\t}\n\n\tpublic static String toString(ByteArrayOutputStream out) {\n\t\ttry {\n\t\t\treturn out.toString(UTF_8.name());\n\t\t} catch (UnsupportedEncodingException e) {\n\t\t\tthrow new IllegalArgumentException(e);\n\t\t}\n\t}\n\n\tpublic static void registerFunction(StandardEvaluationContext context, String functionName, Class<?> clazz,\n\t\t\tString methodName, Class<?>... parameterTypes) {\n\t\ttry {\n\t\t\tcontext.registerFunction(functionName, clazz.getDeclaredMethod(methodName, parameterTypes));\n\t\t} catch (Exception e) {\n\t\t\tthrow new UnsupportedOperationException(\n\t\t\t\t\tString.format(\"Could not get method %s.%s\", ClassUtils.getQualifiedName(clazz), methodName), e);\n\t\t}\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-core/src/main/java/com/redis/riot/core/RiotVersion.java",
    "content": "package com.redis.riot.core;\n\nimport java.io.PrintStream;\nimport java.io.PrintWriter;\nimport java.util.ResourceBundle;\n\npublic class RiotVersion {\n\n\tprivate static final ResourceBundle BUNDLE = ResourceBundle.getBundle(RiotVersion.class.getName());\n\tprivate static final String RIOT_VERSION = BUNDLE.getString(\"riot_version\");\n\tprivate static final String SEPARATOR = \"------------------------------------------------------------%n\";\n\tprivate static final String RIOT_FORMAT = \"riot %s%n\";\n\n\tprivate RiotVersion() {\n\t\t// noop\n\t}\n\n\tpublic static String getVersion() {\n\t\treturn RIOT_VERSION;\n\t}\n\n\tpublic static void banner(PrintStream out) {\n\t\tbanner(out, true);\n\t}\n\n\tpublic static void banner(PrintStream out, boolean full) {\n\t\tbanner(RiotUtils.newPrintWriter(out), full);\n\t}\n\n\tpublic static void banner(PrintWriter out) {\n\t\tbanner(out, true);\n\t}\n\n\tpublic static void banner(PrintWriter out, boolean full) {\n\t\tbanner(out, full, BUNDLE, RIOT_FORMAT, RIOT_VERSION);\n\t}\n\n\tpublic static void banner(PrintWriter out, boolean full, ResourceBundle bundle, String format, String version) {\n\t\tif (full) {\n\t\t\tout.printf(SEPARATOR);\n\t\t\tout.printf(format, version);\n\t\t\tout.printf(SEPARATOR);\n\t\t\tout.printf(\"Build time:   %s %s%n\", bundle.getString(\"build_date\"), bundle.getString(\"build_time\"));\n\t\t\tout.printf(\"Revision:     %s%n\", bundle.getString(\"build_revision\"));\n\t\t\tout.printf(\"JVM:          %s (%s %s)%n\", System.getProperty(\"java.version\"),\n\t\t\t\t\tSystem.getProperty(\"java.vendor\"), System.getProperty(\"java.vm.version\"));\n\t\t\tout.printf(SEPARATOR);\n\t\t} else {\n\t\t\tout.printf(format, version);\n\t\t}\n\t}\n\n}"
  },
  {
    "path": "core/riot-core/src/main/java/com/redis/riot/core/SkipPolicy.java",
    "content": "package com.redis.riot.core;\n\npublic enum SkipPolicy {\n\n\tALWAYS, NEVER, LIMIT\n\n}\n"
  },
  {
    "path": "core/riot-core/src/main/java/com/redis/riot/core/Step.java",
    "content": "package com.redis.riot.core;\n\nimport java.time.Duration;\nimport java.util.Collection;\nimport java.util.HashSet;\nimport java.util.LinkedHashSet;\nimport java.util.Set;\nimport java.util.function.LongSupplier;\nimport java.util.function.Supplier;\n\nimport org.springframework.batch.core.ItemReadListener;\nimport org.springframework.batch.core.ItemWriteListener;\nimport org.springframework.batch.core.StepExecutionListener;\nimport org.springframework.batch.item.ItemProcessor;\nimport org.springframework.batch.item.ItemReader;\nimport org.springframework.batch.item.ItemWriter;\n\nimport com.redis.spring.batch.step.FlushingChunkProvider;\n\nimport lombok.ToString;\n\n@ToString\npublic class Step<I, O> {\n\n\tprivate static final long NO_MAX_ITEM_COUNT = -1;\n\tprivate static final String EMPTY_STRING = \"\";\n\tpublic static final String DEFAULT_NAME = \"step\";\n\n\tprivate String name = DEFAULT_NAME;\n\tprivate final ItemReader<I> reader;\n\tprivate final ItemWriter<O> writer;\n\tprivate String taskName;\n\tprivate Supplier<String> statusMessageSupplier = () -> EMPTY_STRING;\n\tprivate LongSupplier maxItemCountSupplier = () -> NO_MAX_ITEM_COUNT;\n\tprivate ItemProcessor<I, O> processor;\n\tprivate Set<StepExecutionListener> executionListeners = new LinkedHashSet<>();\n\tprivate Set<ItemReadListener<I>> readListeners = new LinkedHashSet<>();\n\tprivate Set<ItemWriteListener<O>> writeListeners = new LinkedHashSet<>();\n\tprivate boolean live;\n\tprivate Duration flushInterval = FlushingChunkProvider.DEFAULT_FLUSH_INTERVAL;\n\tprivate Duration idleTimeout = FlushingChunkProvider.DEFAULT_IDLE_TIMEOUT;\n\tprivate Collection<Class<? extends Throwable>> skip = new HashSet<>();\n\tprivate Collection<Class<? extends Throwable>> noSkip = new HashSet<>();\n\tprivate Collection<Class<? extends Throwable>> retry = new HashSet<>();\n\tprivate Collection<Class<? extends Throwable>> noRetry = new HashSet<>();\n\n\tpublic Step(ItemReader<I> reader, ItemWriter<O> writer) {\n\t\tthis.reader = reader;\n\t\tthis.writer = writer;\n\t}\n\n\tpublic String getName() {\n\t\treturn name;\n\t}\n\n\tpublic Step<I, O> name(String name) {\n\t\tthis.name = name;\n\t\treturn this;\n\t}\n\n\tpublic String getTaskName() {\n\t\treturn taskName;\n\t}\n\n\tpublic Step<I, O> taskName(String name) {\n\t\tthis.taskName = name;\n\t\treturn this;\n\t}\n\n\tpublic ItemReader<I> getReader() {\n\t\treturn reader;\n\t}\n\n\tpublic ItemProcessor<I, O> getProcessor() {\n\t\treturn processor;\n\t}\n\n\tpublic ItemWriter<O> getWriter() {\n\t\treturn writer;\n\t}\n\n\tpublic long maxItemCount() {\n\t\treturn maxItemCountSupplier.getAsLong();\n\t}\n\n\tpublic String statusMessage() {\n\t\treturn statusMessageSupplier.get();\n\t}\n\n\tpublic Supplier<String> getStatusMessageSupplier() {\n\t\treturn statusMessageSupplier;\n\t}\n\n\tpublic Step<I, O> statusMessageSupplier(Supplier<String> supplier) {\n\t\tthis.statusMessageSupplier = supplier;\n\t\treturn this;\n\t}\n\n\tpublic LongSupplier getMaxItemCountSupplier() {\n\t\treturn maxItemCountSupplier;\n\t}\n\n\tpublic Step<I, O> maxItemCountSupplier(LongSupplier supplier) {\n\t\tthis.maxItemCountSupplier = supplier;\n\t\treturn this;\n\t}\n\n\tpublic Step<I, O> processor(ItemProcessor<I, O> processor) {\n\t\tthis.processor = processor;\n\t\treturn this;\n\t}\n\n\tpublic Step<I, O> maxItemCount(int count) {\n\t\treturn maxItemCountSupplier(() -> count);\n\t}\n\n\tpublic Set<ItemReadListener<I>> getReadListeners() {\n\t\treturn readListeners;\n\t}\n\n\tpublic Step<I, O> readListener(ItemReadListener<I> listener) {\n\t\tthis.readListeners.add(listener);\n\t\treturn this;\n\t}\n\n\tpublic Set<ItemWriteListener<O>> getWriteListeners() {\n\t\treturn writeListeners;\n\t}\n\n\tpublic Step<I, O> writeListener(ItemWriteListener<O> listener) {\n\t\twriteListeners.add(listener);\n\t\treturn this;\n\t}\n\n\tpublic Set<StepExecutionListener> getExecutionListeners() {\n\t\treturn executionListeners;\n\t}\n\n\tpublic Step<I, O> executionListener(StepExecutionListener listener) {\n\t\texecutionListeners.add(listener);\n\t\treturn this;\n\t}\n\n\tpublic Duration getFlushInterval() {\n\t\treturn flushInterval;\n\t}\n\n\tpublic Step<I, O> flushInterval(Duration flushInterval) {\n\t\tthis.flushInterval = flushInterval;\n\t\treturn this;\n\t}\n\n\tpublic Duration getIdleTimeout() {\n\t\treturn idleTimeout;\n\t}\n\n\tpublic Step<I, O> idleTimeout(Duration idleTimeout) {\n\t\tthis.idleTimeout = idleTimeout;\n\t\treturn this;\n\t}\n\n\tpublic boolean isLive() {\n\t\treturn live;\n\t}\n\n\tpublic Step<I, O> live(boolean live) {\n\t\tthis.live = live;\n\t\treturn this;\n\t}\n\n\tpublic Step<I, O> skip(Class<? extends Throwable> exception) {\n\t\tskip.add(exception);\n\t\treturn this;\n\t}\n\n\tpublic Step<I, O> retry(Class<? extends Throwable> exception) {\n\t\tretry.add(exception);\n\t\treturn this;\n\t}\n\n\tpublic Step<I, O> noSkip(Class<? extends Throwable> exception) {\n\t\tnoSkip.add(exception);\n\t\treturn this;\n\t}\n\n\tpublic Step<I, O> noRetry(Class<? extends Throwable> exception) {\n\t\tnoRetry.add(exception);\n\t\treturn this;\n\t}\n\n\tpublic Collection<Class<? extends Throwable>> getNoRetry() {\n\t\treturn noRetry;\n\t}\n\n\tpublic Collection<Class<? extends Throwable>> getNoSkip() {\n\t\treturn noSkip;\n\t}\n\n\tpublic Collection<Class<? extends Throwable>> getRetry() {\n\t\treturn retry;\n\t}\n\n\tpublic Collection<Class<? extends Throwable>> getSkip() {\n\t\treturn skip;\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-core/src/main/java/com/redis/riot/core/StepArgs.java",
    "content": "package com.redis.riot.core;\n\nimport org.springframework.retry.policy.MaxAttemptsRetryPolicy;\n\nimport lombok.ToString;\nimport picocli.CommandLine.ArgGroup;\nimport picocli.CommandLine.Option;\n\n@ToString\npublic class StepArgs {\n\n\tpublic static final int DEFAULT_CHUNK_SIZE = 50;\n\tpublic static final int DEFAULT_THREADS = 1;\n\tpublic static final RetryPolicy DEFAULT_RETRY_POLICY = RetryPolicy.NEVER;\n\tpublic static final SkipPolicy DEFAULT_SKIP_POLICY = SkipPolicy.NEVER;\n\tpublic static final int DEFAULT_RETRY_LIMIT = MaxAttemptsRetryPolicy.DEFAULT_MAX_ATTEMPTS;\n\n\t@Option(names = \"--sleep\", description = \"Duration to wait after each batch write, e.g. 1ms or 3s (default: no sleep).\", paramLabel = \"<dur>\")\n\tprivate RiotDuration sleep;\n\n\t@Option(names = \"--threads\", description = \"Number of concurrent threads to use for batch processing (default: ${DEFAULT-VALUE}).\", paramLabel = \"<int>\")\n\tprivate int threads = DEFAULT_THREADS;\n\n\t@Option(names = \"--batch\", description = \"Number of items in each batch (default: ${DEFAULT-VALUE}).\", paramLabel = \"<size>\")\n\tprivate int chunkSize = DEFAULT_CHUNK_SIZE;\n\n\t@Option(names = \"--dry-run\", description = \"Enable dummy writes.\")\n\tprivate boolean dryRun;\n\n\t@Option(names = \"--skip\", description = \"Skip policy: ${COMPLETION-CANDIDATES} (default: ${DEFAULT-VALUE}).\", paramLabel = \"<name>\")\n\tprivate SkipPolicy skipPolicy = DEFAULT_SKIP_POLICY;\n\n\t@Option(names = \"--skip-limit\", description = \"Number of skips tolerated before failing. Use with limit skip policy.\", paramLabel = \"<int>\")\n\tprivate int skipLimit;\n\n\t@Option(names = \"--retry\", description = \"Retry policy: ${COMPLETION-CANDIDATES} (default: ${DEFAULT-VALUE}).\", paramLabel = \"<name>\")\n\tprivate RetryPolicy retryPolicy = DEFAULT_RETRY_POLICY;\n\n\t@Option(names = \"--retry-limit\", description = \"Number of times to try failed items (default: ${DEFAULT-VALUE}). 0 and 1 both mean no retry. Use with limit retry policy\", paramLabel = \"<int>\")\n\tprivate int retryLimit = DEFAULT_RETRY_LIMIT;\n\n\t@ArgGroup(exclusive = false)\n\tprivate ProgressArgs progressArgs = new ProgressArgs();\n\n\tpublic RiotDuration getSleep() {\n\t\treturn sleep;\n\t}\n\n\tpublic void setSleep(RiotDuration sleep) {\n\t\tthis.sleep = sleep;\n\t}\n\n\tpublic int getThreads() {\n\t\treturn threads;\n\t}\n\n\tpublic void setThreads(int threads) {\n\t\tthis.threads = threads;\n\t}\n\n\tpublic int getChunkSize() {\n\t\treturn chunkSize;\n\t}\n\n\tpublic void setChunkSize(int chunkSize) {\n\t\tthis.chunkSize = chunkSize;\n\t}\n\n\tpublic boolean isDryRun() {\n\t\treturn dryRun;\n\t}\n\n\tpublic void setDryRun(boolean dryRun) {\n\t\tthis.dryRun = dryRun;\n\t}\n\n\tpublic ProgressArgs getProgressArgs() {\n\t\treturn progressArgs;\n\t}\n\n\tpublic void setProgressArgs(ProgressArgs args) {\n\t\tthis.progressArgs = args;\n\t}\n\n\tpublic int getSkipLimit() {\n\t\treturn skipLimit;\n\t}\n\n\tpublic void setSkipLimit(int skipLimit) {\n\t\tthis.skipLimit = skipLimit;\n\t}\n\n\tpublic int getRetryLimit() {\n\t\treturn retryLimit;\n\t}\n\n\tpublic void setRetryLimit(int retryLimit) {\n\t\tthis.retryLimit = retryLimit;\n\t}\n\n\tpublic SkipPolicy getSkipPolicy() {\n\t\treturn skipPolicy;\n\t}\n\n\tpublic void setSkipPolicy(SkipPolicy skipPolicy) {\n\t\tthis.skipPolicy = skipPolicy;\n\t}\n\n\tpublic RetryPolicy getRetryPolicy() {\n\t\treturn retryPolicy;\n\t}\n\n\tpublic void setRetryPolicy(RetryPolicy retryPolicy) {\n\t\tthis.retryPolicy = retryPolicy;\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-core/src/main/java/com/redis/riot/core/StepConfiguration.java",
    "content": "package com.redis.riot.core;\n\nimport org.springframework.batch.core.step.builder.SimpleStepBuilder;\nimport org.springframework.batch.item.ItemReader;\nimport org.springframework.batch.item.ItemWriter;\n\npublic interface StepConfiguration {\n\n\t<I, O> void configure(SimpleStepBuilder<I, O> step, String name, ItemReader<I> reader, ItemWriter<O> writer);\n\n}\n"
  },
  {
    "path": "core/riot-core/src/main/java/com/redis/riot/core/TemplateExpression.java",
    "content": "package com.redis.riot.core;\n\nimport org.springframework.expression.EvaluationContext;\n\npublic class TemplateExpression extends Expression {\n\n\tpublic TemplateExpression(org.springframework.expression.Expression expression) {\n\t\tsuper(expression);\n\t}\n\n\t@Override\n\tpublic String getValue(EvaluationContext context) {\n\t\treturn spelExpression.getValue(context, String.class);\n\t}\n\n\t@Override\n\tpublic String getValue(EvaluationContext context, Object rootObject) {\n\t\treturn spelExpression.getValue(context, rootObject, String.class);\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-core/src/main/java/com/redis/riot/core/ThrottledItemWriter.java",
    "content": "package com.redis.riot.core;\n\nimport java.time.Duration;\n\nimport org.springframework.batch.item.Chunk;\nimport org.springframework.batch.item.ExecutionContext;\nimport org.springframework.batch.item.ItemStream;\nimport org.springframework.batch.item.ItemStreamWriter;\nimport org.springframework.batch.item.ItemWriter;\nimport org.springframework.util.Assert;\n\npublic class ThrottledItemWriter<T> implements ItemStreamWriter<T> {\n\n\tprivate final ItemWriter<T> delegate;\n\tprivate final Duration sleep;\n\n\tpublic ThrottledItemWriter(ItemWriter<T> delegate, Duration sleep) {\n\t\tAssert.notNull(delegate, \"Delegate must not be null\");\n\t\tAssert.notNull(sleep, \"Sleep must not be null\");\n\t\tAssert.isTrue(sleep.isPositive(), \"Sleep duration must be positive\");\n\t\tthis.delegate = delegate;\n\t\tthis.sleep = sleep;\n\t}\n\n\t@Override\n\tpublic void open(ExecutionContext executionContext) {\n\t\tif (delegate instanceof ItemStream) {\n\t\t\t((ItemStream) delegate).open(executionContext);\n\t\t}\n\t}\n\n\t@Override\n\tpublic void update(ExecutionContext executionContext) {\n\t\tif (delegate instanceof ItemStream) {\n\t\t\t((ItemStream) delegate).update(executionContext);\n\t\t}\n\t}\n\n\t@Override\n\tpublic void close() {\n\t\tif (delegate instanceof ItemStream) {\n\t\t\t((ItemStream) delegate).close();\n\t\t}\n\t}\n\n\t@Override\n\tpublic void write(Chunk<? extends T> items) throws Exception {\n\t\tdelegate.write(items);\n\t\tThread.sleep(sleep);\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-core/src/main/java/com/redis/riot/core/processor/CollectionToMapFunction.java",
    "content": "package com.redis.riot.core.processor;\n\nimport java.util.Collection;\nimport java.util.HashMap;\nimport java.util.Map;\nimport java.util.function.Function;\n\npublic class CollectionToMapFunction implements Function<Collection<String>, Map<String, String>> {\n\n\tpublic static final String DEFAULT_KEY_FORMAT = \"%s\";\n\n\tprivate String keyFormat = DEFAULT_KEY_FORMAT;\n\n\tpublic void setKeyFormat(String keyFormat) {\n\t\tthis.keyFormat = keyFormat;\n\t}\n\n\t@Override\n\tpublic Map<String, String> apply(Collection<String> source) {\n\t\tMap<String, String> result = new HashMap<>();\n\t\tint index = 0;\n\t\tfor (String element : source) {\n\t\t\tresult.put(String.format(keyFormat, index), element);\n\t\t\tindex++;\n\t\t}\n\t\treturn result;\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-core/src/main/java/com/redis/riot/core/processor/ConsumerUnaryOperator.java",
    "content": "package com.redis.riot.core.processor;\n\nimport java.util.function.Consumer;\nimport java.util.function.UnaryOperator;\n\npublic class ConsumerUnaryOperator<T> implements UnaryOperator<T> {\n\n\tprivate final Consumer<T> consumer;\n\n\tpublic ConsumerUnaryOperator(Consumer<T> consumer) {\n\t\tthis.consumer = consumer;\n\t}\n\n\t@Override\n\tpublic T apply(T t) {\n\t\tconsumer.accept(t);\n\t\treturn t;\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-core/src/main/java/com/redis/riot/core/processor/FieldExtractorFactory.java",
    "content": "package com.redis.riot.core.processor;\n\nimport java.util.Map;\nimport java.util.function.Function;\nimport java.util.function.ToDoubleFunction;\nimport java.util.function.ToLongFunction;\n\npublic class FieldExtractorFactory {\n\n\tprivate boolean remove;\n\n\tprivate boolean nullCheck;\n\n\tpublic void setRemove(boolean remove) {\n\t\tthis.remove = remove;\n\t}\n\n\tpublic void setNullCheck(boolean nullCheck) {\n\t\tthis.nullCheck = nullCheck;\n\t}\n\n\tpublic Function<Map<String, Object>, Object> field(String field) {\n\t\tFunction<Map<String, Object>, Object> extractor = extractor(field);\n\t\tif (nullCheck) {\n\t\t\treturn new NullCheckExtractor(field, extractor);\n\t\t}\n\t\treturn extractor;\n\t}\n\n\tprivate <T> Function<Map<String, T>, T> extractor(String field) {\n\t\tif (remove) {\n\t\t\treturn s -> s.remove(field);\n\t\t}\n\t\treturn s -> s.get(field);\n\t}\n\n\tpublic Function<Map<String, Object>, String> string(String field) {\n\t\treturn field(field).andThen(new ObjectToStringFunction());\n\t}\n\n\tpublic <T> Function<Map<String, T>, T> field(String field, T defaultValue) {\n\t\treturn new DefaultValueExtractor<>(extractor(field), defaultValue);\n\t}\n\n\tpublic ToLongFunction<Map<String, Object>> longField(String field) {\n\t\tFunction<Map<String, Object>, Object> extractor = extractor(field);\n\t\tObjectToLongFunction function = new ObjectToLongFunction();\n\t\treturn m -> function.applyAsLong(extractor.apply(m));\n\t}\n\n\tpublic ToDoubleFunction<Map<String, Object>> doubleField(String field, double defaultValue) {\n\t\tFunction<Map<String, Object>, Object> extractor = extractor(field);\n\t\tObjectToDoubleFunction function = new ObjectToDoubleFunction(defaultValue);\n\t\treturn m -> function.applyAsDouble(extractor.apply(m));\n\t}\n\n\tpublic static class MissingFieldException extends RuntimeException {\n\n\t\tprivate static final long serialVersionUID = 1L;\n\n\t\tpublic MissingFieldException(String msg) {\n\t\t\tsuper(msg);\n\t\t}\n\n\t}\n\n\tprivate static class DefaultValueExtractor<T> implements Function<Map<String, T>, T> {\n\n\t\tprivate final Function<Map<String, T>, T> extractor;\n\n\t\tprivate final T defaultValue;\n\n\t\tpublic DefaultValueExtractor(Function<Map<String, T>, T> extractor, T defaultValue) {\n\t\t\tthis.extractor = extractor;\n\t\t\tthis.defaultValue = defaultValue;\n\t\t}\n\n\t\t@Override\n\t\tpublic T apply(Map<String, T> source) {\n\t\t\tT value = extractor.apply(source);\n\t\t\tif (value == null) {\n\t\t\t\treturn defaultValue;\n\t\t\t}\n\t\t\treturn value;\n\n\t\t}\n\n\t}\n\n\tprivate static class NullCheckExtractor implements Function<Map<String, Object>, Object> {\n\n\t\tprivate final String field;\n\n\t\tprivate final Function<Map<String, Object>, Object> extractor;\n\n\t\tpublic NullCheckExtractor(String field, Function<Map<String, Object>, Object> extractor) {\n\t\t\tthis.field = field;\n\t\t\tthis.extractor = extractor;\n\t\t}\n\n\t\t@Override\n\t\tpublic Object apply(Map<String, Object> source) {\n\t\t\tObject value = extractor.apply(source);\n\t\t\tif (value == null) {\n\t\t\t\tthrow new MissingFieldException(\"Error: Missing required field: '\" + field + \"'\");\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\n\t}\n\n\tpublic static FieldExtractorFactoryBuilder builder() {\n\t\treturn new FieldExtractorFactoryBuilder();\n\t}\n\n\tpublic static class FieldExtractorFactoryBuilder {\n\n\t\tprivate boolean remove;\n\n\t\tprivate boolean nullCheck;\n\n\t\tpublic FieldExtractorFactoryBuilder remove(boolean remove) {\n\t\t\tthis.remove = remove;\n\t\t\treturn this;\n\t\t}\n\n\t\tpublic FieldExtractorFactoryBuilder nullCheck(boolean nullCheck) {\n\t\t\tthis.nullCheck = nullCheck;\n\t\t\treturn this;\n\t\t}\n\n\t\tpublic FieldExtractorFactory build() {\n\t\t\tFieldExtractorFactory factory = new FieldExtractorFactory();\n\t\t\tfactory.setRemove(remove);\n\t\t\tfactory.setNullCheck(nullCheck);\n\t\t\treturn factory;\n\t\t}\n\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-core/src/main/java/com/redis/riot/core/processor/FunctionPredicate.java",
    "content": "package com.redis.riot.core.processor;\n\nimport java.util.function.Function;\nimport java.util.function.Predicate;\n\npublic class FunctionPredicate<S, T> implements Predicate<S> {\n\n\tprivate final Function<S, T> function;\n\tprivate final Predicate<T> predicate;\n\n\tpublic FunctionPredicate(Function<S, T> function, Predicate<T> predicate) {\n\t\tthis.function = function;\n\t\tthis.predicate = predicate;\n\t}\n\n\t@Override\n\tpublic boolean test(S t) {\n\t\treturn predicate.test(function.apply(t));\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-core/src/main/java/com/redis/riot/core/processor/IdFunctionBuilder.java",
    "content": "package com.redis.riot.core.processor;\n\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.function.Function;\n\nimport org.springframework.util.CollectionUtils;\n\npublic class IdFunctionBuilder {\n\n    public static final String DEFAULT_SEPARATOR = \":\";\n\n    private String separator = DEFAULT_SEPARATOR;\n\n    private String prefix;\n\n    private final FieldExtractorFactory extractorFactory = FieldExtractorFactory.builder().nullCheck(true).build();\n\n    private final List<String> fields = new ArrayList<>();\n\n    public IdFunctionBuilder remove(boolean remove) {\n        this.extractorFactory.setRemove(remove);\n        return this;\n    }\n\n    public IdFunctionBuilder fields(String... fields) {\n        return fields(Arrays.asList(fields));\n    }\n\n    public IdFunctionBuilder fields(List<String> fields) {\n        if (!CollectionUtils.isEmpty(fields)) {\n            this.fields.addAll(fields);\n        }\n        return this;\n    }\n\n    public IdFunctionBuilder prefix(String prefix) {\n        this.prefix = prefix;\n        return this;\n    }\n\n    public IdFunctionBuilder separator(String separator) {\n        this.separator = separator;\n        return this;\n    }\n\n    public Function<Map<String, Object>, String> build() {\n        if (fields.isEmpty()) {\n            if (prefix != null) {\n                return m -> prefix;\n            }\n            throw new IllegalArgumentException(\"No prefix and no fields specified\");\n        }\n        if (fields.size() == 1) {\n            Function<Map<String, Object>, String> extractor = extractorFactory.string(fields.get(0));\n            if (prefix != null) {\n                return s -> prefix + separator + extractor.apply(s);\n            }\n            return extractor::apply;\n        }\n        List<Function<Map<String, Object>, String>> toStringFunctions = new ArrayList<>();\n        if (prefix != null) {\n            toStringFunctions.add(s -> prefix);\n        }\n        for (String field : fields) {\n            toStringFunctions.add(extractorFactory.string(field));\n        }\n        return new ConcatenatingFunction(separator, toStringFunctions);\n    }\n\n    public static class ConcatenatingFunction implements Function<Map<String, Object>, String> {\n\n        private final String separator;\n\n        private final List<Function<Map<String, Object>, String>> toStringFunctions;\n\n        public ConcatenatingFunction(String separator, List<Function<Map<String, Object>, String>> toStringFunctions) {\n            this.separator = separator;\n            this.toStringFunctions = toStringFunctions;\n        }\n\n        @Override\n        public String apply(Map<String, Object> source) {\n            if (source == null) {\n                return null;\n            }\n            StringBuilder builder = new StringBuilder();\n            builder.append(toStringFunctions.get(0).apply(source));\n            for (int index = 1; index < toStringFunctions.size(); index++) {\n                builder.append(separator);\n                builder.append(toStringFunctions.get(index).apply(source));\n            }\n            return builder.toString();\n        }\n\n    }\n\n}\n"
  },
  {
    "path": "core/riot-core/src/main/java/com/redis/riot/core/processor/MapFilteringFunction.java",
    "content": "package com.redis.riot.core.processor;\n\nimport java.util.Collection;\nimport java.util.HashSet;\nimport java.util.LinkedHashMap;\nimport java.util.Map;\nimport java.util.function.UnaryOperator;\n\nimport org.springframework.util.CollectionUtils;\nimport org.springframework.util.ObjectUtils;\n\npublic class MapFilteringFunction implements UnaryOperator<Map<String, String>> {\n\n    private Collection<String> includes;\n\n    private Collection<String> excludes;\n\n    public MapFilteringFunction excludes(Collection<String> fields) {\n        this.excludes = new HashSet<>(fields);\n        return this;\n    }\n\n    public MapFilteringFunction includes(Collection<String> fields) {\n        includes = new HashSet<>(fields);\n        return this;\n    }\n\n    @Override\n    public Map<String, String> apply(Map<String, String> source) {\n        Map<String, String> filtered = ObjectUtils.isEmpty(includes) ? source : new LinkedHashMap<>();\n        if (!CollectionUtils.isEmpty(includes)) {\n            includes.forEach(f -> filtered.put(f, source.get(f)));\n        }\n        if (!CollectionUtils.isEmpty(excludes)) {\n            excludes.forEach(filtered::remove);\n        }\n        return filtered;\n    }\n\n}\n"
  },
  {
    "path": "core/riot-core/src/main/java/com/redis/riot/core/processor/MapFlatteningFunction.java",
    "content": "package com.redis.riot.core.processor;\n\nimport java.util.Iterator;\nimport java.util.LinkedHashMap;\nimport java.util.Map;\nimport java.util.Map.Entry;\nimport java.util.function.Function;\n\nimport org.springframework.lang.Nullable;\nimport org.springframework.util.StringUtils;\n\n/**\n * Flattens a nested map using . and [] notation for key names\n *\n */\npublic class MapFlatteningFunction<T> implements Function<Map<String, Object>, Map<String, T>> {\n\n    private final Function<Object, T> elementFunction;\n\n    public MapFlatteningFunction(Function<Object, T> elementFunction) {\n        this.elementFunction = elementFunction;\n    }\n\n    @Override\n    public Map<String, T> apply(Map<String, Object> source) {\n        Map<String, T> resultMap = new LinkedHashMap<>();\n        flatten(\"\", source.entrySet().iterator(), resultMap);\n        return resultMap;\n    }\n\n    private void flatten(String prefix, Iterator<? extends Entry<String, Object>> map, Map<String, T> flatMap) {\n        String actualPrefix = StringUtils.hasText(prefix) ? prefix.concat(\".\") : prefix;\n        while (map.hasNext()) {\n            Entry<String, Object> element = map.next();\n            flattenElement(actualPrefix.concat(element.getKey()), element.getValue(), flatMap);\n        }\n    }\n\n    @SuppressWarnings(\"unchecked\")\n    private void flattenElement(String propertyPrefix, @Nullable Object source, Map<String, T> flatMap) {\n        if (source == null) {\n            return;\n        }\n        if (source instanceof Iterable) {\n            int counter = 0;\n            for (Object element : (Iterable<Object>) source) {\n                flattenElement(propertyPrefix + \"[\" + counter + \"]\", element, flatMap);\n                counter++;\n            }\n        } else if (source instanceof Map) {\n            flatten(propertyPrefix, ((Map<String, Object>) source).entrySet().iterator(), flatMap);\n        } else {\n            ((Map<String, Object>) flatMap).put(propertyPrefix, elementFunction.apply(source));\n        }\n    }\n\n}\n"
  },
  {
    "path": "core/riot-core/src/main/java/com/redis/riot/core/processor/ObjectToDoubleFunction.java",
    "content": "package com.redis.riot.core.processor;\n\nimport java.util.function.ToDoubleFunction;\n\npublic class ObjectToDoubleFunction implements ToDoubleFunction<Object> {\n\n    private final double defaultValue;\n\n    public ObjectToDoubleFunction(double defaultValue) {\n        this.defaultValue = defaultValue;\n    }\n\n    @Override\n    public double applyAsDouble(Object value) {\n        if (value != null) {\n            if (value instanceof Number) {\n                return ((Number) value).doubleValue();\n            }\n            if (value instanceof String) {\n                String string = (String) value;\n                if (!string.isEmpty()) {\n                    return Double.parseDouble(string);\n                }\n            }\n        }\n        return defaultValue;\n    }\n\n}\n"
  },
  {
    "path": "core/riot-core/src/main/java/com/redis/riot/core/processor/ObjectToLongFunction.java",
    "content": "package com.redis.riot.core.processor;\n\nimport java.util.function.ToLongFunction;\n\nimport org.springframework.util.StringUtils;\n\npublic class ObjectToLongFunction implements ToLongFunction<Object> {\n\n\t@Override\n\tpublic long applyAsLong(Object source) {\n\t\tif (source != null) {\n\t\t\tif (source instanceof Number) {\n\t\t\t\treturn ((Number) source).longValue();\n\t\t\t}\n\t\t\tif (source instanceof String) {\n\t\t\t\tString string = (String) source;\n\t\t\t\tif (StringUtils.hasLength(string)) {\n\t\t\t\t\treturn Long.parseLong(string);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn 0;\n\t}\n\n}"
  },
  {
    "path": "core/riot-core/src/main/java/com/redis/riot/core/processor/ObjectToStringFunction.java",
    "content": "package com.redis.riot.core.processor;\n\nimport java.util.function.Function;\n\npublic class ObjectToStringFunction implements Function<Object, String> {\n\n\t@Override\n\tpublic String apply(Object source) {\n\t\tif (source == null) {\n\t\t\treturn null;\n\t\t}\n\t\treturn source.toString();\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-core/src/main/java/com/redis/riot/core/processor/PredicateOperator.java",
    "content": "package com.redis.riot.core.processor;\n\nimport java.util.function.Predicate;\nimport java.util.function.UnaryOperator;\n\n/**\n * Unary operator that only keeps items that match the given predicate., i.e.\n * returns a given item if predicate.test(item) == true, null otherwise\n * \n * @param <T>\n */\npublic class PredicateOperator<T> implements UnaryOperator<T> {\n\n\tprivate final Predicate<T> predicate;\n\n\tpublic PredicateOperator(Predicate<T> predicate) {\n\t\tthis.predicate = predicate;\n\t}\n\n\t@Override\n\tpublic T apply(T item) {\n\t\tif (predicate.test(item)) {\n\t\t\treturn item;\n\t\t}\n\t\treturn null;\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-core/src/main/java/com/redis/riot/core/processor/RegexNamedGroupFunction.java",
    "content": "package com.redis.riot.core.processor;\n\nimport java.util.Collections;\nimport java.util.HashMap;\nimport java.util.Map;\nimport java.util.Set;\nimport java.util.TreeSet;\nimport java.util.function.Function;\nimport java.util.regex.Matcher;\nimport java.util.regex.Pattern;\n\npublic class RegexNamedGroupFunction implements Function<String, Map<String, String>> {\n\n\tprivate static final String NAMED_GROUPS = \"\\\\(\\\\?<([a-zA-Z][a-zA-Z0-9]*)>\";\n\n\tprivate final Pattern pattern;\n\tprivate final Set<String> namedGroups;\n\n\tpublic RegexNamedGroupFunction(Pattern pattern) {\n\t\tthis.pattern = pattern;\n\t\tthis.namedGroups = new TreeSet<>();\n\t\tMatcher m = Pattern.compile(NAMED_GROUPS).matcher(pattern.pattern());\n\t\twhile (m.find()) {\n\t\t\tnamedGroups.add(m.group(1));\n\t\t}\n\t}\n\n\t@Override\n\tpublic Map<String, String> apply(String string) {\n\t\tMatcher matcher = pattern.matcher(string);\n\t\tif (matcher.find()) {\n\t\t\tMap<String, String> fields = new HashMap<>();\n\t\t\tfor (String name : namedGroups) {\n\t\t\t\tfields.put(name, matcher.group(name));\n\t\t\t}\n\t\t\treturn fields;\n\t\t}\n\t\treturn Collections.emptyMap();\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-core/src/main/java/com/redis/riot/core/processor/StringToMapFunction.java",
    "content": "package com.redis.riot.core.processor;\n\nimport java.util.HashMap;\nimport java.util.Map;\nimport java.util.function.Function;\nimport java.util.function.UnaryOperator;\n\npublic class StringToMapFunction implements Function<String, Map<String, String>> {\n\n\tpublic static final String DEFAULT_KEY = \"value\";\n\tpublic static final UnaryOperator<String> DEFAULT_KEY_EXTRACTOR = s -> DEFAULT_KEY;\n\n\tprivate UnaryOperator<String> keyExtractor = DEFAULT_KEY_EXTRACTOR;\n\n\tpublic void setKeyExtractor(UnaryOperator<String> keyExtractor) {\n\t\tthis.keyExtractor = keyExtractor;\n\t}\n\n\t@Override\n\tpublic Map<String, String> apply(String t) {\n\t\tMap<String, String> result = new HashMap<>();\n\t\tresult.put(keyExtractor.apply(t), t);\n\t\treturn result;\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-core/src/main/resources/com/redis/riot/core/RiotVersion.properties",
    "content": "riot_version=${riot_version}\nbuild_date=${build_date}\nbuild_time=${build_time}\nbuild_revision=${build_revision}"
  },
  {
    "path": "core/riot-core/src/test/java/com/redis/riot/core/ConverterTests.java",
    "content": "package com.redis.riot.core;\n\nimport java.time.Duration;\nimport java.util.HashMap;\nimport java.util.Map;\nimport java.util.function.Function;\n\nimport org.junit.jupiter.api.Assertions;\nimport org.junit.jupiter.api.Test;\nimport org.springframework.boot.convert.DurationStyle;\n\nimport com.redis.riot.core.processor.FieldExtractorFactory.MissingFieldException;\nimport com.redis.riot.core.processor.IdFunctionBuilder;\n\nclass ConverterTests {\n\n\t@Test\n\tvoid testNoKeyConverter() {\n\t\tString prefix = \"beer\";\n\t\tString idField = \"id\";\n\t\tFunction<Map<String, Object>, String> keyMaker = new IdFunctionBuilder().prefix(prefix).build();\n\t\tMap<String, Object> map = new HashMap<>();\n\t\tString id = \"123\";\n\t\tmap.put(idField, id);\n\t\tmap.put(\"name\", \"La fin du monde\");\n\t\tString key = keyMaker.apply(map);\n\t\tAssertions.assertEquals(prefix, key);\n\t}\n\n\t@Test\n\tvoid testSingleKeyConverter() {\n\t\tString prefix = \"beer\";\n\t\tString idField = \"id\";\n\t\tFunction<Map<String, Object>, String> keyMaker = new IdFunctionBuilder().prefix(prefix).fields(idField).build();\n\t\tMap<String, Object> map = new HashMap<>();\n\t\tString id = \"123\";\n\t\tmap.put(idField, id);\n\t\tmap.put(\"name\", \"La fin du monde\");\n\t\tString key = keyMaker.apply(map);\n\t\tAssertions.assertEquals(prefix + IdFunctionBuilder.DEFAULT_SEPARATOR + id, key);\n\t}\n\n\t@Test\n\tvoid testMultiKeyConverter() {\n\t\tString prefix = \"inventory\";\n\t\tMap<String, Object> map = new HashMap<>();\n\t\tString store = \"403\";\n\t\tString sku = \"39323\";\n\t\tmap.put(\"store\", store);\n\t\tmap.put(\"sku\", sku);\n\t\tmap.put(\"name\", \"La fin du monde\");\n\t\tAssertions.assertEquals(\n\t\t\t\tprefix + IdFunctionBuilder.DEFAULT_SEPARATOR + store + IdFunctionBuilder.DEFAULT_SEPARATOR + sku,\n\t\t\t\tnew IdFunctionBuilder().prefix(prefix).fields(\"store\", \"sku\").build().apply(map));\n\t\tString separator = \"~][]:''~\";\n\t\tAssertions.assertEquals(prefix + separator + store + separator + sku,\n\t\t\t\tnew IdFunctionBuilder().prefix(prefix).separator(separator).fields(\"store\", \"sku\").build().apply(map));\n\t}\n\n\t@Test\n\tvoid testNullCheck() {\n\t\tString prefix = \"inventory\";\n\t\tMap<String, Object> map = new HashMap<>();\n\t\tString store = \"403\";\n\t\tmap.put(\"store\", store);\n\t\tmap.put(\"sku\", null);\n\t\tmap.put(\"name\", \"La fin du monde\");\n\t\tFunction<Map<String, Object>, String> converter = new IdFunctionBuilder().prefix(prefix).fields(\"store\", \"sku\")\n\t\t\t\t.build();\n\t\tAssertions.assertThrows(MissingFieldException.class, () -> converter.apply(map));\n\t}\n\n\t@Test\n\tvoid testDurationStyle() {\n\t\tAssertions.assertEquals(Duration.ofSeconds(30), DurationStyle.SIMPLE.parse(\"30s\"));\n\t\tAssertions.assertEquals(Duration.ofMillis(30), DurationStyle.SIMPLE.parse(\"30\"));\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-core/src/test/resources/beers1.csv",
    "content": ",abv,ibu,id,name,style,brewery_id,ounces\n0,0.05,,1436,Pub Beer,American Pale Lager,408,12.0\n1,0.066,,2265,Devil's Cup,American Pale Ale (APA),177,12.0\n2,0.071,,2264,Rise of the Phoenix,American IPA,177,12.0\n3,0.09,,2263,Sinister,American Double / Imperial IPA,177,12.0\n4,0.075,,2262,Sex and Candy,American IPA,177,12.0\n5,0.077,,2261,Black Exodus,Oatmeal Stout,177,12.0\n6,0.045,,2260,Lake Street Express,American Pale Ale (APA),177,12.0\n7,0.065,,2259,Foreman,American Porter,177,12.0\n8,0.055,,2258,Jade,American Pale Ale (APA),177,12.0\n9,0.086,,2131,Cone Crusher,American Double / Imperial IPA,177,12.0\n10,0.07200000000000001,,2099,Sophomoric Saison,Saison / Farmhouse Ale,177,12.0\n11,0.073,,2098,Regional Ring Of Fire,Saison / Farmhouse Ale,177,12.0\n12,0.069,,2097,Garce Selé,Saison / Farmhouse Ale,177,12.0\n13,0.085,,1980,Troll Destroyer,Belgian IPA,177,12.0\n14,0.061,60.0,1979,Bitter Bitch,American Pale Ale (APA),177,12.0\n15,0.06,,2318,Ginja Ninja,Cider,154,12.0\n16,0.06,,2170,Cherried Away,Cider,154,12.0\n17,0.06,,2169,Rhubarbarian,Cider,154,12.0\n18,0.06,,1502,BrightCider,Cider,154,12.0\n19,0.08199999999999999,,1593,He Said Baltic-Style Porter,Baltic Porter,368,12.0\n20,0.08199999999999999,,1592,He Said Belgian-Style Tripel,Tripel,368,12.0\n21,0.099,92.0,1036,Lower De Boom,American Barleywine,368,8.4\n22,0.079,45.0,1024,Fireside Chat,Winter Warmer,368,12.0\n23,0.079,,976,Marooned On Hog Island,American Stout,368,12.0\n24,0.044000000000000004,42.0,876,Bitter American,American Pale Ale (APA),368,12.0\n25,0.049,17.0,802,Hell or High Watermelon Wheat (2009),Fruit / Vegetable Beer,368,12.0\n26,0.049,17.0,801,Hell or High Watermelon Wheat (2009),Fruit / Vegetable Beer,368,12.0\n27,0.049,17.0,800,21st Amendment Watermelon Wheat Beer (2006),Fruit / Vegetable Beer,368,12.0\n28,0.07,70.0,799,21st Amendment IPA (2006),American IPA,368,12.0\n29,0.07,70.0,797,Brew Free! or Die IPA (2008),American IPA,368,12.0\n30,0.07,70.0,796,Brew Free! or Die IPA (2009),American IPA,368,12.0\n31,0.085,52.0,531,Special Edition: Allies Win The War!,English Strong Ale,368,12.0\n32,0.09699999999999999,94.0,432,Hop Crisis,American Double / Imperial IPA,368,12.0\n33,0.044000000000000004,42.0,353,Bitter American (2011),American Pale Ale (APA),368,12.0\n34,0.079,45.0,321,Fireside Chat (2010),Winter Warmer,368,12.0\n35,0.068,65.0,173,Back in Black,American Black Ale,368,12.0\n36,0.083,35.0,11,Monk's Blood,Belgian Dark Ale,368,12.0\n37,0.07,65.0,10,Brew Free! or Die IPA,American IPA,368,12.0\n38,0.049,17.0,9,Hell or High Watermelon Wheat,Fruit / Vegetable Beer,368,12.0\n39,0.07,82.0,2519,Bimini Twist,American IPA,67,12.0\n40,0.05,,2518,Beach Blonde,American Blonde Ale,67,12.0\n41,0.059000000000000004,,2517,Rod Bender Red,American Amber / Red Ale,67,12.0\n42,0.035,11.0,2545,Passion Fruit Prussia,Berliner Weissbier,60,12.0\n43,0.045,18.0,2544,Send Help,American Blonde Ale,60,12.0\n44,0.055,,2324,Cast Iron Oatmeal Brown,American Brown Ale,60,12.0\n45,0.06,,2288,Reprise Centennial Red,American Amber / Red Ale,60,12.0\n46,0.055,,2287,Alter Ego,American Black Ale,60,12.0\n47,0.065,,2286,Divided Sky,American IPA,60,12.0\n48,0.065,,2285,Resurrected,American IPA,60,12.0\n49,0.05,28.0,1870,Contact High,American Pale Wheat Ale,60,12.0\n50,0.065,,2603,Galaxyfest,American IPA,27,16.0\n51,0.05,45.0,2602,Citrafest,American IPA,27,16.0\n52,0.09,,2220,Barn Yeti,Belgian Strong Dark Ale,27,16.0\n53,0.069,65.0,2219,Scarecrow,American IPA,27,16.0\n54,0.09,50.0,2218,Ironman,English Strong Ale,27,16.0\n55,0.046,15.0,2217,Honey Kolsch,Kölsch,27,16.0\n56,0.052000000000000005,18.0,2216,Copperhead Amber,Belgian Dark Ale,27,16.0\n57,0.059000000000000004,75.0,972,Rude Parrot IPA,American IPA,481,16.0\n58,0.054000000000000006,30.0,866,British Pale Ale (2010),English Pale Ale,481,16.0\n59,0.054000000000000006,30.0,48,British Pale Ale,English Pale Ale,481,16.0\n60,0.084,82.0,47,Ballz Deep Double IPA,American Double / Imperial IPA,481,16.0\n61,0.038,,1583,Wolfman's Berliner,Berliner Weissbier,373,12.0\n62,0.055,26.0,1165,Colorado Native,American Amber / Red Lager,462,12.0\n63,0.055,26.0,431,Colorado Native (2011),American Amber / Red Lager,462,12.0\n64,0.065,52.0,516,Jockamo IPA,American IPA,533,12.0\n65,0.042,13.0,515,Purple Haze,Fruit / Vegetable Beer,533,12.0\n66,0.045,17.0,514,Abita Amber,American Amber / Red Lager,533,12.0\n67,0.08199999999999999,68.0,2540,Citra Ass Down,American IPA,62,16.0\n68,0.05,20.0,2539,The Brown Note,American Brown Ale,62,16.0\n69,0.08,68.0,2686,Citra Ass Down,American Double / Imperial IPA,1,16.0\n70,0.125,80.0,2685,London Balling,English Barleywine,1,16.0\n71,0.077,25.0,2684,35 K,Milk / Sweet Stout,1,16.0\n72,0.042,42.0,2683,A Beer,American Pale Ale (APA),1,16.0\n73,0.05,25.0,2682,Rules are Rules,German Pilsener,1,16.0\n74,0.066,21.0,2681,Flesh Gourd'n,Pumpkin Ale,1,16.0\n75,0.04,13.0,2680,Sho'nuff,Belgian Pale Ale,1,16.0\n76,0.055,17.0,2679,Bloody Show,American Pilsner,1,16.0\n77,0.076,68.0,2678,Rico Sauvin,American Double / Imperial IPA,1,16.0\n78,0.051,38.0,2677,Coq de la Marche,Saison / Farmhouse Ale,1,16.0\n79,0.065,,2676,Kamen Knuddeln,American Wild Ale,1,16.0\n80,0.06,65.0,2675,Pile of Face,American IPA,1,16.0\n81,0.05,20.0,2674,The Brown Note,English Brown Ale,1,16.0\n82,0.053,35.0,1594,Maylani's Coconut Stout,American Stout,367,16.0\n83,0.05,35.0,1162,Oatmeal PSA,American Pale Ale (APA),367,16.0\n84,0.052000000000000005,33.0,1137,Pre Flight Pilsner,American Pilsner,367,16.0\n85,0.04,20.0,2403,P-Town Pilsner,American Pilsner,117,12.0\n86,0.053,36.0,2402,Klickitat Pale Ale,American Pale Ale (APA),117,12.0\n87,0.08199999999999999,103.0,2401,Yellow Wolf Imperial IPA,American Double / Imperial IPA,117,12.0\n88,0.053,40.0,1921,Freeride APA,American Pale Ale (APA),270,12.0\n89,0.053,18.0,1920,Alaskan Amber,Altbier,270,12.0\n90,0.057,,2501,Hopalicious,American Pale Ale (APA),73,12.0\n91,0.043,,1535,Kentucky Kölsch,Kölsch,388,16.0\n92,0.065,,1149,Kentucky IPA,American IPA,388,16.0\n93,0.054000000000000006,,1474,Dusty Trail Pale Ale,American Pale Ale (APA),401,16.0\n94,0.062,,1473,Damnesia,American IPA,401,16.0\n95,0.062,43.0,837,Desolation IPA,American IPA,401,16.0\n96,0.059000000000000004,,2592,Liberty Ale,American IPA,35,12.0\n97,0.065,,2578,IPA,American IPA,35,12.0\n98,0.045,,2577,Summer Wheat,American Pale Wheat Ale,35,12.0\n99,0.049,,2103,California Lager,American Amber / Red Lager,35,12.0\n100,0.055999999999999994,,2102,Brotherhood Steam,California Common / Steam Beer,35,12.0\n101,0.042,,2291,Blood Orange Gose,Gose,171,12.0\n102,0.042,,1818,Keebarlin' Pale Ale,American Pale Ale (APA),171,12.0\n103,0.048,,1738,\"the Kimmie, the Yink and the Holy Gose\",Gose,171,12.0\n104,0.06,,1563,Fall Hornin',Pumpkin Ale,171,12.0\n105,0.057,13.0,1520,Barney Flats Oatmeal Stout,Oatmeal Stout,171,12.0\n106,0.055999999999999994,4.0,1350,Summer Solstice,Cream Ale,171,12.0\n107,0.07,80.0,1327,Hop Ottin' IPA,American IPA,171,12.0\n108,0.057999999999999996,15.0,1326,Boont Amber Ale,American Amber / Red Ale,171,12.0\n109,0.057,13.0,1221,Barney Flats Oatmeal Stout,Oatmeal Stout,171,12.0\n110,0.055,25.0,1217,El Steinber Dark Lager,Vienna Lager,171,16.0\n111,0.057999999999999996,15.0,811,Boont Amber Ale (2010),American Amber / Red Ale,171,12.0\n112,0.055999999999999994,4.0,753,Summer Solstice Cerveza Crema (2009),Cream Ale,171,12.0\n113,0.057,13.0,572,Barney Flats Oatmeal Stout (2012),Oatmeal Stout,171,12.0\n114,0.069,6.0,523,Winter Solstice,Winter Warmer,171,12.0\n115,0.07,80.0,367,Hop Ottin' IPA (2011),American IPA,171,12.0\n116,0.057999999999999996,15.0,78,Boont Amber Ale (2011),American Amber / Red Ale,171,12.0\n117,0.055999999999999994,4.0,77,Summer Solstice (2011),Cream Ale,171,12.0\n118,0.055,28.0,76,Poleeko Gold Pale Ale (2009),American Pale Ale (APA),171,12.0\n119,0.06,,2337,Charlie's Rye IPA,American IPA,146,16.0\n120,0.054000000000000006,,410,River Pig Pale Ale,American Pale Ale (APA),542,16.0\n121,0.047,,409,Oaky's Oatmeal Stout,Oatmeal Stout,542,16.0\n122,0.05,,1294,Angry Orchard Apple Ginger,Cider,434,16.0\n123,0.05,,1293,Angry Orchard Crisp Apple,Cider,434,16.0\n124,0.05,,1292,Angry Orchard Crisp Apple,Cider,434,12.0\n125,0.068,,2207,Golden One,Belgian Pale Ale,193,12.0\n126,0.06,,2040,Arjuna,Witbier,193,12.0\n127,0.085,,2039,Uroboros,American Stout,193,12.0\n128,0.071,75.0,2511,Long Leaf,American IPA,69,16.0\n129,0.047,19.0,2510,Honey Badger Blonde,American Blonde Ale,69,16.0\n130,0.06,23.0,2509,Porter (a/k/a Black Gold Porter),American Porter,69,16.0\n131,0.06,55.0,413,Sky High Rye,American Pale Ale (APA),541,12.0\n132,0.062,17.0,390,Whitsun,American Pale Wheat Ale,541,12.0\n133,0.052000000000000005,,735,On-On Ale (2008),American Pale Ale (APA),513,12.0\n134,0.092,50.0,1333,Quakertown Stout,American Double / Imperial Stout,426,12.0\n135,0.051,20.0,1332,Greenbelt Farmhouse Ale,Saison / Farmhouse Ale,426,12.0\n136,0.052000000000000005,10.0,1172,Mo's Gose,Gose,461,16.0\n137,0.07,45.0,1322,Green Bullet Organic India Pale Ale,American IPA,429,16.0\n138,0.032,27.0,550,Rocket Girl,Kölsch,528,12.0\n139,0.053,26.0,429,Ninja Porter,American Porter,528,12.0\n140,0.06,69.0,428,Shiva IPA,American IPA,528,12.0\n141,0.048,,1640,Aslan Kölsch,Kölsch,353,16.0\n142,0.077,,1639,Aslan IPA,American IPA,353,16.0\n143,0.077,,1638,Aslan Amber,American Amber / Red Ale,353,16.0\n144,0.055999999999999994,27.0,597,This Season's Blonde,American Blonde Ale,523,12.0\n145,0.07,67.0,596,Independence Pass Ale,American IPA,523,12.0\n146,0.057,40.0,1580,Trolley Stop Stout,American Stout,374,12.0\n147,0.08199999999999999,138.0,980,Bitter Bitch Imperial IPA,American Double / Imperial IPA,374,12.0\n148,0.062,35.0,979,Poop Deck Porter,American Porter,374,12.0\n149,0.06,35.0,978,Old Red Beard Amber Ale,American Amber / Red Ale,374,12.0\n150,0.075,115.0,2503,Hop A-Peel,American Double / Imperial IPA,72,16.0\n151,0.055,12.0,2502,Vanilla Java Porter,American Porter,72,16.0\n152,0.052000000000000005,,2495,Michelada,Fruit / Vegetable Beer,72,16.0\n153,0.045,8.0,534,Dirty Blonde Ale,American Blonde Ale,72,12.0\n154,0.05,62.0,528,Grand Circus IPA,American IPA,72,12.0\n155,0.05,12.0,527,Atwater's Lager,Munich Helles Lager,72,12.0\n156,0.07,,1409,Heavy Machinery IPA Series #1: Heavy Fist,American Black Ale,413,16.0\n157,0.062,,343,Fire Eagle IPA,American IPA,413,12.0\n158,0.051,,342,Peacemaker,American Pale Ale (APA),413,12.0\n159,0.053,,341,Pearl-Snap,German Pilsener,413,12.0\n160,0.052000000000000005,,340,Black Thunder,Schwarzbier,413,12.0\n161,0.08,,2589,Raja,American Double / Imperial IPA,37,12.0\n162,0.064,,2546,Perzik Saison,Saison / Farmhouse Ale,37,12.0\n163,0.047,42.0,146,Avery Joe’s Premium American Pilsner,German Pilsener,37,12.0\n164,0.055999999999999994,10.0,108,White Rascal,Witbier,37,12.0\n165,0.063,69.0,107,Avery India Pale Ale,American IPA,37,12.0\n166,0.055,17.0,106,Ellie’s Brown Ale,American Brown Ale,37,12.0\n167,0.062,17.0,1620,Pumpkin Beast,Pumpkin Ale,360,12.0\n168,0.07200000000000001,22.0,1579,OktoberBeast,Märzen / Oktoberfest,360,12.0\n169,0.048,23.0,1228,Mad Beach,American Pale Wheat Ale,360,12.0\n170,0.067,,705,Hog Wild India Pale Ale,American IPA,360,12.0\n171,0.092,5.0,704,Devils Tramping Ground Tripel,Tripel,360,12.0\n172,0.061,41.0,702,Hot Rod Red,American Amber / Red Ale,360,12.0\n173,0.086,,2058,Palate Mallet,American Double / Imperial IPA,235,12.0\n174,0.06,,1483,Back East Porter,American Porter,235,12.0\n175,0.049,,1426,Back East Golden Ale,American Blonde Ale,235,12.0\n176,0.07,,1132,Misty Mountain IPA,American IPA,235,12.0\n177,0.05,,1131,Back East Ale,American Amber / Red Ale,235,12.0\n178,0.06,,1876,Truck Stop Honey Brown Ale,English Brown Ale,286,12.0\n179,0.06,43.0,1875,Naked Pig Pale Ale,American Pale Ale (APA),286,12.0\n180,0.068,70.0,966,Topcutter India Pale Ale,American IPA,483,12.0\n181,0.044000000000000004,38.0,965,Field 41 Pale Ale,American Pale Ale (APA),483,12.0\n182,0.07,,2593,Grapefruit Sculpin,American IPA,34,12.0\n183,0.038,40.0,2105,Even Keel,American IPA,34,12.0\n184,0.052000000000000005,23.0,1401,Ballast Point Pale Ale,Kölsch,34,12.0\n185,0.07,75.0,1400,Big Eye India Pale Ale,American IPA,34,12.0\n186,0.046,,1019,Longfin Lager,Munich Helles Lager,34,12.0\n187,0.07,70.0,1018,Sculpin IPA,American IPA,34,12.0\n188,0.045,,1776,All Nighter Ale,Extra Special / Strong Bitter (ESB),318,12.0\n189,0.045,20.0,1644,Banner American Rye,Rye Beer,318,12.0\n190,0.035,45.0,1643,Banner American Ale,American Amber / Red Ale,318,12.0\n191,0.07,46.0,2618,Thai.p.a,American IPA,20,16.0\n192,0.06,60.0,2005,Barrio Blanco,American IPA,251,12.0\n193,0.045,,1343,Barrio Tucson Blonde,American Blonde Ale,251,12.0\n194,0.049,22.0,2404,Hop in the ‘Pool Helles,American Pilsner,116,12.0\n195,0.067,60.0,2323,Ultra Gnar Gnar IPA,American IPA,116,12.0\n196,0.068,62.0,2189,In-Tents India Pale Lager,American Pale Lager,116,12.0\n197,0.05,20.0,2188,Lost Meridian Wit,Witbier,116,12.0\n198,0.051,45.0,2187,Celestial Meridian Cascadian Dark Lager,Euro Dark Lager,116,12.0\n199,0.054000000000000006,55.0,1966,Wagon Party,California Common / Steam Beer,258,12.0\n200,0.067,70.0,1965,Sky-Five,American IPA,258,12.0\n201,0.05,28.0,1964,Stargrazer,Schwarzbier,258,12.0\n202,0.054000000000000006,48.0,1963,Wonderstuff,German Pilsener,258,12.0\n203,0.053,,1855,Tarnation California-Style Lager,California Common / Steam Beer,292,12.0\n204,0.07,42.0,1778,On the Count of 3 (2015),Hefeweizen,292,16.0\n205,0.047,,1209,Summer Swelter,American Pale Wheat Ale,292,12.0\n206,0.068,,954,Phantom Punch Winter Stout,Foreign / Export Stout,292,12.0\n207,0.066,,910,Hayride Autumn Ale,Rye Beer,292,12.0\n208,0.047,,707,Celsius Summer Ale (2012),American Pale Wheat Ale,292,12.0\n209,0.055,35.0,533,Amber Road,American Amber / Red Ale,292,12.0\n210,0.049,28.0,183,Pamola Xtra Pale Ale,American Pale Ale (APA),292,12.0\n211,0.069,69.0,182,Stowaway IPA,American IPA,292,12.0\n212,0.08800000000000001,108.0,1806,Hoptopus Double IPA,American Double / Imperial IPA,306,16.0\n213,0.05,10.0,2435,Watermelon Ale,Fruit / Vegetable Beer,103,12.0\n214,0.057999999999999996,45.0,2423,Fenway American Pale Ale,American Pale Ale (APA),103,12.0\n215,0.068,85.0,2420,Back Bay IPA,American IPA,103,12.0\n216,0.048,16.0,2419,Bunker Hill Blueberry Ale ,Other,103,12.0\n217,0.057999999999999996,,2494,Oberon,American Pale Wheat Ale,76,12.0\n218,0.06,,2325,Smitten,Rye Beer,76,16.0\n219,0.05,,2022,Winter White,Witbier,76,16.0\n220,0.057999999999999996,,1989,Oberon,American Pale Wheat Ale,76,16.0\n221,0.07,,1988,Two Hearted,American IPA,76,16.0\n222,0.057999999999999996,,1955,Best Brown,American Brown Ale,76,16.0\n223,0.044000000000000004,44.0,2558,Moar,English India Pale Ale (IPA),53,12.0\n224,0.083,,2557,Uber Lupin Schwarz IPA,American Double / Imperial IPA,53,16.0\n225,0.057,27.0,2556,Nordic Blonde,American Blonde Ale,53,12.0\n226,0.06,,2496,Cold Press,American Black Ale,75,12.0\n227,0.07200000000000001,87.0,2410,Harness the Winter,American IPA,75,12.0\n228,0.055999999999999994,32.0,1902,14° ESB ,Extra Special / Strong Bitter (ESB),75,12.0\n229,0.062,68.0,1901,Bent Hop Golden IPA,American IPA,75,12.0\n230,0.06,34.0,1261,Bent Paddle Black Ale,American Black Ale,75,12.0\n231,0.05,38.0,1253,Venture Pils,German Pilsener,75,12.0\n232,0.055,40.0,1900,Lost Sailor IPA,English India Pale Ale (IPA),278,12.0\n233,0.053,20.0,1317,Steel Rail Extra Pale Ale,American Pale Ale (APA),278,12.0\n234,0.078,,1158,La Frontera Premium IPA,American IPA,463,12.0\n235,0.047,,1157,Tejas Lager,Czech Pilsener,463,12.0\n236,0.064,,1156,Number 22 Porter,American Porter,463,12.0\n237,0.055999999999999994,,1155,Big Bend Hefeweizen,Hefeweizen,463,12.0\n238,0.06,,1154,Terlingua Gold,American Blonde Ale,463,12.0\n239,0.081,17.0,2104,Aprè Shred,American Strong Ale,220,16.0\n240,0.095,104.0,1762,Hemlock Double IPA,American Double / Imperial IPA,220,12.0\n241,0.040999999999999995,,1422,West Portal Colorado Common Summer Ale,California Common / Steam Beer,220,16.0\n242,0.067,85.0,1067,Disconnected Red,American Amber / Red Ale,220,16.0\n243,0.07,,1003,Big Elm IPA,American IPA,477,12.0\n244,0.065,,1002,Gerry Dog Stout,American Stout,477,12.0\n245,0.06,,1001,413 Farmhouse Ale,Saison / Farmhouse Ale,477,12.0\n246,0.08,54.0,2639,Dark Star,American Stout,8,16.0\n247,0.062,,2469,Ryecoe,American IPA,8,16.0\n248,0.06,,2586,Blueberry Blonde,Fruit / Vegetable Beer,40,12.0\n249,0.075,60.0,2585,Galaxy IPA,American IPA,40,16.0\n250,0.05,32.0,643,Big River Pilsner,Czech Pilsener,519,12.0\n251,0.06,55.0,632,House Brand IPA,American IPA,519,12.0\n252,0.062,65.0,1714,Big Sky IPA,American IPA,336,12.0\n253,0.05,40.0,1713,Scape Goat Pale Ale,English Pale Ale,336,12.0\n254,0.05,35.0,1712,Montana Trout Slayer Ale,American Pale Wheat Ale,336,12.0\n255,0.051,26.0,1711,Moose Drool Brown Ale,American Brown Ale,336,12.0\n256,0.07200000000000001,60.0,1456,Powder Hound Winter Ale,English Strong Ale,336,12.0\n257,0.051,26.0,767,Moose Drool Brown Ale (2011),American Brown Ale,336,12.0\n258,0.05,35.0,766,Montana Trout Slayer Ale (2012),American Pale Wheat Ale,336,12.0\n259,0.062,65.0,579,Big Sky IPA (2012),American IPA,336,12.0\n260,0.047,,168,Summer Honey,American Blonde Ale,336,12.0\n261,0.05,40.0,159,Scape Goat Pale Ale (2010),English Pale Ale,336,12.0\n262,0.05,35.0,35,Montana Trout Slayer Ale (2009),American Pale Wheat Ale,336,12.0\n263,0.051,26.0,34,Moose Drool Brown Ale (2009),American Brown Ale,336,12.0\n264,0.069,81.0,2096,Arcus IPA,American IPA,221,12.0\n265,0.057999999999999996,38.0,2095,Wavemaker,American Amber / Red Ale,221,12.0\n266,0.053,43.0,1257,Jack Pine Savage,American Pale Ale (APA),444,16.0\n267,0.099,85.0,1256,Forest Fire Imperial Smoked Rye,Rye Beer,444,16.0\n268,0.098,76.0,1255,Bad Axe Imperial IPA,American Double / Imperial IPA,444,16.0\n269,0.055,35.0,986,Morning Wood,Oatmeal Stout,444,16.0\n270,0.066,50.0,985,Bark Bite IPA,American IPA,444,16.0\n271,0.055,45.0,2508,Jalapeno Pale Ale,American Pale Ale (APA),70,16.0\n272,0.052000000000000005,,1441,Blown Out Brown,American Brown Ale,407,12.0\n273,0.063,,1413,Single Hop Ale,American Pale Ale (APA),407,12.0\n274,0.054000000000000006,,1411,Sawtooth Ale,American Blonde Ale,407,12.0\n275,0.07200000000000001,75.0,2620,Saucy Intruder,Rye Beer,18,16.0\n276,0.045,16.0,2412,Deception,American Blonde Ale,112,12.0\n277,0.075,35.0,1898,Blackmarket Rye IPA,American IPA,112,12.0\n278,0.05,8.0,1897,Black Market Hefeweizen,Hefeweizen,112,12.0\n279,0.057999999999999996,44.0,1896,Aftermath Pale Ale,American Pale Ale (APA),112,12.0\n280,0.071,83.0,1850,American India Red Ale,American Strong Ale,294,12.0\n281,0.071,45.0,1849,American Red Porter,American Porter,294,12.0\n282,0.078,34.0,1848,American Red Saison,Saison / Farmhouse Ale,294,12.0\n283,0.066,44.0,1847,Colorado Red Ale,American Amber / Red Ale,294,12.0\n284,0.048,16.0,2485,Saddle Bronc Brown Ale,American Brown Ale,79,12.0\n285,0.046,20.0,2484,Bomber Mountain Amber Ale,American Amber / Red Ale,79,12.0\n286,0.073,,2449,Flying Sailor,Rye Beer,95,12.0\n287,0.048,47.0,2634,Nordskye ,American IPA,12,12.0\n288,0.06,30.0,2153,North Third Stout,Foreign / Export Stout,12,12.0\n289,0.052000000000000005,,1953,Honey Lav,American Pale Wheat Ale,12,12.0\n290,0.068,,1496,Coconut Brown Ale,American Brown Ale,12,12.0\n291,0.07,51.0,1481,51K IPA,American IPA,12,12.0\n292,0.055,,1480,Grand Rabbits,Cream Ale,12,12.0\n293,0.05,,1564,1800 Big Log Wheat (2012),American Pale Wheat Ale,380,12.0\n294,,,1541,Double Play Pilsner,American Pilsner,380,12.0\n295,0.055,,1321,Brewerhood Brown Ale,American Brown Ale,380,12.0\n296,0.08,,1320,Last Call Imperial Amber Ale,American Amber / Red Ale,380,12.0\n297,0.096,,1319,Pernicious Double IPA,American Double / Imperial IPA,380,12.0\n298,0.052000000000000005,,1303,6-4-3 Double Play Pilsner,German Pilsener,380,12.0\n299,,,1025,N Street Drive-In 50th Anniversary IPA,American Double / Imperial IPA,380,12.0\n300,0.05,,1012,467 Ethan's Stout,American Stout,380,12.0\n301,0.064,,942,1335 Wicked Snout,Saison / Farmhouse Ale,380,12.0\n302,0.045,,937,543 Skull Creek Fresh Hopped Pale Ale,American Pale Ale (APA),380,12.0\n303,0.055999999999999994,37.0,888,1327 Pod's ESB,Extra Special / Strong Bitter (ESB),380,12.0\n304,0.055999999999999994,37.0,886,1327 Pod's ESB,Extra Special / Strong Bitter (ESB),380,12.0\n305,0.055999999999999994,37.0,612,1327 Pod's ESB,Extra Special / Strong Bitter (ESB),380,12.0\n306,0.046,35.0,611,834 Happy As Ale,American Pale Ale (APA),380,12.0\n307,0.059000000000000004,,1372,Yellow Collar,Mead,422,12.0\n308,0.059000000000000004,,1371,Green Collar,Mead,422,12.0\n309,0.08,80.0,1812,Quarter Mile Double IPA,American Double / Imperial IPA,304,12.0\n310,0.059000000000000004,60.0,1547,Full Nelson Pale Ale,American Pale Ale (APA),382,12.0\n311,0.065,30.0,1546,Steel Wheels ESB,Extra Special / Strong Bitter (ESB),382,12.0\n312,0.053,22.0,1545,Blue Mountain Classic Lager,Euro Pale Lager,382,12.0\n313,0.059000000000000004,60.0,119,Full Nelson Pale Ale (2010),American Pale Ale (APA),382,12.0\n314,0.049,16.0,1408,Kölsch 151,Kölsch,414,12.0\n315,,,2490,Professor Black,American Stout,77,12.0\n316,,,2489,Little Boss,American Pale Wheat Ale,77,12.0\n317,,,2488,Van Dayum!,American Amber / Red Ale,77,12.0\n318,,,2487,Spirit Animal,American Pale Ale (APA),77,12.0\n319,0.07,,939,Toxic Sludge,American Black Ale,489,16.0\n320,0.06,40.0,692,Blue Point White IPA,American White IPA,489,12.0\n321,0.044000000000000004,16.0,667,Blue Point Summer Ale,American Blonde Ale,489,12.0\n322,0.055,28.0,665,Toasted Lager,Vienna Lager,489,12.0\n323,0.06,,1607,Bohemian Export Lager,Dortmunder / Export Lager,364,12.0\n324,0.053,,1597,Altus Bohemes Altbier,Altbier,364,12.0\n325,0.04,,344,Cherny Bock,Schwarzbier,364,12.0\n326,0.05,,89,Czech Pilsner,Czech Pilsener,364,12.0\n327,0.05,,88,Viennese Lager,Vienna Lager,364,12.0\n328,0.065,,1569,Mad Manatee IPA,American IPA,378,12.0\n329,0.055,,1568,Killer Whale Cream Ale,Cream Ale,378,12.0\n330,0.06,,1188,Duke's Cold Nose Brown Ale,American Brown Ale,378,12.0\n331,0.042,30.0,1891,Longhop IPA,American IPA,281,16.0\n332,0.04,34.0,1890,Lucky Buck,Irish Dry Stout,281,16.0\n333,0.051,,577,Bomb Lager (New Recipe),Munich Helles Lager,525,12.0\n334,0.045,27.0,513,Bomb Lager (Old Recipe),Munich Helles Lager,525,12.0\n335,0.066,72.0,2422,Firestarter India Pale Ale,American IPA,107,12.0\n336,0.075,22.0,1727,Kilt Dropper Scotch Ale,Scotch Ale / Wee Heavy,107,16.0\n337,0.048,30.0,1614,Wood Splitter Pilsner,Czech Pilsener,107,16.0\n338,0.055999999999999994,26.0,1613,Gyptoberfest,Märzen / Oktoberfest,107,12.0\n339,0.07,94.0,1549,Farmer Wirtz India Pale Ale,English India Pale Ale (IPA),107,16.0\n340,0.047,,1548,Slow & Steady Golden Ale,American Blonde Ale,107,12.0\n341,0.068,,1517,Pink-I Raspberry IPA,American IPA,107,16.0\n342,0.047,,1500,Moe's Original Bar B Que 'Bama Brew Golden Ale,American Blonde Ale,107,12.0\n343,0.047,,1421,Live Local Golden Ale,American Blonde Ale,107,12.0\n344,0.048,38.0,1360,Screaming Eagle Special Ale ESB,Extra Special / Strong Bitter (ESB),107,12.0\n345,0.049,,1184,Dirtbag Dunkel,Munich Dunkel Lager,107,16.0\n346,0.053,45.0,1183,Kindler Pale Ale,American Pale Ale (APA),107,12.0\n347,0.064,,1023,Mistress Winter Wheat,Winter Warmer,107,12.0\n348,0.061,,998,Tent Pole Vanilla Porter,American Porter,107,16.0\n349,0.057999999999999996,,997,Awry Rye Pale Ale,American Pale Ale (APA),107,12.0\n350,0.057999999999999996,,996,Demshitz Brown Ale,American Brown Ale,107,12.0\n351,0.048,,931,Wood Splitter Pilsner (2012),Czech Pilsener,107,12.0\n352,0.048,,798,Brush Creek Blonde,American Blonde Ale,107,16.0\n353,0.066,72.0,633,Firestarter India Pale Ale,American IPA,107,16.0\n354,0.071,16.0,2062,Noche Dulce,American Porter,231,16.0\n355,0.045,8.0,1830,Porch Rocker,Radler,300,12.0\n356,0.065,45.0,1629,Rebel IPA,American IPA,300,16.0\n357,0.055,,1601,Cold Snap,Witbier,300,12.0\n358,0.055999999999999994,,1427,Samuel Adams Winter Lager,Bock,300,12.0\n359,0.049,30.0,1349,Boston Lager,Vienna Lager,300,16.0\n360,0.049,30.0,1310,Boston Lager,Vienna Lager,300,12.0\n361,0.053,15.0,1281,Samuel Adams Octoberfest,Märzen / Oktoberfest,300,12.0\n362,0.053,7.0,1144,Samuel Adams Summer Ale,American Pale Wheat Ale,300,12.0\n363,0.049,30.0,1143,Boston Lager,Vienna Lager,300,12.0\n364,0.049,35.0,1395,Hazed & Infused,American Pale Ale (APA),417,12.0\n365,0.057,35.0,808,Hoopla Pale Ale,American Pale Ale (APA),417,12.0\n366,0.049,35.0,81,Hazed & Infused (2010),American Pale Ale (APA),417,12.0\n367,0.062,80.0,2596,Heavy Lifting,American IPA,31,12.0\n368,0.065,,2300,1492,American Pale Ale (APA),167,12.0\n369,0.057999999999999996,,2299,Mango Ginger,American IPA,167,12.0\n370,0.047,,2298,Passenger,English Dark Mild Ale,167,12.0\n371,0.06,52.0,2107,Plum St. Porter,American Porter,219,12.0\n372,0.057,52.0,1573,Plum St. Porter,American Porter,219,12.0\n373,0.07,80.0,1289,Bozone HopZone IPA,American IPA,219,12.0\n374,0.06,25.0,1288,Bozone Hefe Weizen,Hefeweizen,219,12.0\n375,0.055,,470,Bozone Select Amber Ale,American Amber / Red Ale,219,12.0\n376,0.052000000000000005,40.0,2167,Evil Owl,American Amber / Red Ale,207,12.0\n377,0.05,,2204,Post Time Kölsch,Kölsch,195,16.0\n378,0.042,9.0,1522,Agave Wheat,American Pale Wheat Ale,391,12.0\n379,0.045,15.0,397,SummerBright Ale,American Pale Wheat Ale,391,12.0\n380,0.062,68.0,193,Lucky U IPA,American IPA,391,12.0\n381,0.054000000000000006,19.0,83,Avalanche Ale,American Amber / Red Ale,391,12.0\n382,0.05,,1802,\"You're My Boy, Blue\",Fruit / Vegetable Beer,308,12.0\n383,0.07200000000000001,60.0,1801,Last Stop IPA,American IPA,308,12.0\n384,0.05,21.0,1800,Rollin Dirty Red Ale,Irish Red Ale,308,12.0\n385,0.055,28.0,1799,Are Wheat There Yet?,American Pale Wheat Ale,308,12.0\n386,0.057999999999999996,,2619,Insert Hop Reference,American Pale Ale (APA),19,16.0\n387,0.053,,2468,Manitou Amber,American Amber / Red Ale,85,16.0\n388,0.067,,2637,Belfort,Saison / Farmhouse Ale,10,16.0\n389,0.06,,2636,Star Runner,Belgian Pale Ale,10,16.0\n390,0.098,,2598,Tart Side of the Barrel,American Double / Imperial Stout,10,16.0\n391,0.06,,2597,Linnaeus Mango IPA,American IPA,10,16.0\n392,0.07,,2548,Beasts A'Burnin',Rauchbier,10,16.0\n393,0.077,,2542,Verdun,Bière de Garde,10,16.0\n394,0.065,,2541,Barrel Aged Triomphe,Belgian IPA,10,16.0\n395,0.065,,2504,Cherry Doppelbock,Doppelbock,10,16.0\n396,0.065,,2500,Tropical Saison,Saison / Farmhouse Ale,10,16.0\n397,0.065,,2499,Beach Patrol,Witbier,10,16.0\n398,0.05,,2498,Nuit Serpent,Belgian IPA,10,16.0\n399,0.09,,2481,Paris,Saison / Farmhouse Ale,10,16.0\n400,0.055,,2476,The Grand Army,Belgian IPA,10,16.0\n401,0.059000000000000004,,2467,Acidulated Trip,Saison / Farmhouse Ale,10,16.0\n402,0.066,,2466,Root Stock,Rye Beer,10,16.0\n403,0.040999999999999995,,2465,Mind Games,Dunkelweizen,10,16.0\n404,0.08199999999999999,,2433,Sous Chef,Belgian Strong Pale Ale,10,16.0\n405,0.065,,2418,Dubbelicious,Dubbel,10,16.0\n406,0.062,,2416,Psychopomp,Belgian Dark Ale,10,16.0\n407,,,2382,Fat Paczki,Belgian Dark Ale,10,16.0\n408,,,2381,Earth-Like Planets,Belgian Pale Ale,10,16.0\n409,0.061,,2290,Ski Patrol,Witbier,10,16.0\n410,0.063,,2241,Viking Ice Hole,Oatmeal Stout,10,16.0\n411,0.055999999999999994,,2240,Rye Porter,American Porter,10,16.0\n412,0.099,,2137,Wizard Burial Ground,Quadrupel (Quad),10,16.0\n413,0.051,,2101,Smoky Wheat,Rauchbier,10,16.0\n414,0.062,,2092,BRIPA,Belgian IPA,10,16.0\n415,0.062,,2091,Mela,Belgian Dark Ale,10,16.0\n416,0.053,,2086,W.I.P.A Snappa,Belgian IPA,10,16.0\n417,0.063,,2023,Pepper in the Rye,Rye Beer,10,16.0\n418,0.064,,2006,Moe Lasses',American Stout,10,16.0\n419,0.07,,1997,Pumpkin Tart,Fruit / Vegetable Beer,10,16.0\n420,0.067,,1977,Undertaker,Belgian Dark Ale,10,16.0\n421,0.067,,1976,Undertaker (2014),Belgian Dark Ale,10,16.0\n422,0.05,,1974,Coq D'Or,Belgian Pale Ale,10,16.0\n423,0.06,,1973,North French,Bière de Garde,10,16.0\n424,0.065,,1959,Agent a Deux,Belgian Dark Ale,10,16.0\n425,0.045,,1958,Belgian Wit,Witbier,10,16.0\n426,0.063,,1949,Pothole Stout,American Stout,10,16.0\n427,0.09300000000000001,,1947,Tree Bucket,Belgian IPA,10,16.0\n428,0.073,,1785,Le Flaneur Ale,American Wild Ale,10,16.0\n429,0.055999999999999994,,1651,Maize & Blueberry,Fruit / Vegetable Beer,10,16.0\n430,0.09300000000000001,,1443,Trebuchet Double IPA,American Double / Imperial IPA,10,16.0\n431,0.065,,1352,Contemplation,Bière de Garde,10,16.0\n432,0.05,,1267,Black Rabbit,American Black Ale,10,16.0\n433,0.09,,1266,Zaison,Saison / Farmhouse Ale,10,16.0\n434,0.08199999999999999,,1178,Vivant Tripel,Tripel,10,16.0\n435,0.098,,1136,Tart Side of the Moon,Belgian Dark Ale,10,16.0\n436,0.06,,1044,Big Red Coq,American Amber / Red Ale,10,16.0\n437,0.099,,1033,Hubris Quadrupel Anniversary Ale,Quadrupel (Quad),10,16.0\n438,0.095,,1031,Plow Horse Belgian Style Imperial Stout,American Double / Imperial Stout,10,16.0\n439,0.092,,909,Escoffier Bretta Ale,American Wild Ale,10,16.0\n440,0.065,,873,Contemplation (2012),Bière de Garde,10,16.0\n441,0.099,,860,Vivant Belgian Style Imperial Stout (2012),Russian Imperial Stout,10,16.0\n442,0.062,,677,Big Red Coq (2012),American Amber / Red Ale,10,16.0\n443,0.09,,671,Zaison (2012),Saison / Farmhouse Ale,10,16.0\n444,0.092,,670,Vivant Tripel (2012),Tripel,10,16.0\n445,0.09699999999999999,,669,Trebuchet Double IPA (2012),Belgian IPA,10,16.0\n446,0.085,,627,Kludde,Belgian Strong Dark Ale,10,16.0\n447,0.055,,387,Farm Hand,Saison / Farmhouse Ale,10,16.0\n448,0.06,,385,Solitude,Belgian Pale Ale,10,16.0\n449,0.065,,384,Triomphe,Belgian IPA,10,16.0\n450,,,1096,Tampa Pale Ale,American Pale Ale (APA),467,12.0\n451,,,1095,Orange Grove Wheat Ale,American Pale Wheat Ale,467,12.0\n452,0.061,,2456,Broad Brook Ale,American Amber / Red Ale,89,16.0\n453,0.05,15.0,921,Northern Lights Amber Ale,American Amber / Red Ale,493,12.0\n454,0.052000000000000005,17.0,920,Polar Pale Ale,American Pale Ale (APA),493,12.0\n455,0.048,,919,Chugach Session Ale,Cream Ale,493,12.0\n456,0.061,64.0,648,Fairweather IPA,American IPA,493,12.0\n457,0.068,47.0,1279,East India Pale Ale,English India Pale Ale (IPA),437,16.0\n458,0.045,,756,Brooklyn Summer Ale,English Pale Mild Ale,437,12.0\n459,0.068,47.0,566,East India Pale Ale,English India Pale Ale (IPA),437,12.0\n460,0.045,,328,Brooklyn Summer Ale (2011),English Pale Mild Ale,437,12.0\n461,0.052000000000000005,,66,Brooklyn Lager (16 oz.),American Amber / Red Lager,437,16.0\n462,0.052000000000000005,,65,Brooklyn Lager (12 oz.),American Amber / Red Lager,437,12.0\n463,0.08,,538,Tour de Nez Belgian IPA (Current),Belgian IPA,530,16.0\n464,,,504,Roler Bock (Current),Maibock / Helles Bock,530,16.0\n465,0.073,85.0,383,Black Adder IBA (Current),American Black Ale,530,16.0\n466,0.099,,29,Very Noddy Lager (Current),Schwarzbier,530,16.0\n467,0.062,42.0,28,Tule Duck Red Ale (Current),American Amber / Red Ale,530,16.0\n468,0.057999999999999996,35.0,27,Original Orange Blossom Ale (Current),Herbed / Spiced Beer,530,16.0\n469,0.052000000000000005,40.0,26,Black Noddy Lager (Current),Schwarzbier,530,16.0\n470,0.053,,1627,Cleveland Beer Week 2013,Munich Helles Lager,357,16.0\n471,0.045,,2552,Painted Turtle,American Pale Ale (APA),56,12.0\n472,0.06,40.0,2125,1836,American Blonde Ale,214,12.0\n473,0.06,20.0,2124,Summer's Wit,Witbier,214,12.0\n474,0.09,118.0,2123,More Cowbell,American Double / Imperial IPA,214,16.0\n475,0.065,,2608,Wrath of Pele,American Brown Ale,24,16.0\n476,0.068,,2607,Black Beer'd,American Black Ale,24,16.0\n477,0.078,,2606,Mr. Tea,Fruit / Vegetable Beer,24,24.0\n478,0.055,40.0,2478,Pale Alement,American Pale Ale (APA),24,12.0\n479,0.099,115.0,2471,Hopkick Dropkick,American Double / Imperial IPA,24,12.0\n480,0.06,,2470,Kreamed Corn,Cream Ale,24,12.0\n481,0.065,,2464,Coconoats,American Pale Wheat Ale,24,16.0\n482,0.068,16.0,2160,Joey Wheat,American Pale Wheat Ale,24,16.0\n483,0.07200000000000001,86.0,2158,3:33 Black IPA,American IPA,24,16.0\n484,0.068,,2072,MCA,American IPA,24,16.0\n485,0.055,40.0,2054,Pale Alement,American Pale Ale (APA),24,16.0\n486,0.05,14.0,2196,Couch Select Lager,American Pale Lager,197,12.0\n487,0.055999999999999994,36.0,668,Mucho Aloha Hawaiian Pale Ale,American Pale Ale (APA),517,12.0\n488,0.049,,52,Heinnieweisse Weissebier,Hefeweizen,556,12.0\n489,0.068,,51,Snapperhead IPA,American IPA,556,12.0\n490,0.049,,50,Moo Thunder Stout,Milk / Sweet Stout,556,12.0\n491,0.043,,49,Porkslap Pale Ale,American Pale Ale (APA),556,12.0\n492,0.09300000000000001,,2657,Blackbeard,American Double / Imperial Stout,5,12.0\n493,0.062,,2656,Rye Knot,American Brown Ale,5,12.0\n494,0.06,,2655,Dead Arm,American Pale Ale (APA),5,12.0\n495,0.048,,2654,32°/50° Kölsch ,Kölsch,5,16.0\n496,0.077,,2653,HopArt,American IPA,5,16.0\n497,0.09699999999999999,,2652,Boy King,American Double / Imperial IPA,5,16.0\n498,0.052000000000000005,,2252,Gran Sport,American Porter,182,16.0\n499,0.053,25.0,2214,Horny Toad Cerveza,American Blonde Ale,182,16.0\n500,0.063,35.0,2213,Native Amber,American Amber / Red Ale,182,16.0\n501,0.068,100.0,1442,F5 IPA,American IPA,182,16.0\n502,0.063,35.0,170,Native Amber (2013),American Amber / Red Ale,182,16.0\n503,0.053,25.0,169,Horny Toad Cerveza (2013),American Blonde Ale,182,16.0\n504,0.068,100.0,2315,Hopportunity Knocks IPA,American IPA,155,12.0\n505,0.06,,1808,Pilot Rock Porter,American Porter,155,12.0\n506,0.055999999999999994,55.0,1419,Caldera Pale Ale,American Pale Ale (APA),155,12.0\n507,0.039,16.0,878,Lawnmower Lager,American Adjunct Lager,155,12.0\n508,0.054000000000000006,24.0,794,Ashland Amber Ale (2009),American Amber / Red Ale,155,12.0\n509,0.061,94.0,793,Caldera IPA (2009),American IPA,155,12.0\n510,0.061,94.0,792,Caldera IPA (2007),American IPA,155,12.0\n511,0.055999999999999994,55.0,791,Caldera Pale Ale (2010),American Pale Ale (APA),155,12.0\n512,0.055999999999999994,55.0,790,Caldera Pale Ale (2009),American Pale Ale (APA),155,12.0\n513,0.055999999999999994,55.0,789,Caldera Pale Ale (2005),American Pale Ale (APA),155,12.0\n514,0.055999999999999994,55.0,788,Caldera Pale Ale (2007),American Pale Ale (APA),155,12.0\n515,0.055999999999999994,55.0,38,Caldera Pale Ale (2011),American Pale Ale (APA),155,12.0\n516,0.054000000000000006,24.0,37,Ashland Amber Ale,American Amber / Red Ale,155,12.0\n517,0.061,94.0,36,Caldera IPA,American IPA,155,12.0\n518,0.05,,2257,Remain in Light,American Pilsner,178,12.0\n519,0.065,,2256,Flower Child (2014),American IPA,178,12.0\n520,,,870,THP White (2006),Witbier,497,12.0\n521,,,869,THP Amber (2006),American Amber / Red Ale,497,12.0\n522,,,868,THP Light (2006),American Blonde Ale,497,12.0\n523,,,867,THP Dark (2006),English Dark Mild Ale,497,12.0\n524,0.099,43.0,2068,Imperial Pumpkin Stout,Pumpkin Ale,230,16.0\n525,0.09,130.0,2067,Dead-Eye DIPA,American Double / Imperial IPA,230,16.0\n526,0.055,64.0,2066,Fisherman's IPA,American IPA,230,12.0\n527,0.054000000000000006,35.0,2065,Fisherman's Pils,German Pilsener,230,12.0\n528,0.055,30.0,2064,Fisherman's Brew,American Amber / Red Ale,230,12.0\n529,0.055,35.0,1928,Cape Cod Red,American Amber / Red Ale,267,16.0\n530,0.049,10.0,1927,Beach Blonde,American Blonde Ale,267,16.0\n531,0.065,80.0,2227,Dark Voyage Black IPA (2013),American Black Ale,192,12.0\n532,0.052000000000000005,28.0,2226,Wisconsin Amber,Vienna Lager,192,12.0\n533,0.046,18.0,2225,Lake House,Munich Helles Lager,192,12.0\n534,0.055999999999999994,55.0,1954,Ghost Ship White IPA,American IPA,192,12.0\n535,0.046,18.0,1910,Lake House,Munich Helles Lager,192,16.0\n536,0.062,70.0,1177,Mutiny IPA,American IPA,192,12.0\n537,0.052000000000000005,,840,Wisconsin Amber (1998),Vienna Lager,192,12.0\n538,0.042,,180,Island Wheat,American Pale Wheat Ale,192,12.0\n539,0.052000000000000005,,63,Wisconsin Amber (2013),Vienna Lager,192,12.0\n540,0.05,,62,U.S. Pale Ale,American Pale Ale (APA),192,12.0\n541,,,61,Supper Club Lager,American Pale Lager,192,12.0\n542,0.04,,784,Carolina Lighthouse (2007),American Blonde Ale,504,12.0\n543,0.05,,783,Carolina Blonde (2006),American Blonde Ale,504,12.0\n544,0.035,,782,Carolina Blonde Light (2005),American Blonde Ale,504,12.0\n545,0.059000000000000004,22.0,2255,Santa's Secret,Winter Warmer,179,16.0\n546,0.057,,530,Flagship IPA,English India Pale Ale (IPA),179,12.0\n547,0.051,,427,Sky Blue Golden Ale,Kölsch,179,12.0\n548,0.099,100.0,2094,Epitome,American Black Ale,222,16.0\n549,0.039,9.0,1941,Monkey Chased the Weasel,Berliner Weissbier,222,16.0\n550,0.078,80.0,1940,077XX,American Double / Imperial IPA,222,16.0\n551,0.042,35.0,1439,Boat Beer,American IPA,222,12.0\n552,0.069,,1465,Granny Smith Hard Apple Cider,Cider,404,16.0\n553,0.069,,1464,Dry Hard Apple Cider,Cider,404,16.0\n554,0.055999999999999994,,1744,Farmer Ted's Cream Ale,Cream Ale,331,12.0\n555,0.052000000000000005,,1743,Firewater India Pale Ale,American IPA,331,12.0\n556,0.047,,1742,White Zombie Ale,Witbier,331,12.0\n557,0.07,,1719,King Winterbolt Winter Ale,Winter Warmer,331,12.0\n558,0.047,,638,White Zombie Ale,Witbier,331,12.0\n559,0.052000000000000005,,507,Firewater India Pale Ale,American IPA,331,12.0\n560,0.055999999999999994,,480,Farmer Ted's Farmhouse Cream Ale,Cream Ale,331,12.0\n561,0.048,16.0,1882,Whitecap Wit,Witbier,285,16.0\n562,0.078,16.0,1881,Seiche Scottish Ale,Scottish Ale,285,16.0\n563,0.057999999999999996,,2446,Peanut Butter Jelly Time,American Brown Ale,96,12.0\n564,0.054000000000000006,,2106,King Coconut,American Porter,96,12.0\n565,0.085,90.0,2600,Gone A-Rye,American Double / Imperial IPA,29,16.0\n566,,,2210,Special Release,,29,16.0\n567,0.068,70.0,2052,Dankosaurus,American IPA,29,16.0\n568,0.051,35.0,1584,Scruffy's Smoked Alt,Smoked Beer,29,16.0\n569,0.051,36.0,1182,Elliott's Phoned Home Pale Ale,American Pale Ale (APA),29,16.0\n570,0.05,18.0,1050,The Lawn Ranger,Cream Ale,29,16.0\n571,0.05,,1219,All American Blonde Ale,American Blonde Ale,452,12.0\n572,0.05,,1218,All American Red Ale,American Amber / Red Ale,452,12.0\n573,0.05,40.0,2377,Main St. Virginia Ale,Altbier,122,12.0\n574,0.045,24.0,1839,Chin Music Amber Lager,American Amber / Red Lager,122,12.0\n575,0.05,40.0,1248,Main St. Virginia Ale,Altbier,122,12.0\n576,0.052000000000000005,42.0,1247,Ray Ray’s Pale Ale,American Pale Ale (APA),122,12.0\n577,0.051,15.0,1649,Chai Ale,Herbed / Spiced Beer,350,16.0\n578,0.07200000000000001,85.0,1648,Lucky Day IPA,American IPA,350,16.0\n579,0.095,99.0,1647,Terrace Hill Double IPA,American Double / Imperial IPA,350,16.0\n580,0.075,77.0,1646,Catch 23,American Black Ale,350,16.0\n581,0.07,,2057,Stickin' In My Rye,Rye Beer,236,24.0\n582,0.06,45.0,2056,Black Me Stout,American Stout,236,12.0\n583,0.05,22.0,2055,Killer Kolsch,Kölsch,236,12.0\n584,0.07,65.0,1933,Missile IPA,American IPA,236,12.0\n585,0.045,,2019,Enlighten,Kölsch,250,16.0\n586,0.065,8.0,2018,Ale Cider,Fruit / Vegetable Beer,250,16.0\n587,0.055,30.0,2017,Pail Ale,American Pale Ale (APA),250,16.0\n588,0.045,,2016,Englishman,English Brown Ale,250,16.0\n589,0.08,69.0,2080,8 Barrel,American Strong Ale,226,16.0\n590,0.055,40.0,2079,Oktoberfest,Märzen / Oktoberfest,226,16.0\n591,0.057,58.0,2380,IPA #11,American IPA,121,16.0\n592,0.057,10.0,2379,Blood Orange Honey,Fruit / Vegetable Beer,121,16.0\n593,0.052000000000000005,,2354,Lighthouse Amber,Altbier,121,16.0\n594,0.08900000000000001,126.0,2440,Bay of Bengal Double IPA (2014),American Double / Imperial IPA,99,12.0\n595,0.049,29.0,567,Churchkey Pilsner Style Beer,American Pilsner,526,12.0\n596,0.05,,1342,First Press,Cider,425,12.0\n597,0.05,,1341,Magic Apple,Cider,425,12.0\n598,0.055,25.0,2349,Cubano Espresso,Bock,141,12.0\n599,0.062,65.0,2014,Operation Homefront,American IPA,141,12.0\n600,0.08199999999999999,65.0,2013,Wandering Pelican,American Black Ale,141,12.0\n601,0.055,,2012,Sugar Plum,American Brown Ale,141,12.0\n602,0.055,,2011,Oktoberfest,Märzen / Oktoberfest,141,12.0\n603,0.06,,2010,Puppy's Breath Porter,American Porter,141,12.0\n604,0.045,,2009,Happening Now,American IPA,141,12.0\n605,0.07,60.0,1726,Hopped on the High Seas (Hop #529),American IPA,141,12.0\n606,0.07,60.0,1725,Hopped on the High Seas (Calypso),American IPA,141,12.0\n607,0.063,,1695,Wiregrass Post-Prohibition Ale,American Pale Ale (APA),141,12.0\n608,0.07,60.0,1694,Dry-Hopped On The High Seas Caribbean-Style IPA,American IPA,141,12.0\n609,0.07,60.0,1693,Hopped on the High Seas (Citra),American IPA,141,12.0\n610,0.07,60.0,1692,Hopped on the High Seas (Ahtanum),American IPA,141,12.0\n611,0.055,,1369,Gwar Beer,American Pale Ale (APA),141,12.0\n612,0.052000000000000005,,1243,Tropical Heatwave,American Pale Wheat Ale,141,16.0\n613,0.075,70.0,1142,Humidor Series India Pale Ale,American IPA,141,12.0\n614,0.075,70.0,1141,Jai Alai IPA Aged on White Oak,American IPA,141,12.0\n615,0.08,65.0,1140,José Martí American Porter,American Porter,141,12.0\n616,0.05,,1139,Invasion Pale Ale,American Pale Ale (APA),141,12.0\n617,0.055,25.0,1138,Maduro Brown Ale,English Brown Ale,141,12.0\n618,0.055,25.0,571,Maduro Brown Ale,American Brown Ale,141,12.0\n619,0.05,,570,Hotter Than Helles Lager,Munich Helles Lager,141,12.0\n620,0.07200000000000001,75.0,569,Tocobaga Red Ale,American Amber / Red Ale,141,12.0\n621,0.075,70.0,546,Jai Alai IPA,American IPA,141,12.0\n622,0.05,18.0,545,Florida Cracker Belgian Wit,Witbier,141,12.0\n623,0.048,,2338,Shark Tracker Light lager,Light Lager,145,12.0\n624,0.06,,1365,Pumple Drumkin,Pumpkin Ale,145,12.0\n625,0.045,,1094,Grey Lady,Witbier,145,12.0\n626,0.062,,657,Summer of Lager,Munich Helles Lager,145,12.0\n627,0.065,,656,Indie Pale Ale,American IPA,145,12.0\n628,0.038,,359,Sankaty Light Lager,Light Lager,145,12.0\n629,0.055999999999999994,,56,Whale's Tale Pale Ale,English Pale Ale,145,12.0\n630,0.067,60.0,1772,Jacaranada Rye IPA,American IPA,320,16.0\n631,0.06,75.0,1393,Cascadian Dark Ale,American Black Ale,418,12.0\n632,0.044000000000000004,13.0,893,Wheat the People,American Pale Wheat Ale,418,16.0\n633,0.047,17.0,1407,Tybee Island Blonde,American Blonde Ale,415,12.0\n634,0.062,55.0,1406,Savannah Brown Ale,American Brown Ale,415,12.0\n635,0.046,11.0,2438,Rhode Island Blueberry,Kölsch,101,12.0\n636,0.065,75.0,2437,Newport Storm IPA,American IPA,101,12.0\n637,0.052000000000000005,24.0,751,Hurricane Amber Ale (2004),American Amber / Red Ale,101,12.0\n638,0.052000000000000005,24.0,120,Hurricane Amber Ale,American Amber / Red Ale,101,12.0\n639,0.057999999999999996,,2061,Big Blue Van,Fruit / Vegetable Beer,232,16.0\n640,0.068,75.0,970,Des Moines IPA,American IPA,482,16.0\n641,0.048,22.0,969,Capital Gold Golden Lager,German Pilsener,482,16.0\n642,0.055999999999999994,21.0,968,Farmer John's Multi-Grain Ale,American Blonde Ale,482,16.0\n643,0.05,,2351,Behemoth,American Pilsner,139,12.0\n644,0.052000000000000005,,1650,Arkansas Red,American Amber / Red Ale,139,12.0\n645,0.057,,1337,Core Oatmeal Stout,Oatmeal Stout,139,12.0\n646,0.061,,1336,Core ESB,Extra Special / Strong Bitter (ESB),139,12.0\n647,0.038,,737,Chester's Beer (2005),American Pale Lager,512,12.0\n648,0.05,,129,Heiner Brau Kölsch,Kölsch,553,12.0\n649,0.048,,716,Trigger Blonde Ale,American Blonde Ale,515,16.0\n650,0.075,29.0,659,Crabtree Oatmeal Stout,Oatmeal Stout,515,16.0\n651,0.077,71.0,556,Eclipse Black IPA,American Black Ale,515,16.0\n652,0.06,46.0,2538,Neomexicanus Native,American Pale Ale (APA),63,12.0\n653,0.075,25.0,2355,Old Soul,Belgian Strong Pale Ale,63,12.0\n654,0.059000000000000004,,1689,Snowcat Coffee Stout,American Stout,63,12.0\n655,,,1163,WinterWonderGrass Festival Ale,American Amber / Red Ale,63,12.0\n656,,,940,Boohai Red Ale,American Amber / Red Ale,63,12.0\n657,0.052000000000000005,15.0,685,Lava Lake Wit,Witbier,63,12.0\n658,0.06,,613,Mountain Livin' Pale Ale,American Pale Ale (APA),63,12.0\n659,0.052000000000000005,25.0,356,Crazy Mountain Amber Ale,American Amber / Red Ale,63,12.0\n660,0.065,65.0,2029,Tropicalia,American IPA,247,12.0\n661,0.045,,2028,Athena,Berliner Weissbier,247,12.0\n662,0.049,25.0,2293,Aviator Raspberry Blonde,American Blonde Ale,169,12.0\n663,0.055,,1105,3 Picket Porter,American Porter,169,12.0\n664,0.055999999999999994,,1104,Rusty Nail Pale Ale,American Pale Ale (APA),169,12.0\n665,0.065,,2145,Red Water Irish Style Red,American Amber / Red Ale,212,12.0\n666,0.066,,1804,Mjöllnir,Herbed / Spiced Beer,212,12.0\n667,0.055,,1602,Bear Butte Nut Brown Ale,American Brown Ale,212,12.0\n668,0.045,,1301,Easy Livin' Summer Ale,American Blonde Ale,212,12.0\n669,0.055,,542,Canyon Cream Ale,Cream Ale,212,12.0\n670,0.069,,272,Pile O'Dirt Porter,American Porter,212,12.0\n671,0.06,,271,11th Hour IPA,American IPA,212,12.0\n672,0.06,31.0,1057,South Ridge Amber Ale,American Amber / Red Ale,472,16.0\n673,0.052000000000000005,23.0,681,Summertime Ale,Kölsch,472,16.0\n674,0.049,,1789,Lost River Blonde Ale,American Blonde Ale,315,16.0\n675,0.054000000000000006,,1788,Monon Wheat,Witbier,315,16.0\n676,0.08,,1787,Floyd's Folly,Scottish Ale,315,16.0\n677,0.063,,1786,Half Court IPA,American IPA,315,16.0\n678,0.045,,1763,Geary's Pale Ale,English Pale Ale,323,12.0\n679,0.06,,1311,Geary's Summer Ale,Kölsch,323,12.0\n680,0.08,,2078,Stone of Arbroath,Scotch Ale / Wee Heavy,227,12.0\n681,0.05,15.0,1809,The Tradition,American Blonde Ale,227,12.0\n682,0.053,11.0,1263,El Hefe Speaks,Hefeweizen,227,12.0\n683,0.055,,1092,Penn Quarter Porter,American Porter,227,12.0\n684,0.092,115.0,851,On the Wings of Armageddon,American Double / Imperial IPA,227,12.0\n685,0.065,80.0,186,The Corruption,American IPA,227,12.0\n686,0.07,,185,The Citizen,Belgian Pale Ale,227,12.0\n687,0.06,,184,The Public,American Pale Ale (APA),227,12.0\n688,0.065,,1224,Dank IPA,American IPA,451,16.0\n689,0.065,,964,Dank IPA (2012),American IPA,451,16.0\n690,0.07200000000000001,,1623,Lift Off IPA,American IPA,358,16.0\n691,0.055,,110,BrewFarm Select Golden Lager,American Pale Lager,554,12.0\n692,0.05,,1735,Sprocket Blonde Ale (2006),American Blonde Ale,333,12.0\n693,0.05,,1734,Sprocket Pale Ale (2006),American Pale Ale (APA),333,12.0\n694,0.063,37.0,1746,Dead Armadillo Amber Ale,American Amber / Red Ale,330,12.0\n695,0.06,,2371,Neato Bandito,Euro Pale Lager,127,12.0\n696,0.075,33.0,2251,Oak Cliff Coffee Ale,American Brown Ale,127,12.0\n697,0.085,100.0,2166,Dream Crusher Double IPA,American Double / Imperial IPA,127,12.0\n698,0.06,,1827,Deep Ellum Pale Ale,American Pale Ale (APA),127,12.0\n699,0.07,,1203,Double Brown Stout,Baltic Porter,127,12.0\n700,0.048,25.0,1202,Farmhouse Wit,Saison / Farmhouse Ale,127,16.0\n701,0.046,,1161,Rye Pils Session Lager,German Pilsener,127,12.0\n702,0.052000000000000005,23.0,946,Dallas Blonde,American Blonde Ale,127,12.0\n703,0.07,70.0,943,Deep Ellum IPA,American IPA,127,12.0\n704,0.045,44.0,1886,Thrasher Session India Pale Ale,American IPA,283,12.0\n705,0.05,16.0,1885,Gutch English Style Mild Ale,English Pale Mild Ale,283,12.0\n706,0.059000000000000004,55.0,1213,Chuli Stout,Irish Dry Stout,453,12.0\n707,0.055999999999999994,46.0,1159,Mother Ale,American Blonde Ale,453,12.0\n708,0.065,71.0,947,Twister Creek India Pale Ale,American IPA,453,12.0\n709,0.057999999999999996,46.0,929,Single Engine Red,Irish Red Ale,453,12.0\n710,0.07,,1944,Incredible Pedal IPA,American IPA,263,12.0\n711,0.05,,1943,Graham Cracker Porter,American Porter,263,12.0\n712,0.05,40.0,1210,Mirror Pond Pale Ale,American Pale Ale (APA),454,12.0\n713,0.052000000000000005,16.0,2550,Weissenheimer,Hefeweizen,57,12.0\n714,0.049,22.0,2505,Abbey's Single (2015- ),Abbey Single Ale,57,12.0\n715,0.063,76.0,2025,Vertex IPA,American IPA,57,12.0\n716,0.05,12.0,2021,Here Gose Nothin',Gose,57,12.0\n717,0.05,,2015,Strawberry Blonde,Fruit / Vegetable Beer,57,12.0\n718,0.096,85.0,1888,Hoperation Overload,American Double / Imperial IPA,57,12.0\n719,0.049,22.0,1887,Abbey's Single Ale (Current),Abbey Single Ale,57,12.0\n720,0.044000000000000004,45.0,2051,Bravo Four Point,American Pale Ale (APA),237,12.0\n721,0.052000000000000005,26.0,1201,Striped Bass Pale Ale,American Pale Ale (APA),237,12.0\n722,0.054000000000000006,27.0,924,Deadicated Amber,American Amber / Red Ale,491,16.0\n723,,,731,Kaleidoscope Collaboration 2012,American Black Ale,491,16.0\n724,0.071,85.0,730,California Sunshine Rye IPA,American IPA,491,16.0\n725,0.07400000000000001,12.0,647,Full Boar Scotch Ale,Scotch Ale / Wee Heavy,491,16.0\n726,0.045,,1773,12 Man Pale Ale,American Pale Ale (APA),319,12.0\n727,0.065,72.0,1795,Filthy Hoppin' IPA,American IPA,311,16.0\n728,,,944,Dock Street Amber Beer (1992),American Amber / Red Ale,488,12.0\n729,,,524,Dolores River Hefeweizen,Hefeweizen,531,16.0\n730,,,450,Dolores River ESB,Extra Special / Strong Bitter (ESB),531,16.0\n731,,,449,Snaggletooth Double Pale Ale,American Double / Imperial IPA,531,16.0\n732,,,448,Dolores River Pale Ale,American Pale Ale (APA),531,16.0\n733,,,447,Dolores River Dry Stout,Irish Dry Stout,531,16.0\n734,,,446,Dolores River Mild,English Dark Mild Ale,531,16.0\n735,0.049,,1246,Cranberry Blend,Cider,446,12.0\n736,0.051,,977,Orignal Blend,Cider,446,12.0\n737,0.066,100.0,881,Hop Abomination,American IPA,496,12.0\n738,0.051,17.0,880,Apricot Blonde,Fruit / Vegetable Beer,496,12.0\n739,0.043,12.0,872,Dry Dock Hefeweizen,Hefeweizen,496,12.0\n740,0.057999999999999996,49.0,871,Dry Dock Amber Ale,American Amber / Red Ale,496,12.0\n741,0.061,64.0,1685,Category 3 IPA,American IPA,340,12.0\n742,0.045,18.0,457,Dundee Summer Wheat Beer,American Pale Wheat Ale,538,12.0\n743,0.05,,1590,Pumpkin Patch Ale,Pumpkin Ale,369,16.0\n744,0.078,74.0,1382,Crank Yanker IPA,American IPA,369,16.0\n745,0.06,,1110,River Runners Pale Ale,American Pale Ale (APA),369,16.0\n746,0.05,,1014,Pumpkin Patch Ale (2012),Pumpkin Ale,369,16.0\n747,0.055,,911,Mountain Fairy Raspberry Wheat,Fruit / Vegetable Beer,369,16.0\n748,0.045,,680,Boater Beer,German Pilsener,369,16.0\n749,0.078,74.0,395,Crank Yanker IPA (2011),American IPA,369,16.0\n750,0.057,,1642,Bleeding Buckeye Red Ale,Extra Special / Strong Bitter (ESB),352,16.0\n751,0.049,25.0,673,Dottie Seattle Lager,American Amber / Red Lager,516,16.0\n752,0.07,,1107,Nut Sack Imperial Brown Ale,American Brown Ale,465,12.0\n753,0.05,,1039,Underachiever,American Adjunct Lager,473,16.0\n754,0.052000000000000005,,2477,Lil' Brainless Raspberries,Fruit / Vegetable Beer,81,12.0\n755,0.052000000000000005,,2008,Element 29,American Pale Ale (APA),81,12.0\n756,0.05,,2004,Hop Syndrome,American Pale Lager,81,12.0\n757,0.062,,2003,Escape to Colorado,American IPA,81,12.0\n758,0.043,60.0,2292,Little Sister India Style Session Ale,American IPA,170,12.0\n759,0.062,80.0,1504,Country Boy IPA,American IPA,170,12.0\n760,0.049,23.0,2604,Blonde Czich,American Blonde Ale,26,16.0\n761,0.07,61.0,2432,White Reaper,Belgian IPA,26,16.0\n762,0.051,,2431,Bobblehead,American Pale Wheat Ale,26,16.0\n763,0.052000000000000005,,2430,Lucky Dog,American Pale Ale (APA),26,16.0\n764,0.048,,2429,Voodoo,American Porter,26,16.0\n765,0.054000000000000006,48.0,1967,General George Patton Pilsner,Czech Pilsener,26,16.0\n766,0.04,,2283,Nomader Weiss,Berliner Weissbier,173,12.0\n767,0.085,,2248,Molotov Lite,American Double / Imperial IPA,173,16.0\n768,0.055,,1287,Hipster Ale (Two Roads Brewing),American Pale Ale (APA),173,12.0\n769,0.027000000000000003,,1286,Bikini Beer,American IPA,173,12.0\n770,0.055,,640,Hipster Ale (Westbrook Brewing),American Pale Ale (APA),173,12.0\n771,0.05,32.0,1722,Iron Horse Pale Ale,American Pale Ale (APA),335,12.0\n772,0.045,19.0,1435,Stone's Throw IPA,Scottish Ale,335,12.0\n773,0.067,70.0,1434,Wood Chipper India Pale Ale,American IPA,335,12.0\n774,0.063,55.0,2089,Trail Head,American Pale Ale (APA),224,12.0\n775,0.07,80.0,2088,Hop Stalker Fresh Hop IPA,American IPA,224,16.0\n776,0.07,58.0,1455,Sudice American Stout,American Stout,405,16.0\n777,0.05,20.0,1454,Parcae Belgian Style Pale Ale,Belgian Pale Ale,405,16.0\n778,0.05,20.0,1453,Norns Roggenbier,Roggenbier,405,16.0\n779,0.05,20.0,1452,Laimas Kölsch Style Ale,Kölsch,405,16.0\n780,0.07,70.0,1451,Moirai India Pale Ale,American IPA,405,16.0\n781,0.075,53.0,2191,Loki Red Ale,American Amber / Red Ale,201,16.0\n782,0.046,,1731,Peaches & Cream,Fruit / Vegetable Beer,201,16.0\n783,0.051,,1022,Quaff India Style Session Ale,American IPA,201,16.0\n784,0.075,53.0,895,Loki Red Ale (2013),American Amber / Red Ale,201,16.0\n785,0.069,,682,Mjolnir Imperial IPA,American Double / Imperial IPA,201,16.0\n786,0.05,,112,Fearless Scottish Ale,Scottish Ale,201,16.0\n787,0.081,,2289,Mastermind,American Double / Imperial IPA,172,12.0\n788,0.08199999999999999,,2027,Hyzer Flip,American Double / Imperial IPA,172,16.0\n789,0.08199999999999999,80.0,1929,Second Fiddle,American Double / Imperial IPA,172,16.0\n790,0.055,30.0,1858,Hodad Porter,American Porter,172,16.0\n791,0.045,,2591,Weiss Weiss Baby,Kristalweizen,36,12.0\n792,0.055,45.0,2590,Czech Yo Self,Czech Pilsener,36,12.0\n793,0.048,20.0,1968,FMB 101,Kölsch,36,12.0\n794,0.09,,1981,Hardcore Chimera,American Double / Imperial IPA,256,16.0\n795,0.08,80.0,1664,Sobek & Set,American Black Ale,256,16.0\n796,0.086,,1663,Nuclear Winter,Belgian Strong Dark Ale,256,16.0\n797,0.05,22.0,1662,Wet Hot American Wheat Ale,American Pale Wheat Ale,256,16.0\n798,0.053,,941,Secret Stache Stout,American Stout,256,16.0\n799,0.08,72.0,935,Fascist Pig Ale,American Amber / Red Ale,256,16.0\n800,0.055,,809,Cut Throat Pale Ale,American Pale Ale (APA),256,16.0\n801,0.075,,481,Threadless IPA,American IPA,256,16.0\n802,0.055,,351,Cut Throat Pale Ale (2011),American Pale Ale (APA),256,16.0\n803,0.047,,350,Golden Wing Blonde Ale,American Blonde Ale,256,16.0\n804,0.045,47.0,2569,Easy Jack,American IPA,48,12.0\n805,0.075,75.0,2463,Union Jack,American IPA,48,12.0\n806,0.053,,2462,Pivo Pils,German Pilsener,48,12.0\n807,0.047,,1957,805 Blonde Ale,American Blonde Ale,48,12.0\n808,0.047,20.0,1733,805,American Blonde Ale,48,12.0\n809,0.065,,2624,Deflator,Doppelbock,16,16.0\n810,0.05,27.0,2284,Hinchtown Hammer Down,American Blonde Ale,16,16.0\n811,0.06,104.0,1610,Half Cycle IPA,American IPA,16,16.0\n812,,,520,Inclined Plane Ale,American IPA,532,12.0\n813,0.055,,2554,Moped Traveler,American Pale Ale (APA),54,16.0\n814,0.071,60.0,608,Snake Dog IPA,American IPA,521,12.0\n815,0.047,28.0,607,Underdog Atlantic Lager,American Pale Lager,521,12.0\n816,0.04,,2567,Flying Mouse 8,American Porter,50,12.0\n817,0.07,70.0,2566,Flying Mouse 4,American IPA,50,12.0\n818,0.078,,1899,La Ferme Urbaine Farmhouse Ale,Saison / Farmhouse Ale,279,12.0\n819,0.06,,983,Backyahd IPA,American IPA,279,12.0\n820,0.065,,982,Raincloud Robust Porter,American Porter,279,12.0\n821,0.045,,981,Barstool American Golden Ale,American Blonde Ale,279,12.0\n822,0.05,18.0,2111,What the Butler Saw,Witbier,217,12.0\n823,0.069,65.0,2110,1916 Shore Shiver,American IPA,217,12.0\n824,0.052000000000000005,,2172,Quick WIT,Belgian Pale Ale,206,12.0\n825,0.062,,2171,The Optimist,American IPA,206,12.0\n826,0.045,,1911,Suicide Squeeze IPA,American IPA,206,16.0\n827,0.065,,1803,Java the Hop,American IPA,206,16.0\n828,0.062,,1566,Next Adventure Black IPA,American Black Ale,206,16.0\n829,0.067,,1515,3-Way IPA (2013),American IPA,206,16.0\n830,0.057999999999999996,,1214,Tender Loving Empire NWPA,American Pale Ale (APA),206,16.0\n831,0.052000000000000005,,674,Quick Wit Belgianesque Ale,Witbier,206,16.0\n832,0.055,,562,Sunrise Oatmeal Pale Ale,American Pale Ale (APA),206,16.0\n833,0.08800000000000001,,552,Cavatica Stout,American Double / Imperial Stout,206,16.0\n834,0.051,,319,1811 Lager,American Amber / Red Lager,206,16.0\n835,0.07400000000000001,97.0,318,Vortex IPA,American IPA,206,16.0\n836,,,2322,Fort Pitt Ale,American Amber / Red Ale,151,12.0\n837,0.047,19.0,2661,Park,American Pale Wheat Ale,4,12.0\n838,0.055999999999999994,16.0,2660,Westfalia,American Amber / Red Ale,4,12.0\n839,0.046,17.0,2659,KSA,Kölsch,4,12.0\n840,0.063,42.0,2658,Villager,American IPA,4,12.0\n841,0.085,50.0,2625,Dirty Bastard,Scotch Ale / Wee Heavy,15,12.0\n842,0.07200000000000001,65.0,1565,Centennial IPA,American IPA,15,12.0\n843,0.047,42.0,1223,All Day IPA,American IPA,15,12.0\n844,0.076,73.0,1874,El Chingon IPA,American IPA,287,12.0\n845,0.057,40.0,1873,Block Party Robust Porter,American Porter,287,12.0\n846,0.052000000000000005,20.0,1872,Local Buzz,American Blonde Ale,287,12.0\n847,0.055,,2613,Feel Like Maplin' Love,Oatmeal Stout,22,16.0\n848,0.05,,2612,Father's Beer,Belgian Pale Ale,22,16.0\n849,0.06,,2611,The 26th,American IPA,22,16.0\n850,0.064,90.0,2610,The Gadget,American IPA,22,16.0\n851,0.04,,1657,Leprechaun Lager,American Pale Lager,348,12.0\n852,0.052000000000000005,17.0,2309,Sunbru Kölsch,Kölsch,160,12.0\n853,0.06,21.0,1635,Kilt Lifter Scottish-Style Ale,,160,12.0\n854,0.051,,1616,Pumpkin Porter,American Porter,160,12.0\n855,0.042,9.0,1585,Four Peaks Peach Ale,Fruit / Vegetable Beer,160,12.0\n856,0.067,47.0,358,Hop Knot IPA,American IPA,160,12.0\n857,0.06,21.0,179,Kilt Lifter Scottish-Style Ale (2009),Scottish Ale,160,12.0\n858,0.052000000000000005,,178,Sunbru Kölsch,Kölsch,160,12.0\n859,0.06,,2428,Four String Vanilla Porter,American Porter,105,12.0\n860,0.05,28.0,2427,Suncaster Summer Wheat,American Pale Wheat Ale,105,12.0\n861,0.057,36.0,2425,Brass Knuckle Pale Ale,American Pale Ale (APA),105,12.0\n862,0.07,70.0,2424,Big Star White IPA,American White IPA,105,12.0\n863,0.055999999999999994,,1998,Old Detroit,American Amber / Red Ale,253,12.0\n864,0.069,69.0,1556,Batch 69 IPA,American IPA,253,12.0\n865,0.055,18.0,1208,Twisted Helles Summer Lager,Munich Helles Lager,253,12.0\n866,0.053,27.0,2527,OktoberFiesta,,66,12.0\n867,0.065,33.0,2526,Texicali ,American Brown Ale,66,12.0\n868,0.06,,2525,Pinata Protest,Witbier,66,12.0\n869,0.042,20.0,2524,Bat Outta Helles,Munich Helles Lager,66,12.0\n870,0.068,,2523,Original,American Amber / Red Ale,66,12.0\n871,0.042,10.0,2522,Rye Wit,Witbier,66,12.0\n872,0.059000000000000004,70.0,2521,Soul Doubt,American IPA,66,12.0\n873,0.044000000000000004,5.0,2520,Yo Soy Un Berliner,Berliner Weissbier,66,12.0\n874,0.04,,1174,77 Fremont Select Spring Session IPA,American IPA,460,12.0\n875,0.045,,1116,Fremont Organic Pale Ale,American Pale Ale (APA),460,12.0\n876,0.08,,994,Abominable Ale,English Strong Ale,460,12.0\n877,0.065,35.0,901,Harvest Ale,Saison / Farmhouse Ale,460,12.0\n878,0.065,45.0,875,Fremont Summer Ale,American Pale Ale (APA),460,12.0\n879,0.055999999999999994,30.0,858,Universale Pale Ale,American Pale Ale (APA),460,12.0\n880,0.065,80.0,857,Interurban IPA,American IPA,460,12.0\n881,0.053,32.0,1300,Gateway Kolsch Style Ale,Kölsch,433,12.0\n882,0.07,24.0,1260,Wee-Heavy-Er Scotch Ale,Scotch Ale / Wee Heavy,433,12.0\n883,0.052000000000000005,42.0,1259,13 Rebels ESB,Extra Special / Strong Bitter (ESB),433,12.0\n884,0.07,73.0,2254,Salamander Slam,American IPA,180,16.0\n885,0.05,,1658,Cack-A-Lacky,American Pale Ale (APA),347,12.0\n886,0.07200000000000001,50.0,2077,No Wake IPA,American IPA,228,12.0\n887,0.049,15.0,2076,Boathouse Blonde,American Blonde Ale,228,12.0\n888,0.05,26.0,2075,Cedar Point,American Amber / Red Ale,228,12.0\n889,0.067,70.0,2426,Clean Shave IPA,American IPA,106,12.0\n890,0.07200000000000001,75.0,2045,Might As Well IPL,American Pale Lager,240,16.0\n891,0.057999999999999996,35.0,1960,Saison Pamplemousse,Saison / Farmhouse Ale,240,12.0\n892,0.07400000000000001,74.0,1777,2020 IPA,American IPA,240,16.0\n893,0.08,70.0,1698,Wolf Among Weeds IPA,American IPA,240,16.0\n894,0.094,92.0,1641,Better Weather IPA,American IPA,240,16.0\n895,0.059000000000000004,60.0,1490,Point the Way IPA,American IPA,240,16.0\n896,0.046,15.0,1489,Golden Road Hefeweizen,Hefeweizen,240,16.0\n897,0.068,65.0,1399,Heal the Bay IPA,American IPA,240,16.0\n898,0.059000000000000004,60.0,1296,Point the Way IPA,American IPA,240,12.0\n899,0.05,,1034,Cabrillo Kölsch,Kölsch,240,16.0\n900,0.055,20.0,991,Get Up Offa That Brown,American Brown Ale,240,16.0\n901,0.08,70.0,750,Burning Bush Smoked IPA,American IPA,240,16.0\n902,0.08,70.0,749,Wolf Among Weeds IPA (2012),American IPA,240,16.0\n903,0.059000000000000004,60.0,549,Point the Way IPA (2012),American IPA,240,16.0\n904,0.046,15.0,548,Golden Road Hefeweizen (2012),Hefeweizen,240,16.0\n905,0.07,11.0,2587,Vanilla Porter,American Porter,39,16.0\n906,0.07,70.0,1109,Descender IPA,American IPA,464,12.0\n907,0.06,18.0,1108,Sweet As Pacific Ale,American Pale Wheat Ale,464,12.0\n908,0.055999999999999994,36.0,1000,Good People Pale Ale,American Pale Ale (APA),478,12.0\n909,0.09300000000000001,103.0,312,Snake Handler Double IPA,American Double / Imperial IPA,478,12.0\n910,0.06,54.0,311,Coffee Oatmeal Stout,Oatmeal Stout,478,12.0\n911,0.06,64.0,309,Good People IPA,American IPA,478,12.0\n912,0.057999999999999996,36.0,308,Good People American Brown Ale,American Brown Ale,478,12.0\n913,0.055,40.0,2205,Mountain Rescue Pale Ale,American Pale Ale (APA),194,12.0\n914,0.059000000000000004,55.0,2198,Goose Island India Pale Ale,American IPA,196,12.0\n915,0.054000000000000006,30.0,2457,312 Urban Pale Ale,American Pale Ale (APA),88,16.0\n916,0.054000000000000006,30.0,2202,312 Urban Pale Ale,American Pale Ale (APA),88,12.0\n917,0.042,18.0,2201,312 Urban Wheat Ale,American Pale Wheat Ale,88,16.0\n918,0.042,18.0,1829,312 Urban Wheat Ale,American Pale Wheat Ale,88,12.0\n919,0.042,20.0,581,312 Urban Wheat Ale (2012),American Pale Wheat Ale,88,12.0\n920,0.052000000000000005,19.0,1383,Beaver Logger,American Pale Lager,420,12.0\n921,0.05,,477,White Water Wheat,American Pale Wheat Ale,536,12.0\n922,0.052000000000000005,,476,Grand Canyon American Pilsner,American Pilsner,536,12.0\n923,0.054000000000000006,,143,Grand Canyon Sunset Amber Ale,American Amber / Red Ale,536,12.0\n924,,,142,Black Iron India Pale Ale,American IPA,536,12.0\n925,0.043,21.0,2129,Monarch Classic American Wheat,American Pale Wheat Ale,213,12.0\n926,0.049,21.0,2127,Sir William's English Brown Ale,English Brown Ale,213,12.0\n927,0.055,35.0,2126,Lakefire Rye Pale Ale,American Pale Ale (APA),213,12.0\n928,0.053,22.0,2303,Beer Agent Re-Ignition,American Blonde Ale,165,16.0\n929,0.057,18.0,1990,Cherry Ale,Fruit / Vegetable Beer,165,16.0\n930,0.055999999999999994,33.0,1702,Bourbon Barrel Aged Coconut Porter,American Porter,165,16.0\n931,0.062,60.0,1701,Great Crescent IPA,American IPA,165,16.0\n932,0.057,27.0,1700,Aurora Lager,Dortmunder / Export Lager,165,16.0\n933,0.053,22.0,1699,Great Crescent Blonde Ale,American Blonde Ale,165,16.0\n934,0.055999999999999994,33.0,1269,Great Crescent Coconut Porter,American Porter,165,16.0\n935,0.057,25.0,930,Great Crescent Oktoberfest Lager,Märzen / Oktoberfest,165,16.0\n936,0.045,36.0,649,Great Crescent Brown Ale,American Brown Ale,165,16.0\n937,0.057,18.0,639,Cherry Ale (1),Fruit / Vegetable Beer,165,16.0\n938,0.057,27.0,626,Aurora Lager (2011),Dortmunder / Export Lager,165,16.0\n939,0.06,25.0,615,Frosted Fields Winter Wheat,American Dark Wheat Ale,165,16.0\n940,0.051,13.0,478,Great Crescent Belgian Style Wit,Witbier,165,16.0\n941,0.075,65.0,455,Bourbon's Barrel Stout,American Stout,165,16.0\n942,0.08,66.0,442,Great Crescent Stout,English Stout,165,16.0\n943,0.055999999999999994,33.0,441,Great Crescent Coconut Porter (2012),American Porter,165,16.0\n944,0.057,23.0,440,Great Crescent Dark Lager,Euro Dark Lager,165,16.0\n945,0.042,26.0,439,Great Crescent Mild Ale,English Dark Mild Ale,165,16.0\n946,0.062,60.0,436,Great Crescent IPA (2011),American IPA,165,16.0\n947,0.053,22.0,389,Great Crescent Blonde Ale (2011),American Blonde Ale,165,16.0\n948,0.05,,2650,Denver Pale Ale (Artist Series No. 1),American Pale Ale (APA),6,12.0\n949,0.087,,2649,Hibernation Ale,Old Ale,6,12.0\n950,0.061,,2648,Whitewater,American Pale Wheat Ale,6,12.0\n951,0.071,,2647,Rumble,American IPA,6,12.0\n952,0.083,,2646,Orabelle,Tripel,6,12.0\n953,0.05,,2645,Lasso,American IPA,6,12.0\n954,0.095,75.0,2644,Yeti  Imperial Stout,Russian Imperial Stout,6,12.0\n955,0.073,,2643,Colette,Saison / Farmhouse Ale,6,12.0\n956,0.071,,2642,Titan IPA,American IPA,6,12.0\n957,0.045,15.0,404,Black Star Double Hopped Golden Lager (24 oz.),American Pale Lager,543,24.0\n958,0.045,15.0,164,Black Star Double Hopped Golden Lager (12 oz.),American Pale Lager,543,12.0\n959,0.052000000000000005,49.0,1923,Commotion APA,American Pale Ale (APA),269,12.0\n960,0.052000000000000005,,1922,Southern Drawl Pale Lager,American Pale Lager,269,12.0\n961,0.05,5.0,1604,Chickawawa Lemonale,Fruit / Vegetable Beer,365,12.0\n962,0.07,22.0,1574,Barrel Aged Farmer,American Brown Ale,365,16.0\n963,0.048,,1446,Great River Golden Ale,American Blonde Ale,365,12.0\n964,0.048,,1275,Dirty Blonde Chocolate Ale,American Blonde Ale,365,12.0\n965,0.048,20.0,1244,Dos Pistolas,Vienna Lager,365,12.0\n966,0.05,30.0,1064,Owney Irish Style Red Ale,Irish Red Ale,365,16.0\n967,0.06,,1028,Aaah Bock Lager,Vienna Lager,365,16.0\n968,0.055,10.0,865,Widespread Wit,Witbier,365,16.0\n969,0.054000000000000006,30.0,864,Roller Dam Red Ale,Irish Red Ale,365,16.0\n970,0.053,48.0,863,483 Pale Ale,American Pale Ale (APA),365,16.0\n971,0.09,99.0,672,Hop A Potamus Double Dark Rye Pale Ale,Rye Beer,365,16.0\n972,0.07,22.0,655,Farmer Brown Ale,American Brown Ale,365,16.0\n973,0.07,70.0,540,Big Cock IPA,American IPA,365,16.0\n974,0.059000000000000004,25.0,539,Oktoberfest,Märzen / Oktoberfest,365,16.0\n975,0.048,25.0,517,40th Annual Bix Street Fest Copper Ale (Current),American Amber / Red Ale,365,16.0\n976,0.06,36.0,371,Redband Stout,American Stout,365,16.0\n977,0.053,48.0,190,483 Pale Ale (2010),American Pale Ale (APA),365,16.0\n978,0.054000000000000006,30.0,189,Roller Dam Red Ale (2010),Irish Red Ale,365,16.0\n979,0.05,30.0,1106,Pablo Beach Pale Ale,American Pale Ale (APA),466,12.0\n980,0.057,44.0,2314,Wild Trail Pale Ale,American Pale Ale (APA),156,12.0\n981,0.067,71.0,2313,Mothman Black IPA,American Black Ale,156,12.0\n982,0.057999999999999996,,2461,Autumn Winds Fest Beer,Märzen / Oktoberfest,86,16.0\n983,0.085,69.0,2044,Captain's Daughter,American Double / Imperial IPA,86,12.0\n984,0.057999999999999996,,1567,Autumn Winds,Märzen / Oktoberfest,379,16.0\n985,0.06,54.0,1505,Flying Jenny Extra Pale Ale,American Pale Ale (APA),379,12.0\n986,0.04,20.0,1186,Hazy Day Belgian-Style Wit,Witbier,379,16.0\n987,0.055,,1185,Bring Back the Beach Blonde Ale,American Blonde Ale,379,16.0\n988,0.06,34.0,984,Leaning Chimney Smoked Porter,American Porter,379,16.0\n989,0.06,54.0,693,Flying Jenny Extra Pale Ale (2012),American Pale Ale (APA),379,12.0\n990,0.049,22.0,631,Flagship Ale,Cream Ale,379,12.0\n991,0.045,6.0,2375,Mr. Blue Sky,American Pale Wheat Ale,124,16.0\n992,0.065,,2143,3 Scrooges,Winter Warmer,124,16.0\n993,0.05,25.0,2142,Screamin’ Pumpkin,Pumpkin Ale,124,16.0\n994,0.05,35.0,2141,Grand Trunk Bohemian Pils,Czech Pilsener,124,16.0\n995,0.065,25.0,2140,El Rojo,American Amber / Red Ale,124,16.0\n996,0.075,,2139,Norm's Raggedy Ass IPA,American IPA,124,16.0\n997,0.05,35.0,2138,Grind Line,American Pale Ale (APA),124,16.0\n998,0.04,55.0,2007,Norm's Gateway IPA,American IPA,124,12.0\n999,0.09,,1570,Lemon Shandy Tripel,Tripel,124,16.0\n1000,0.063,43.0,2339,Little Red Cap,Altbier,144,12.0\n1001,0.069,67.0,1857,Supergoose IPA,American IPA,290,12.0\n1002,0.047,,1440,Hale's Pale American Ale,American Pale Ale (APA),290,12.0\n1003,0.07,,1753,Heyoka IPA,American IPA,327,16.0\n1004,0.08,,1448,Guest Lager,American Double / Imperial Pilsner,327,16.0\n1005,0.057,,1134,Pony Pilsner,German Pilsener,327,16.0\n1006,0.055,,1066,Akari Shogun American Wheat Ale,American Pale Wheat Ale,327,16.0\n1007,0.06,,849,Meat Wave,English India Pale Ale (IPA),327,16.0\n1008,0.06,,352,Over Ale,American Brown Ale,327,16.0\n1009,0.042,,149,Gossamer Golden Ale,American Blonde Ale,327,16.0\n1010,0.052000000000000005,,148,Daisy Cutter Pale Ale,American Pale Ale (APA),327,16.0\n1011,0.07,40.0,2026,Pursuit,American IPA,248,12.0\n1012,0.052000000000000005,18.0,1361,Half Full Bright Ale,American Blonde Ale,248,12.0\n1013,0.046,17.0,1016,Orange Wheat,Fruit / Vegetable Beer,476,12.0\n1014,0.043,14.0,1015,Hangar 24 Helles Lager,Munich Helles Lager,476,12.0\n1015,0.075,70.0,1677,The Great Return,American IPA,343,16.0\n1016,0.044000000000000004,18.0,1331,Hardywood Cream Ale,Cream Ale,343,12.0\n1017,0.055999999999999994,55.0,1270,Capital Trail Pale Ale,American Pale Ale (APA),343,12.0\n1018,0.052000000000000005,15.0,2059,UFO Gingerland,Herbed / Spiced Beer,234,12.0\n1019,0.062,45.0,1653,The Long Thaw White IPA,American White IPA,234,12.0\n1020,0.048,,1558,Honey Cider,Cider,234,12.0\n1021,0.05,28.0,1380,Harpoon Summer Beer,Kölsch,234,12.0\n1022,0.059000000000000004,42.0,1379,Harpoon IPA,American IPA,234,12.0\n1023,0.059000000000000004,20.0,1340,UFO Pumpkin,Pumpkin Ale,234,12.0\n1024,0.055,30.0,1313,Harpoon Octoberfest,Märzen / Oktoberfest,234,12.0\n1025,0.059000000000000004,42.0,770,Harpoon IPA (2012),American IPA,234,12.0\n1026,0.05,28.0,769,Harpoon Summer Beer (2012),Kölsch,234,12.0\n1027,0.048,10.0,610,UFO White,American Pale Wheat Ale,234,12.0\n1028,0.05,28.0,192,Harpoon Summer Beer (2010),Kölsch,234,12.0\n1029,0.059000000000000004,42.0,126,Harpoon IPA (2010),American IPA,234,12.0\n1030,,,506,Great Falls Select Pale Ale,American Blonde Ale,535,12.0\n1031,0.048,,181,Beltian White,Witbier,535,12.0\n1032,0.049,,2183,Kaua'i Golden Ale,American Blonde Ale,204,12.0\n1033,0.054000000000000006,,2182,Sunset Amber,American Pale Ale (APA),204,12.0\n1034,0.064,,2181,Hapa Brown Ale,American Brown Ale,204,19.2\n1035,0.064,,2180,Hapa Brown Ale,American Brown Ale,204,12.0\n1036,0.083,,2179,Southern Cross,Flanders Red Ale,204,19.2\n1037,0.076,65.0,1895,Groupe G,Belgian IPA,280,16.0\n1038,0.062,40.0,1894,Pt. Bonita Rustic Lager,American Pale Lager,280,16.0\n1039,0.08800000000000001,77.0,1893,Hill 88 Double IPA,American Double / Imperial IPA,280,16.0\n1040,0.07200000000000001,45.0,990,Loose Cannon,American IPA,479,12.0\n1041,0.06,30.0,989,AARGHtoberfest!,Märzen / Oktoberfest,479,12.0\n1042,0.06,,988,Davy Jones Lager,Cream Ale,479,12.0\n1043,0.063,30.0,1351,Grazias,Cream Ale,423,16.0\n1044,0.08,86.0,1346,Habitus IPA,American IPA,423,16.0\n1045,0.099,85.0,904,Ex Umbris Rye Imperial Stout,American Double / Imperial Stout,423,16.0\n1046,0.063,21.0,2295,The Golden One,American Pilsner,168,12.0\n1047,0.07,68.0,2294,The Power of Zeus,American Pale Ale (APA),168,12.0\n1048,0.044000000000000004,22.0,824,Tonganoxie Honey Wheat,American Pale Wheat Ale,500,12.0\n1049,0.045,,616,Oregon Trail Unfiltered Raspberry Wheat,Fruit / Vegetable Beer,500,12.0\n1050,0.055,,96,Annie's Amber Ale,American Amber / Red Ale,500,12.0\n1051,0.045,32.0,1615,The 12th Can™,American Pale Ale (APA),362,16.0\n1052,0.055,34.0,889,Hilliard's Pils,Czech Pilsener,362,16.0\n1053,0.049,20.0,724,Hilliard's Blonde,American Blonde Ale,362,16.0\n1054,0.055,60.0,497,Hilliard's Amber Ale,American Amber / Red Ale,362,16.0\n1055,0.066,30.0,496,Hilliard's Saison,Saison / Farmhouse Ale,362,16.0\n1056,0.042,,1652,White Cap White IPA,American White IPA,349,16.0\n1057,0.042,25.0,1835,Provision,Saison / Farmhouse Ale,297,12.0\n1058,0.047,28.0,1834,One Nut Brown,American Brown Ale,297,12.0\n1059,0.057999999999999996,45.0,1833,Hop Farm IPA,American IPA,297,12.0\n1060,0.049,20.0,2195,Double D Blonde,American Blonde Ale,198,12.0\n1061,0.078,60.0,1605,Festeroo Winter Ale,American Strong Ale,198,12.0\n1062,0.063,70.0,1543,Proxima IPA,American IPA,198,12.0\n1063,0.049,20.0,1390,Double D Blonde (2013),American Blonde Ale,198,12.0\n1064,0.048,13.0,1354,541 American Lager,American Pale Lager,198,12.0\n1065,0.065,90.0,1353,Alphadelic IPA,American IPA,198,12.0\n1066,0.065,90.0,499,Alphadelic IPA (2011),American IPA,198,12.0\n1067,0.049,20.0,498,Double D Blonde (2011),American Blonde Ale,198,12.0\n1068,0.07,,1501,Green House India Pale Ale,American IPA,395,12.0\n1069,0.051,,1004,The One They Call Zoe,American Pale Lager,395,12.0\n1070,0.051,40.0,502,Alteration,Altbier,395,12.0\n1071,0.06,50.0,501,Pale Dog,American Pale Ale (APA),395,12.0\n1072,0.065,,2357,Porter Culture,American Porter,136,12.0\n1073,0.068,,2483,Hard Cider,Cider,80,16.0\n1074,0.027000000000000003,21.0,2482,Totally Radler,Radler,80,16.0\n1075,0.039,20.0,2400,Nonstop Hef Hop,American Pale Wheat Ale,80,16.0\n1076,0.039,20.0,2399,Nonstop Hef Hop,American Pale Wheat Ale,80,16.0\n1077,0.039,20.0,2398,Nonstop Hef Hop,American Pale Wheat Ale,80,16.0\n1078,0.039,20.0,2397,Nonstop Hef Hop,American Pale Wheat Ale,80,16.0\n1079,0.039,20.0,2396,Nonstop Hef Hop,American Pale Wheat Ale,80,16.0\n1080,0.039,20.0,2395,Nonstop Hef Hop,American Pale Wheat Ale,80,16.0\n1081,0.039,20.0,2394,Nonstop Hef Hop,American Pale Wheat Ale,80,16.0\n1082,0.039,20.0,2393,Nonstop Hef Hop,American Pale Wheat Ale,80,16.0\n1083,0.039,20.0,2392,Nonstop Hef Hop,American Pale Wheat Ale,80,16.0\n1084,0.039,20.0,2391,Nonstop Hef Hop,American Pale Wheat Ale,80,16.0\n1085,0.039,20.0,2390,Nonstop Hef Hop,American Pale Wheat Ale,80,16.0\n1086,0.039,20.0,2389,Nonstop Hef Hop,American Pale Wheat Ale,80,16.0\n1087,0.057999999999999996,60.0,2388,Rise Up Red,American Amber / Red Ale,80,16.0\n1088,0.057999999999999996,35.0,2200,Survival Stout,American Stout,80,16.0\n1089,0.066,75.0,2199,Hopworks IPA,American IPA,80,16.0\n1090,0.073,70.0,2193,Abominable Winter Ale,American Strong Ale,80,16.0\n1091,0.06,60.0,1398,Pigwar White India Pale Ale,American White IPA,80,16.0\n1092,0.057999999999999996,60.0,1085,Rise-Up Red (2014),American Amber / Red Ale,80,16.0\n1093,0.073,70.0,916,Abominable Winter Ale (2012),American Strong Ale,80,16.0\n1094,0.051,32.0,658,HUB Lager,Czech Pilsener,80,16.0\n1095,0.066,75.0,653,Hopworks IPA (2012),American IPA,80,16.0\n1096,0.055999999999999994,,2385,Watermelon Wheat,American Pale Wheat Ale,120,12.0\n1097,0.051,17.0,2384,Laka Laka Pineapple,Hefeweizen,120,12.0\n1098,0.06,,2383,Oktoberfest,Märzen / Oktoberfest,120,16.0\n1099,0.065,,1251,Trail Maker Pale Ale,American Pale Ale (APA),445,12.0\n1100,0.055,,1250,Action Man Lager,Vienna Lager,445,12.0\n1101,0.068,90.0,1903,Let It Ride IPA,American IPA,277,12.0\n1102,0.065,22.0,1691,Stir Crazy Winter Ale,Winter Warmer,277,12.0\n1103,0.05,10.0,1555,Sweet Yamma Jamma Ale,Fruit / Vegetable Beer,277,12.0\n1104,0.046,27.0,1115,Shenanigans Summer Ale,American Pale Wheat Ale,277,12.0\n1105,0.065,80.0,729,Midnight Ryder,American Black Ale,277,12.0\n1106,0.054000000000000006,45.0,728,Day Tripper Pale Ale,American Pale Ale (APA),277,12.0\n1107,0.048,32.0,2350,Oklahoma Suks,American Amber / Red Ale,140,12.0\n1108,0.055,42.0,2301,Power & Light,American Pale Ale (APA),140,12.0\n1109,0.059000000000000004,27.0,1904,White Rabbit ,Witbier,140,12.0\n1110,0.057999999999999996,58.0,2609,Tribute,American Pale Ale (APA),23,12.0\n1111,0.07,75.0,2038,Infamous IPA,American IPA,242,12.0\n1112,0.055,20.0,1774,Hijack,Cream Ale,242,12.0\n1113,0.045,20.0,559,Jon Boat Coastal Ale,American Blonde Ale,527,12.0\n1114,0.068,55.0,558,I-10 IPA,American IPA,527,12.0\n1115,0.053,28.0,553,People's Pale Ale,American Pale Ale (APA),527,12.0\n1116,0.049,,2376,Summer Ale,American Blonde Ale,123,12.0\n1117,,,1784,Appreciation Ale,American IPA,316,16.0\n1118,0.052000000000000005,18.0,2673,House Lager,Keller Bier / Zwickel Bier,2,16.0\n1119,0.048,15.0,2672,Leisure Time,American Pale Lager,2,12.0\n1120,0.07200000000000001,80.0,2671,Excess IPL,American India Pale Lager,2,16.0\n1121,0.067,65.0,2670,Hoponius Union,American India Pale Lager,2,12.0\n1122,0.049,45.0,2669,Calyptra,American India Pale Lager,2,12.0\n1123,0.05,,1405,Helen's Blend,Cider,416,12.0\n1124,0.051,,823,Jack's Hard Cider,Cider,416,12.0\n1125,0.055,37.0,1793,Thunder Ann,American Pale Ale (APA),312,12.0\n1126,0.055,,2453,Razz Wheat,Fruit / Vegetable Beer,92,12.0\n1127,0.065,,2363,Hop Ryot,American IPA,92,12.0\n1128,0.07,,689,Mystic Mama IPA,American IPA,92,12.0\n1129,0.05,,688,Firefly Amber Ale,American Amber / Red Ale,92,12.0\n1130,0.067,,687,Chomolungma Honey Nut Brown Ale,English Brown Ale,92,12.0\n1131,0.069,,2408,Welcome to Scoville,American IPA,114,12.0\n1132,,,2595,Bastian,American Strong Ale,32,12.0\n1133,0.045,,2480,Healani,Hefeweizen,32,12.0\n1134,0.055,,1525,Yabba Dhaba Chai Tea Porter,American Porter,32,12.0\n1135,0.055,,1524,A Capella Gluten Free Pale Ale,American Pale Ale (APA),32,12.0\n1136,0.06,,1523,Casper White Stout,American Blonde Ale,32,12.0\n1137,0.06,,1254,JP's Ould Sod Irish Red IPA,American IPA,32,12.0\n1138,0.05,15.0,2060,Weize Guy,Hefeweizen,233,12.0\n1139,0.05,50.0,469,Fox Tail Gluten Free Ale,American Pale Ale (APA),233,12.0\n1140,0.09300000000000001,90.0,468,Hop Box Imperial IPA,American Double / Imperial IPA,233,12.0\n1141,0.052000000000000005,15.0,467,Joseph James American Lager,American Adjunct Lager,233,12.0\n1142,0.071,,2163,Sucha Much IPA,American IPA,208,12.0\n1143,0.075,24.0,2162,Lewbricator Wheat Dopplebock ,Doppelbock,208,12.0\n1144,0.052000000000000005,16.0,2374,Weisse Versa (2012),Hefeweizen,125,12.0\n1145,0.057999999999999996,25.0,1560,Mother in Lager,Munich Dunkel Lager,125,12.0\n1146,0.055,40.0,1557,Weekend Warrior Pale Ale,American Pale Ale (APA),125,12.0\n1147,0.055,25.0,1458,Karbachtoberfest,Märzen / Oktoberfest,125,12.0\n1148,0.047,20.0,1235,Love Street Summer Seasonal (2014),Kölsch,125,12.0\n1149,0.066,20.0,1068,Barn Burner Saison,Saison / Farmhouse Ale,125,12.0\n1150,0.095,85.0,666,Rodeo Clown Double IPA,American Double / Imperial IPA,125,12.0\n1151,0.049,45.0,465,Sympathy for the Lager,American Amber / Red Lager,125,12.0\n1152,0.052000000000000005,15.0,464,Weisse Versa,Hefeweizen,125,12.0\n1153,0.066,70.0,463,Hopadillo India Pale Ale,American IPA,125,12.0\n1154,0.057,19.0,1678,KelSo Nut Brown Lager,Euro Dark Lager,342,12.0\n1155,0.06,64.0,1572,KelSo India Pale Ale,American IPA,342,12.0\n1156,0.055,23.0,1348,KelSo Pilsner,Czech Pilsener,342,12.0\n1157,0.057999999999999996,,1193,Skilak Scottish Ale,Scottish Ale,458,12.0\n1158,0.05,15.0,1187,Peninsula Brewers Reserve (PBR),American Blonde Ale,458,12.0\n1159,0.068,,349,Sunken Island IPA,American IPA,458,12.0\n1160,0.057999999999999996,,348,Skilak Scottish Ale (2011),Scottish Ale,458,12.0\n1161,0.065,11.0,760,Cold Smoke Scotch Ale (2007),Scotch Ale / Wee Heavy,510,16.0\n1162,0.065,65.0,759,Double Haul IPA (2009),American IPA,510,16.0\n1163,0.065,65.0,758,Double Haul IPA (2006),American IPA,510,16.0\n1164,0.055,50.0,87,Eddy Out Pale Ale,American Pale Ale (APA),510,16.0\n1165,0.065,65.0,86,Double Haul IPA,American IPA,510,16.0\n1166,0.065,11.0,85,Cold Smoke Scotch Ale,Scotch Ale / Wee Heavy,510,16.0\n1167,,,2472,U. P. Witbier,Witbier,84,12.0\n1168,,,779,November Gale Pale Ale,American Pale Ale (APA),84,12.0\n1169,,,364,Olde Ore Dock Scottish Ale,Scottish Ale,84,12.0\n1170,,,60,Widow Maker Black Ale,American Brown Ale,84,12.0\n1171,,,59,Lift Bridge Brown Ale,American Brown Ale,84,12.0\n1172,,,58,Pick Axe Blonde Ale,American Blonde Ale,84,12.0\n1173,,,57,Red Jacket Amber Ale,American Amber / Red Ale,84,12.0\n1174,0.051,,2436,Amber Ale,American Amber / Red Ale,102,12.0\n1175,0.055,,1706,King Street Pilsner,Czech Pilsener,102,12.0\n1176,0.06,70.0,1667,King Street IPA,American IPA,102,12.0\n1177,0.057,10.0,1666,King Street Hefeweizen,Hefeweizen,102,12.0\n1178,0.049,,1665,King Street Blonde Ale,American Blonde Ale,102,12.0\n1179,0.063,65.0,2460,India Pale Ale,American IPA,87,16.0\n1180,0.048,11.0,2459,Blackberry Wheat,American Pale Wheat Ale,87,16.0\n1181,0.046,18.0,1274,Longboard Island Lager,American Amber / Red Lager,439,24.0\n1182,0.046,18.0,1220,Longboard Island Lager,American Amber / Red Lager,439,16.0\n1183,0.046,18.0,1070,Longboard Island Lager,American Amber / Red Lager,439,12.0\n1184,0.046,18.0,590,Longboard Island Lager,American Amber / Red Lager,439,12.0\n1185,0.04,9.0,781,Choc Beer (2003),American Dark Wheat Ale,505,12.0\n1186,0.08,,1637,Bellingham Beer Week 2013 Collaboration,Belgian Strong Dark Ale,354,16.0\n1187,0.054000000000000006,15.0,1741,A Slice of Hefen,Hefeweizen,332,16.0\n1188,0.07200000000000001,100.0,664,Elevated IPA,American IPA,332,16.0\n1189,0.066,30.0,392,Rumspringa Golden Bock,Maibock / Helles Bock,545,12.0\n1190,0.048,28.0,195,Lancaster German Style Kölsch,Kölsch,545,12.0\n1191,0.045,,2547,Beach Cruiser,Hefeweizen,59,12.0\n1192,0.068,,2493,I.P. Eh!,American IPA,59,12.0\n1193,0.05,,2492,Schoolhouse Honey,American Amber / Red Ale,59,12.0\n1194,0.055,,2491,10 Degrees of Separation,English Brown Ale,59,12.0\n1195,0.05,12.0,2108,Laughing Dog Cream Ale,Cream Ale,218,12.0\n1196,0.048,9.0,1397,Two-One Niner,American Pilsner,218,12.0\n1197,0.064,66.0,1396,Laughing Dog IPA,American IPA,218,12.0\n1198,0.064,95.0,1675,Madra Allta,American IPA,345,12.0\n1199,0.055999999999999994,70.0,1249,Duluchan India Pale Ale,American IPA,345,12.0\n1200,0.05,,1445,Lazy Monk Bohemian Pilsner,Czech Pilsener,406,16.0\n1201,0.051,,475,Yellowstone Golden Ale,Kölsch,537,12.0\n1202,0.057,,474,Tumbleweed IPA,American IPA,537,12.0\n1203,0.05,,473,Lewis & Clark Amber Ale,American Amber / Red Ale,537,12.0\n1204,0.05,,472,Miner's Gold Hefeweizen,Hefeweizen,537,12.0\n1205,0.057,,471,Back Country Scottish Ale,Scottish Ale,537,12.0\n1206,0.052000000000000005,30.0,2036,Getaway,German Pilsener,244,16.0\n1207,0.06,30.0,1168,Farm Girl Saison,Saison / Farmhouse Ale,244,16.0\n1208,0.057999999999999996,40.0,1832,Adam's Stout,American Stout,298,12.0\n1209,0.057,42.0,1688,American Hero,American Amber / Red Ale,298,12.0\n1210,0.052000000000000005,20.0,1687,Schweet Ale,Fruit / Vegetable Beer,298,12.0\n1211,0.065,75.0,1686,Irregardless IPA,American IPA,298,12.0\n1212,0.057,40.0,2434,Peach Pale Ale,American Pale Ale (APA),104,12.0\n1213,0.06,,2332,Deadeye Jack,American Porter,149,12.0\n1214,0.075,,2330,Pistols at Dawn,American Stout,149,16.0\n1215,0.057,47.0,2329,Peacemaker Pale Ale,American Pale Ale (APA),149,12.0\n1216,0.057999999999999996,11.0,2327,Shotgun Betty,Hefeweizen,149,12.0\n1217,0.061,30.0,2326,Sweet Josie,American Brown Ale,149,12.0\n1218,0.059000000000000004,42.0,1926,Long Trail IPA,English India Pale Ale (IPA),268,12.0\n1219,0.046,30.0,1924,Long Trail Ale,American Amber / Red Ale,268,12.0\n1220,0.07200000000000001,33.0,1090,Double Bag,Altbier,268,16.0\n1221,0.04,8.0,574,Blackbeary Wheat,Fruit / Vegetable Beer,268,12.0\n1222,0.046,30.0,573,Long Trail Ale (1),Altbier,268,12.0\n1223,0.046,8.0,2584,Gose,Gose,41,16.0\n1224,0.048,20.0,2583,Vermont Pilsner,German Pilsener,41,16.0\n1225,0.055,,2582,Mosaic Single Hop IPA,American IPA,41,16.0\n1226,0.045,,2581,Lost Galaxy,American IPA,41,16.0\n1227,0.062,65.0,1309,Face Plant IPA,American IPA,430,12.0\n1228,0.055999999999999994,55.0,1308,Rhino Chasers Pilsner,Czech Pilsener,430,12.0\n1229,0.052000000000000005,29.0,1571,Slow Hand Stout,American Stout,377,16.0\n1230,0.062,,1204,Hips Don't Lie,Hefeweizen,456,16.0\n1231,0.052000000000000005,,1122,Ride Again Pale Ale,American Pale Ale (APA),456,16.0\n1232,0.048,,700,The Farmer's Daughter,American Blonde Ale,456,16.0\n1233,0.038,18.0,2033,Pub Ale,English Dark Mild Ale,245,12.0\n1234,0.051,31.0,2032,Ballistic Blonde,Belgian Pale Ale,245,12.0\n1235,0.054000000000000006,,2311,Knotty Pine,American Pale Ale (APA),158,12.0\n1236,0.053,20.0,1153,Lumberyard Pilsner,American Pilsner,158,12.0\n1237,0.061,,355,Lumberyard IPA,American IPA,158,12.0\n1238,0.057999999999999996,,125,Lumberyard Red Ale,American Amber / Red Ale,158,12.0\n1239,0.05,,962,Mac's Highlander Pale Ale (2000),American Pale Ale (APA),485,12.0\n1240,0.051,32.0,961,Mac's Scottish Style Amber Ale (2000),American Amber / Red Ale,485,12.0\n1241,0.05,,1475,Macon Progress Ale,American Pale Ale (APA),400,12.0\n1242,0.055,,1008,Macon History Ale,American Brown Ale,400,12.0\n1243,0.099,,2454,Galaxy High,American Double / Imperial IPA,91,12.0\n1244,0.043,18.0,2209,Sol Drifter,American Blonde Ale,91,12.0\n1245,0.085,,2133,Thunder Snow,Winter Warmer,91,12.0\n1246,0.079,18.0,1994,The Great Pumpcan,Fruit / Vegetable Beer,91,16.0\n1247,0.047,11.0,1816,LIFT,Kölsch,91,12.0\n1248,0.05,40.0,1815,SPRYE,American Pale Ale (APA),91,12.0\n1249,0.069,70.0,1126,Psychopathy,American IPA,91,12.0\n1250,0.07,32.0,1125,Gnarly Brown,American Brown Ale,91,12.0\n1251,0.06,30.0,1124,Happy Amber,American Amber / Red Ale,91,12.0\n1252,0.051,20.0,1813,#9,Fruit / Vegetable Beer,303,16.0\n1253,0.055,13.0,1113,Elder Betty,Hefeweizen,303,12.0\n1254,0.051,20.0,360,#9,Fruit / Vegetable Beer,303,12.0\n1255,0.042,,511,High Country Pilsner (Current),German Pilsener,534,12.0\n1256,0.065,,75,Epic IPA,American IPA,534,12.0\n1257,0.042,,74,Golden Trout Pilsner,German Pilsener,534,12.0\n1258,0.045,,73,Real McCoy Amber Ale (Current),American Amber / Red Ale,534,12.0\n1259,0.07200000000000001,,1628,Festivus (1),Winter Warmer,356,12.0\n1260,0.067,,1626,Manayunk Oktoberfest,Märzen / Oktoberfest,356,12.0\n1261,0.045,21.0,1625,Belgian Style Session Ale,Belgian Pale Ale,356,12.0\n1262,0.055,,1624,Manayunk IPA,American IPA,356,12.0\n1263,0.055,,1600,Yunkin' Punkin',Pumpkin Ale,356,12.0\n1264,0.05,18.0,1484,Summer Paradise,American Pale Wheat Ale,356,12.0\n1265,0.09,30.0,1356,Monk from the 'Yunk,Tripel,356,12.0\n1266,0.06,14.0,1355,Schuylkill Punch,Fruit / Vegetable Beer,356,12.0\n1267,0.085,85.0,1334,Dreamin' Double IPA,American Double / Imperial IPA,356,12.0\n1268,0.099,93.0,1674,Chaotic Double IPA,American Double / Imperial IPA,346,12.0\n1269,0.08,88.0,1673,Manzanita IPA,American IPA,346,12.0\n1270,0.06,25.0,1672,Riverwalk Blonde Ale,American Blonde Ale,346,12.0\n1271,0.095,49.0,1671,Gillespie Brown Ale,American Brown Ale,346,12.0\n1272,0.066,44.0,1670,Manzanita Pale Ale,American Pale Ale (APA),346,12.0\n1273,0.047,,1262,Marble Pilsner,German Pilsener,443,12.0\n1274,0.062,,845,Marble India Pale Ale,American IPA,443,12.0\n1275,0.07200000000000001,,1783,Toughcats IPA,American IPA,317,16.0\n1276,0.05,,1717,Tug Pale Ale,American Pale Ale (APA),317,16.0\n1277,0.099,,1716,Sexy Chaos,Russian Imperial Stout,317,16.0\n1278,0.063,,1516,Ace Hole American Pale Ale,American Pale Ale (APA),317,16.0\n1279,0.09699999999999999,,725,Cant Dog Imperial Pale Ale,American Double / Imperial IPA,317,16.0\n1280,0.05,20.0,2308,River House,Saison / Farmhouse Ale,161,16.0\n1281,0.065,47.0,2268,Pretzel Stout,American Stout,161,16.0\n1282,0.05,35.0,2197,Rubberneck Red,American Amber / Red Ale,161,16.0\n1283,0.08,,2120,The Imperial Texan,American Double / Imperial IPA,161,16.0\n1284,0.08,,1234,The Imperial Texan,American Double / Imperial IPA,161,12.0\n1285,0.05,,1233,Day Break 4-Grain Breakfast Beer,Rye Beer,161,16.0\n1286,0.05,,1232,River House Saison,Saison / Farmhouse Ale,161,12.0\n1287,0.065,,1231,There Will Be Stout,American Stout,161,12.0\n1288,0.065,60.0,1831,Our Legacy IPA,American IPA,299,12.0\n1289,0.042,,1359,Saranac Shandy,Shandy,299,12.0\n1290,0.065,60.0,1135,Our Legacy IPA,American IPA,299,16.0\n1291,0.051,,960,Saranac Golden Pilsener (2003),German Pilsener,299,12.0\n1292,0.045,,959,Saranac Adirondack Light (2002),Light Lager,299,12.0\n1293,0.045,,958,DAX Light (1998),Light Lager,299,12.0\n1294,0.048,,957,Saranac Traditional Lager (2000),American Pale Lager,299,12.0\n1295,0.047,,956,Pomegranate Wheat (2008),Fruit / Vegetable Beer,299,12.0\n1296,0.05,12.0,773,Blueberry Blonde Ale,American Blonde Ale,299,12.0\n1297,0.06,,686,Saranac White IPA,American IPA,299,12.0\n1298,0.047,,453,Saranac Summer Ale (2011),American Pale Wheat Ale,299,12.0\n1299,0.055,,150,Saranac Pale Ale (12 oz.),English Pale Ale,299,12.0\n1300,0.055,,133,Saranac Pale Ale (16 oz.),English Pale Ale,299,16.0\n1301,0.051,20.0,1578,Lahaina Town Brown,American Brown Ale,375,12.0\n1302,0.055,,1429,Pau Hana Pilsner,Czech Pilsener,375,12.0\n1303,0.05,,1271,Lemongrass Saison,Saison / Farmhouse Ale,375,12.0\n1304,0.07,,713,Aloha B’ak’tun,Belgian Strong Dark Ale,375,12.0\n1305,0.08199999999999999,,712,Liquid Breadfruit,Fruit / Vegetable Beer,375,12.0\n1306,0.06,24.0,690,Sobrehumano Palena'ole,American Amber / Red Ale,375,12.0\n1307,0.05,12.0,547,La Perouse White,Witbier,375,12.0\n1308,0.068,68.0,435,Flyin' HI.P.Hay,American IPA,375,12.0\n1309,0.055,15.0,313,Mana Wheat,American Pale Wheat Ale,375,12.0\n1310,0.045,18.0,33,Bikini Blonde Lager,Munich Helles Lager,375,12.0\n1311,0.057,30.0,32,CoCoNut Porter,American Porter,375,12.0\n1312,0.062,65.0,31,Big Swell IPA,American IPA,375,12.0\n1313,0.037000000000000005,34.0,1237,Pit Stop Chocolate Porter,American Porter,448,12.0\n1314,0.037000000000000005,21.0,1236,Pace Setter Belgian Style Wit,Witbier,448,12.0\n1315,0.037000000000000005,53.0,1047,Back in the Saddle Rye Pale Ale,American Pale Ale (APA),448,12.0\n1316,0.069,,1986,Bushwhacker Cider,Cider,254,16.0\n1317,0.069,,1985,Weim-R-Iner,Cider,254,16.0\n1318,0.069,,1984,Cherry Bomb,Cider,254,16.0\n1319,0.07200000000000001,75.0,2186,Tsunami IPA,American IPA,203,19.2\n1320,0.07200000000000001,75.0,2185,Tsunami IPA,American IPA,203,12.0\n1321,0.042,22.0,2184,Humpback Blonde Ale,American Blonde Ale,203,12.0\n1322,0.052000000000000005,27.0,2178,Hawaiian Crow Porter,American Porter,203,12.0\n1323,0.052000000000000005,23.0,2177,Volcano Red Ale,American Amber / Red Ale,203,12.0\n1324,0.054000000000000006,42.0,2176,Mauna Kea Pale Ale,American Pale Ale (APA),203,12.0\n1325,0.053,11.0,1508,Shark Bait,Fruit / Vegetable Beer,393,12.0\n1326,0.053,30.0,1507,Gator Tail Brown Ale,American Brown Ale,393,12.0\n1327,0.071,62.0,1506,Miami Vice IPA,American IPA,393,12.0\n1328,0.053,16.0,1325,Big Rod Coconut Ale,American Blonde Ale,393,12.0\n1329,0.055999999999999994,,174,Mickey Finn's Amber Ale,American Amber / Red Ale,552,12.0\n1330,0.063,61.0,2093,Pleasure Town,American IPA,223,12.0\n1331,0.063,61.0,1814,Pleasure Town IPA,American IPA,223,12.0\n1332,0.048,12.0,587,Snowshoe White Ale,Witbier,223,12.0\n1333,0.05,24.0,586,Kodiak Brown Ale,American Brown Ale,223,12.0\n1334,0.057,70.0,434,Sockeye Red IPA,American IPA,223,12.0\n1335,0.08,100.0,2668,Habitus (2014),American Double / Imperial IPA,3,16.0\n1336,0.075,85.0,2667,Solis,American IPA,3,16.0\n1337,0.06,24.0,2666,Jucundus,Wheat Ale,3,16.0\n1338,0.08,100.0,2664,Habitus,American Double / Imperial IPA,3,16.0\n1339,0.063,30.0,2663,Grazias,Cream Ale,3,16.0\n1340,0.057999999999999996,28.0,2662,Claritas,Kölsch,3,16.0\n1341,0.083,,2535,Vinyl Frontier,American Double / Imperial IPA,65,24.0\n1342,0.08,,2534,Disco Superfly,American IPA,65,24.0\n1343,0.075,,2533,Misty Mountain Hop,American IPA,65,24.0\n1344,0.075,,2532,One-Hit Wonderful,Belgian IPA,65,24.0\n1345,0.065,,2531,En Parfaite Harmonie,Saison / Farmhouse Ale,65,24.0\n1346,0.043,8.0,2530,Daft Funk,Berliner Weissbier,65,24.0\n1347,0.075,,2529,Love In An Ellavator,American IPA,65,24.0\n1348,0.053,,2528,Spin Doctor,American Pale Ale (APA),65,24.0\n1349,0.05,,1612,Keeper (Current),American Pilsner,363,12.0\n1350,0.068,,1611,Better Half,American IPA,363,12.0\n1351,0.048,,1273,SNO White Ale,Witbier,440,16.0\n1352,0.048,,365,BRIK Irish Red Ale,Irish Red Ale,440,16.0\n1353,,,273,AXL Pale Ale,American Pale Ale (APA),440,16.0\n1354,0.087,80.0,1884,Hop Freak,American Double / Imperial IPA,284,16.0\n1355,0.051,24.0,1272,Louie's Demise Amber Ale,American Amber / Red Ale,284,16.0\n1356,0.075,51.0,1080,Hop Happy,American IPA,284,16.0\n1357,0.065,20.0,932,Booyah Farmhouse Ale,Saison / Farmhouse Ale,284,16.0\n1358,0.092,,776,O-Gii,Witbier,284,16.0\n1359,0.048,18.0,172,Flaming Damsel Lager (2010),Vienna Lager,284,16.0\n1360,0.051,24.0,171,Louie’s Demise Immort-Ale (2010),American Amber / Red Ale,284,16.0\n1361,0.099,,2361,Axe Head Malt Liquor,American Malt Liquor,134,24.0\n1362,0.054000000000000006,,2359,Huber Bock (2014),Bock,134,16.0\n1363,0.04,,2358,Minhas Light (2012),Light Lager,134,12.0\n1364,0.05,,2282,Huber,American Pale Lager,134,12.0\n1365,0.062,,2281,Clear Creek Ice,American Pale Lager,134,16.0\n1366,0.062,,2280,Clear Creek Ice,American Pale Lager,134,12.0\n1367,0.055,,2279,Mountain Crest,American Pale Lager,134,16.0\n1368,0.055,,2278,Mountain Crest,American Pale Lager,134,12.0\n1369,0.055,,2277,Mountain Creek (2013),American Pale Lager,134,12.0\n1370,0.05,,2276,Boxer,American Adjunct Lager,134,24.0\n1371,0.042,,2275,Boxer Light,Light Lager,134,12.0\n1372,0.055,,2274,Boxer Ice,American Adjunct Lager,134,12.0\n1373,0.05,,2273,Boxer,American Adjunct Lager,134,12.0\n1374,0.05,,2442,Cortez Gold,Belgian Pale Ale,98,32.0\n1375,0.068,66.0,2441,Mission IPA,American IPA,98,32.0\n1376,0.048,44.0,1460,El Conquistador Extra Pale Ale,American Pale Ale (APA),98,32.0\n1377,0.092,75.0,1459,Shipwrecked Double IPA,American Double / Imperial IPA,98,32.0\n1378,0.04,,1476,Squeaky Bike Nut Brown Ale,American Brown Ale,399,16.0\n1379,0.04,,902,Dead Horse Amber,American Pale Wheat Ale,399,16.0\n1380,0.04,,645,Rocket Bike American Lager,California Common / Steam Beer,399,16.0\n1381,0.04,,644,Johnny's American IPA,American IPA,399,16.0\n1382,0.055,,337,Boneshaker Brown Ale,English Brown Ale,547,24.0\n1383,0.055999999999999994,,336,Iron Mike Pale Ale,American Pale Ale (APA),547,24.0\n1384,0.042,,2236,Monkadelic,American Pale Ale (APA),189,12.0\n1385,0.075,85.0,2159,City of the Sun,American IPA,209,16.0\n1386,0.068,75.0,2157,Booming Rollers,American IPA,209,16.0\n1387,0.052000000000000005,50.0,2156,Oneida,American Pale Ale (APA),209,16.0\n1388,0.067,75.0,2154,Aurora ,American Amber / Red Ale,209,16.0\n1389,0.055,30.0,1495,Lomaland,Saison / Farmhouse Ale,209,16.0\n1390,0.047,46.0,1494,Fortunate Islands,American Pale Wheat Ale,209,16.0\n1391,0.057999999999999996,40.0,1493,Black House,American Stout,209,16.0\n1392,0.065,115.0,1492,Blazing World,American Amber / Red Ale,209,16.0\n1393,0.05,,327,Wapiti Amber Ale,American Amber / Red Ale,549,12.0\n1394,0.054000000000000006,,719,Sweet Georgia Brown,American Brown Ale,514,16.0\n1395,0.087,,718,Rich Man's IIPA,American Double / Imperial IPA,514,16.0\n1396,0.057999999999999996,,717,Monkey Paw Oatmeal Pale Ale,American Pale Ale (APA),514,16.0\n1397,0.055999999999999994,28.0,1907,Montauk Summer Ale,American Blonde Ale,276,12.0\n1398,0.06,49.0,1906,Driftwood Ale,Extra Special / Strong Bitter (ESB),276,12.0\n1399,0.055999999999999994,18.0,1756,When Helles Freezes Over,Munich Helles Lager,326,12.0\n1400,0.049,24.0,1617,Morgan Street Oktoberfest,Märzen / Oktoberfest,326,12.0\n1401,0.047,14.0,1052,Honey Wheat,American Pale Wheat Ale,326,12.0\n1402,0.046,24.0,1051,Black Bear Dark Lager,Schwarzbier,326,12.0\n1403,0.05,35.0,1046,Golden Pilsner,German Pilsener,326,12.0\n1404,0.052000000000000005,21.0,2413,Cali Creamin',Cream Ale,111,12.0\n1405,0.05,,419,Second Wind Pale Ale,American Pale Ale (APA),540,12.0\n1406,0.05,,408,Sunny Haze,Hefeweizen,540,12.0\n1407,0.052000000000000005,21.0,2237,Towhead,American Blonde Ale,188,12.0\n1408,0.07,70.0,2208,Lil' Helper,American IPA,188,12.0\n1409,0.08199999999999999,,1952,Train Wreck,American Amber / Red Ale,260,16.0\n1410,0.085,,768,Full Moon Belgian White Ale,Witbier,507,12.0\n1411,0.07200000000000001,,625,Desert Magic IPA,American IPA,507,12.0\n1412,0.042,,326,Up River Light,Light Lager,507,12.0\n1413,0.085,,132,Full Moon Belgian White Ale (2007),Witbier,507,12.0\n1414,0.055,,131,Dry Heat Hefeweizen (2006),Hefeweizen,507,12.0\n1415,0.05,,1598,Mustang Sixty-Six,American Amber / Red Lager,366,12.0\n1416,0.04,,862,Mustang '33,American Pale Lager,366,12.0\n1417,0.04,,699,Session '33 (2011),American Pale Lager,366,12.0\n1418,0.053,10.0,421,Mustang Golden Ale,American Blonde Ale,366,12.0\n1419,0.053,14.0,420,Washita Wheat,American Pale Wheat Ale,366,12.0\n1420,0.037000000000000005,10.0,2345,Gansett Light,Light Lager,143,16.0\n1421,0.052000000000000005,30.0,2224,Bohemian Pils,American Pilsner,143,16.0\n1422,0.053,30.0,1775,Autocrat Coffee Milk Stout,Milk / Sweet Stout,143,16.0\n1423,0.086,35.0,1291,Narragansett Bohemian Pilsner,German Pilsener,143,16.0\n1424,0.042,24.0,1093,Narragansett Summer Ale,American Pale Wheat Ale,143,12.0\n1425,0.05,22.0,580,Narragansett Cream Ale,Cream Ale,143,16.0\n1426,0.042,24.0,403,Narragansett Summer Ale,American Pale Wheat Ale,143,16.0\n1427,0.07,22.0,316,Narragansett Porter,American Porter,143,16.0\n1428,0.065,32.0,315,Narragansett Bock,Bock,143,16.0\n1429,0.055,15.0,314,Narragansett Fest Lager,Märzen / Oktoberfest,143,16.0\n1430,0.053,,1537,Undun Blonde Ale,American Blonde Ale,387,16.0\n1431,0.07400000000000001,,1536,CuDa Cascadian Dark Ale,American Black Ale,387,16.0\n1432,0.085,86.0,1265,Old Grogham Imperial India Pale Ale,American Double / Imperial IPA,387,16.0\n1433,0.085,86.0,747,Old Grogham Imperial India Pale Ale (2012),American Double / Imperial IPA,387,16.0\n1434,0.07400000000000001,,746,CuDa Cascadian Dark Ale (2012),American Black Ale,387,16.0\n1435,0.053,,654,Undun Blonde Ale (2012),American Blonde Ale,387,16.0\n1436,0.061,11.0,1705,Wick For Brains,Pumpkin Ale,337,12.0\n1437,0.065,65.0,1148,Nebraska India Pale Ale,American IPA,337,12.0\n1438,0.048,10.0,1147,EOS Hefeweizen,Hefeweizen,337,12.0\n1439,0.048,15.0,1146,Brunette Nut Brown Ale,English Brown Ale,337,12.0\n1440,0.057,29.0,1145,Cardinal Pale Ale,American Pale Ale (APA),337,12.0\n1441,0.066,,1758,County Line IPA,American IPA,325,12.0\n1442,0.048,,1757,Trauger Pilsner,German Pilsener,325,12.0\n1443,0.045,40.0,2475,Slow Ride,American IPA,82,12.0\n1444,0.065,70.0,2230,Ranger IPA,American IPA,82,12.0\n1445,0.05,29.0,1987,Shift,American Pale Lager,82,12.0\n1446,0.055999999999999994,21.0,1978,1554 Black Lager,Euro Dark Lager,82,12.0\n1447,0.048,,1975,Blue Paddle,Czech Pilsener,82,12.0\n1448,0.055,,1737,California Route,American Amber / Red Lager,82,12.0\n1449,0.052000000000000005,,1707,Snapshot,American Pale Wheat Ale,82,16.0\n1450,0.048,,1690,Sunshine Wheat Beer,American Pale Wheat Ale,82,12.0\n1451,0.052000000000000005,18.0,1586,Fat Tire Amber Ale,American Amber / Red Ale,82,12.0\n1452,0.05,29.0,952,Shift (1),American Pale Lager,82,12.0\n1453,0.052000000000000005,18.0,748,Fat Tire Amber Ale (2011),American Amber / Red Ale,82,12.0\n1454,0.05,29.0,578,Shift,American Pale Lager,82,16.0\n1455,0.065,70.0,564,Ranger IPA,American IPA,82,16.0\n1456,0.052000000000000005,18.0,563,Fat Tire Amber Ale,American Amber / Red Ale,82,16.0\n1457,0.065,70.0,115,Ranger IPA (Current),American IPA,82,12.0\n1458,0.048,,72,Sunshine Wheat Beer (2009),American Pale Wheat Ale,82,12.0\n1459,0.052000000000000005,18.0,71,Fat Tire Amber Ale (2008),American Amber / Red Ale,82,12.0\n1460,0.034,6.0,1417,Weiss Trash Culture,Berliner Weissbier,410,12.0\n1461,0.062,,885,Sea Hag IPA,American IPA,410,12.0\n1462,0.05,,884,Elm City Pilsner,American Pilsner,410,12.0\n1463,0.05,,757,Atlantic Amber Ale (2004),American Amber / Red Ale,410,12.0\n1464,0.09,,568,668 Neighbor of the Beast12 oz.,Belgian Pale Ale,410,12.0\n1465,0.08800000000000001,85.0,320,Gandhi-Bot Double IPA (12 oz.),American Double / Imperial IPA,410,12.0\n1466,0.09,,43,668 Neighbor of the Beast (16 oz.) (2010),Belgian Pale Ale,410,16.0\n1467,0.08800000000000001,85.0,42,Gandhi-Bot Double IPA (16 oz.) (2010),American Double / Imperial IPA,410,16.0\n1468,0.05,,41,Elm City Lager (2007),American Pilsner,410,12.0\n1469,0.05,,40,Atlantic Amber Ale (2007),American Amber / Red Ale,410,12.0\n1470,0.062,,39,Sea Hag IPA (Current),American IPA,410,12.0\n1471,0.05,,2272,Rebirth Pale Ale,American Pale Ale (APA),174,12.0\n1472,0.068,,1582,Irish Channel Stout,American Stout,174,16.0\n1473,0.08800000000000001,,1114,MechaHopzilla,American Double / Imperial IPA,174,16.0\n1474,0.065,,486,Hopitoulas IPA,American IPA,174,16.0\n1475,0.039,,485,NOLA Brown Ale,English Dark Mild Ale,174,12.0\n1476,0.049,,484,NOLA Blonde Ale,American Blonde Ale,174,12.0\n1477,0.055999999999999994,20.0,2043,Skylight,Dunkelweizen,241,12.0\n1478,0.055999999999999994,30.0,2042,Kadigan,American Blonde Ale,241,12.0\n1479,0.052000000000000005,50.0,2041,Dammit Jim!,American Amber / Red Ale,241,12.0\n1480,0.054000000000000006,,646,Nut Brown Ale,English Brown Ale,518,12.0\n1481,0.046,,165,White Ale,Witbier,518,12.0\n1482,0.042,35.0,2050,Cream Ale,Cream Ale,238,12.0\n1483,0.07200000000000001,,915,Green Head IPA,American IPA,495,12.0\n1484,0.054000000000000006,,914,Plum Island Belgian White,Witbier,495,12.0\n1485,0.055,,913,Newburyport Pale Ale,American Pale Ale (APA),495,12.0\n1486,0.055,,1811,Marblehead,American Amber / Red Ale,305,16.0\n1487,0.051,31.0,1622,Jam Session,American Pale Ale (APA),359,16.0\n1488,0.07200000000000001,80.0,1621,Hop Drop 'N Roll IPA,American IPA,359,16.0\n1489,0.06,,1307,Paleo IPA,English India Pale Ale (IPA),431,12.0\n1490,0.061,,1306,Buck Snort Stout,American Stout,431,12.0\n1491,0.055,,1305,Station 33 Firehouse Red,Irish Red Ale,431,12.0\n1492,0.045,,1304,Slimy Pebble Pils,German Pilsener,431,12.0\n1493,0.045,50.0,2692,Get Together,American IPA,0,16.0\n1494,0.049,26.0,2691,Maggie's Leap,Milk / Sweet Stout,0,16.0\n1495,0.048,19.0,2690,Wall's End,English Brown Ale,0,16.0\n1496,0.06,38.0,2689,Pumpion,Pumpkin Ale,0,16.0\n1497,0.06,25.0,2688,Stronghold,American Porter,0,16.0\n1498,0.055999999999999994,47.0,2687,Parapet ESB,Extra Special / Strong Bitter (ESB),0,16.0\n1499,0.069,,1854,Blue Boots IPA,American IPA,293,16.0\n1500,0.063,,1227,Hoppy Bitch IPA,American IPA,450,16.0\n1501,0.063,42.0,1226,Three Skulls Ale Pale Ale,American Pale Ale (APA),450,16.0\n1502,0.045,,541,Walter's Premium Pilsener Beer,German Pilsener,529,12.0\n1503,0.045,,109,Floppin' Crappie,American Pale Wheat Ale,529,12.0\n1504,0.043,,1917,Left of the Dial IPA,American IPA,271,12.0\n1505,0.04,,1190,Notch Session Pils,Czech Pilsener,271,12.0\n1506,0.055,,1264,O'Fallon Pumpkin Beer,Pumpkin Ale,442,12.0\n1507,0.061,66.0,1258,5 Day IPA,American IPA,442,12.0\n1508,0.051,7.0,128,O'Fallon Wheach,Fruit / Vegetable Beer,442,12.0\n1509,0.067,70.0,2331,Watershed IPA,American IPA,150,12.0\n1510,0.054000000000000006,24.0,1669,Oakshire Amber Ale,American Amber / Red Ale,150,12.0\n1511,0.057999999999999996,27.0,1668,Overcast Espresso Stout,American Stout,150,12.0\n1512,0.067,70.0,999,Watershed IPA (2013),American IPA,150,12.0\n1513,0.08199999999999999,25.0,2247,Lake Monster,Baltic Porter,184,16.0\n1514,0.049,27.0,2071,London Homesick Ale,English Bitter,184,12.0\n1515,0.048,35.0,2070,Luchesa Lager,Keller Bier / Zwickel Bier,184,12.0\n1516,0.048,35.0,2069,Slow Ride,American Pale Ale (APA),184,12.0\n1517,0.047,,2192,Occidental Hefeweizen,American Pale Wheat Ale,200,16.0\n1518,0.051,,1130,Occidental Dunkel,Dunkelweizen,200,16.0\n1519,0.05,,1129,Occidental Altbier,Altbier,200,16.0\n1520,0.045,,1081,Occidental Kölsch,Kölsch,200,16.0\n1521,0.092,72.0,2335,Perpetual Darkness,Belgian Strong Dark Ale,148,12.0\n1522,0.087,29.0,2334,Clan Warrior,Scotch Ale / Wee Heavy,148,12.0\n1523,0.054000000000000006,36.0,2333,Psycho Penguin Vanilla Porter,American Porter,148,12.0\n1524,0.047,,1721,Heliocentric Hefeweizen,Hefeweizen,148,12.0\n1525,0.051,,1720,Ghose Drifter Pale Ale,American Pale Ale (APA),148,12.0\n1526,0.051,,1431,Ghost Rider Pale Ale (2013),American Pale Ale (APA),148,12.0\n1527,0.047,,1430,Helios Hefeweizen (2013),Hefeweizen,148,12.0\n1528,0.095,19.0,1059,The Hole in Hadrian's Wall,Scottish Ale,471,16.0\n1529,0.065,26.0,1058,33 Select Brown Ale,American Brown Ale,471,16.0\n1530,0.06,29.0,603,Midwest Charm Farmhouse Ale,Saison / Farmhouse Ale,471,16.0\n1531,0.05,45.0,602,Boji Blue Pale Ale,American Pale Ale (APA),471,16.0\n1532,0.057,26.0,601,Winter Games Select #32 Stout,American Stout,471,16.0\n1533,0.05,23.0,600,Boji Beach Golden Rye Ale,Rye Beer,471,16.0\n1534,0.06,,1828,Hopsmith Pale Lager,American Pale Lager,301,16.0\n1535,0.065,65.0,1487,Falling Down Brown Ale,American Brown Ale,301,16.0\n1536,0.068,,1486,Resolution Rye Stout,American Stout,301,16.0\n1537,0.055,,1485,Plowshare Porter,American Porter,301,16.0\n1538,0.046,20.0,1394,Old Forge Pumpkin Ale,Pumpkin Ale,301,16.0\n1539,0.045,,1381,Endless Sun Ale,American Pale Wheat Ale,301,16.0\n1540,0.065,,900,Celestial Blonde Ale,American Blonde Ale,301,16.0\n1541,0.075,,891,Overbite IPA,American IPA,301,16.0\n1542,0.055,,509,T-Rail Pale Ale,American Pale Ale (APA),301,16.0\n1543,0.048,,508,Endless Summer Ale (2011),American Pale Wheat Ale,301,16.0\n1544,0.053,,1530,Clem's Gold,American Pale Lager,390,16.0\n1545,0.055,,1529,Lizzy's Red,American Amber / Red Lager,390,16.0\n1546,0.067,,1528,Orlison India Pale Lager,American Pale Lager,390,16.0\n1547,0.042,,1527,Brünette,Euro Dark Lager,390,16.0\n1548,0.040999999999999995,,1526,Havanüther,Light Lager,390,16.0\n1549,0.065,,2113,Lyric Ale,Saison / Farmhouse Ale,216,12.0\n1550,0.053,,2112,Atalanta,Saison / Farmhouse Ale,216,12.0\n1551,0.049,35.0,2302,Pinner Throwback IPA,American IPA,166,12.0\n1552,0.052000000000000005,,1883,Centennial State Pale Ale,American Pale Ale (APA),166,19.2\n1553,0.08,,1859,Old Chub NITRO,Scotch Ale / Wee Heavy,166,16.0\n1554,,,1796,The CROWLER™,,166,32.0\n1555,,,1790,CAN'D AID Foundation,,166,12.0\n1556,,,1752,Icey.P.A.,American IPA,166,16.0\n1557,0.05,,1751,One Nut Brown,English Brown Ale,166,12.0\n1558,,,1750,Birth IPA,American IPA,166,12.0\n1559,0.065,65.0,1444,Dale's Pale Ale,American Pale Ale (APA),166,12.0\n1560,0.065,65.0,1252,Dale's Pale Ale,American Pale Ale (APA),166,12.0\n1561,0.053,35.0,1167,Mama's Little Yella Pils,Czech Pilsener,166,19.2\n1562,0.085,,993,oSKAr the G'Rauch,American IPA,166,19.2\n1563,0.085,,992,oSKAr the G'Rauch,American IPA,166,16.0\n1564,0.065,65.0,955,Dale's Pale Ale,American Pale Ale (APA),166,19.2\n1565,0.07,,933,The Deuce,American Brown Ale,166,16.0\n1566,0.065,65.0,892,Dale's Pale Ale (10 Year Anniversary),American Pale Ale (APA),166,12.0\n1567,0.065,65.0,828,Dale's Pale Ale (2012),American Pale Ale (APA),166,12.0\n1568,0.087,85.0,806,Gordon Imperial Red (2010),American Double / Imperial IPA,166,12.0\n1569,0.065,65.0,755,Dale's Pale Ale (2011),American Pale Ale (APA),166,12.0\n1570,0.065,65.0,754,Dale's Pale Ale (2010),American Pale Ale (APA),166,12.0\n1571,0.087,85.0,726,G'KNIGHT (16 oz.),American Double / Imperial IPA,166,16.0\n1572,0.09,,720,15th Anniversary Abbey Ale (2012),Belgian Dark Ale,166,16.0\n1573,0.08,,661,Chaka,Belgian Strong Pale Ale,166,16.0\n1574,0.08,70.0,585,HGH (Home Grown Hops): Part Duh,American Strong Ale,166,12.0\n1575,0.08,,565,Deviant Dale's IPA,American Double / Imperial IPA,166,16.0\n1576,0.09,60.0,391,One Hit Wonder,American Double / Imperial IPA,166,12.0\n1577,0.087,85.0,388,G'KNIGHT (12 oz.),American Double / Imperial IPA,166,12.0\n1578,0.099,98.0,8,Ten Fidy Imperial Stout,Russian Imperial Stout,166,12.0\n1579,0.053,35.0,7,Mama's Little Yella Pils,Czech Pilsener,166,12.0\n1580,0.099,100.0,6,GUBNA Imperial IPA,American Double / Imperial IPA,166,12.0\n1581,0.08,35.0,5,Old Chub,Scottish Ale,166,12.0\n1582,0.087,85.0,4,Gordon Ale (2009),American Double / Imperial IPA,166,12.0\n1583,0.065,65.0,1,Dale's Pale Ale,American Pale Ale (APA),166,12.0\n1584,0.092,85.0,805,Gordon (2005),American Double / Imperial IPA,503,12.0\n1585,0.095,98.0,804,Ten Fidy Imperial Stout (2008),Russian Imperial Stout,503,12.0\n1586,0.099,98.0,803,Ten Fidy Imperial Stout (2007),Russian Imperial Stout,503,12.0\n1587,0.08,35.0,787,Old Chub (2008),Scottish Ale,503,12.0\n1588,0.08,35.0,786,Old Chub (2004),Scottish Ale,503,12.0\n1589,0.08,35.0,785,Old Chub (2003),Scottish Ale,503,12.0\n1590,0.065,65.0,745,Dale's Pale Ale (2008),American Pale Ale (APA),503,12.0\n1591,0.065,65.0,744,Dale's Pale Ale (2006),American Pale Ale (APA),503,12.0\n1592,0.065,65.0,743,Dale's Pale Ale (2004),American Pale Ale (APA),503,12.0\n1593,0.065,65.0,742,Dale's Pale Ale (2003),American Pale Ale (APA),503,12.0\n1594,0.065,65.0,741,Dale's Pale Ale (2002),American Pale Ale (APA),503,12.0\n1595,0.052000000000000005,,734,Leroy (2005),American Brown Ale,503,12.0\n1596,0.087,60.0,733,Gordon Beer (2006),American Double / Imperial IPA,503,12.0\n1597,0.087,85.0,1533,G'KNIGHT,American Double / Imperial IPA,389,12.0\n1598,0.099,98.0,1532,Ten Fidy,Russian Imperial Stout,389,12.0\n1599,0.08,85.0,1328,Deviant Dale's IPA,American Double / Imperial IPA,389,16.0\n1600,0.08,35.0,1175,Old Chub,Scottish Ale,389,12.0\n1601,0.065,65.0,1166,Dale's Pale Ale,American Pale Ale (APA),389,19.2\n1602,0.065,65.0,1065,Dale's Pale Ale,American Pale Ale (APA),389,12.0\n1603,0.055,45.0,1908,Fresh Slice White IPA,American White IPA,275,12.0\n1604,0.055,55.0,1946,Overgrown American Pale Ale,American Pale Ale (APA),261,12.0\n1605,0.04,39.0,1961,Ozark American Pale Ale,American Pale Ale (APA),259,12.0\n1606,0.048,,1684,Hula Hoppie Session IPA,American IPA,341,12.0\n1607,0.053,,927,Dirty Hippie Dark Wheat,American Dark Wheat Ale,341,12.0\n1608,0.052000000000000005,23.0,1268,Rustic Red,Irish Red Ale,441,16.0\n1609,0.053,48.0,697,Stimulator Pale Ale,American Pale Ale (APA),441,16.0\n1610,0.045,22.0,696,Old Town Ale,Kölsch,441,16.0\n1611,0.044000000000000004,28.0,695,Car 21,English Bitter,441,16.0\n1612,0.05,24.0,694,Cache La Porter,American Porter,441,16.0\n1613,0.042,35.0,1805,Rodeo Rye Pale Ale,American Pale Ale (APA),307,12.0\n1614,0.062,65.0,1048,Outlaw IPA,American IPA,307,12.0\n1615,0.044000000000000004,,1043,North Fork Lager,American Pale Lager,307,12.0\n1616,0.048,35.0,890,Payette Pale Ale,American Pale Ale (APA),307,12.0\n1617,0.055,25.0,775,Mutton Buster,American Brown Ale,307,12.0\n1618,0.05,,1087,Side Kick Kölsch,Kölsch,468,12.0\n1619,0.046,,1931,Fresh Cut Pilsner,American Pilsner,266,12.0\n1620,0.05,61.0,1930,Summer Session Ale,American Pale Wheat Ale,266,12.0\n1621,0.04,12.0,2238,Lobo Lito,Light Lager,187,12.0\n1622,0.05,17.0,2144,Robert Earl Keen Honey Pils,American Pilsner,187,12.0\n1623,0.065,77.0,2175,Mound Builder IPA,American IPA,205,12.0\n1624,0.062,62.0,2168,Amazon Princess IPA,American IPA,205,12.0\n1625,0.042,,1956,Farmer's Daughter Wheat,American Pale Wheat Ale,205,12.0\n1626,0.045,,1794,People's Pilsner,German Pilsener,205,12.0\n1627,0.055,10.0,2633,Hotbox Brown,American Brown Ale,13,12.0\n1628,0.048,15.0,2632,Gold,American Blonde Ale,13,12.0\n1629,0.057999999999999996,,2631,Black,American Black Ale,13,12.0\n1630,0.065,65.0,2630,98 Problems (Cuz A Hop Ain't One),American IPA,13,12.0\n1631,0.05,40.0,2629,Veteran’s Pale Ale (VPA),American Pale Ale (APA),13,12.0\n1632,0.05,35.0,2628,Grapefruit IPA,American IPA,13,12.0\n1633,0.051,,1062,Pete's ESP Lager (1998),American Pale Lager,470,12.0\n1634,0.047,,1061,Pete's Wicked Summer Brew (1995),American Pale Wheat Ale,470,12.0\n1635,0.049,,1060,Pete's Wicked Bohemian Pilsner (1997),Czech Pilsener,470,12.0\n1636,,,1056,Pete's Wicked Pale Ale (1997),American Pale Ale (APA),470,12.0\n1637,0.047,,1055,Pete's Wicked Summer Brew (2002),American Pale Wheat Ale,470,12.0\n1638,0.047,,1054,Pete's Wicked Summer Brew (1997),American Pale Wheat Ale,470,12.0\n1639,0.047,,1053,Pete's Wicked Summer Brew (1996),American Pale Wheat Ale,470,12.0\n1640,0.040999999999999995,12.0,2635,Sparkle,American Pale Lager,11,16.0\n1641,0.059000000000000004,25.0,1404,North 45 Amber Ale,American Amber / Red Ale,11,16.0\n1642,0.069,20.0,1403,Horny Monk,Dubbel,11,16.0\n1643,0.067,74.0,1402,Mind's Eye PA,American IPA,11,16.0\n1644,0.061,60.0,2312,Camelback,American IPA,157,12.0\n1645,0.055999999999999994,,1636,Local 5 Pale Ale,American Pale Ale (APA),355,16.0\n1646,0.073,,1518,Devils Head Red Ale,American Amber / Red Ale,355,16.0\n1647,0.07,75.0,1384,Elephant Rock IPA,American IPA,355,12.0\n1648,0.05,,1797,Black Bay Milk Stout,Milk / Sweet Stout,310,12.0\n1649,0.05,,1437,Atom Splitter Pale Ale,American Pale Ale (APA),310,12.0\n1650,0.06,20.0,1791,Hot Date Ale,Chile Beer,314,16.0\n1651,0.07,,1540,Masked Bandit IPA,American Black Ale,314,16.0\n1652,0.06,24.0,1491,Sweet Potato Ale,Fruit / Vegetable Beer,314,16.0\n1653,0.045,18.0,1335,Float Trip Ale,American Blonde Ale,314,16.0\n1654,0.055,25.0,847,Old Tom Porter,American Porter,314,16.0\n1655,0.045,18.0,846,Black Walnut Wheat,American Dark Wheat Ale,314,16.0\n1656,0.055,20.0,521,McKinney Eddy Amber Ale,American Amber / Red Ale,314,16.0\n1657,0.07,70.0,479,Missouri Mule India Pale Ale,American IPA,314,16.0\n1658,0.065,,2559,Blood of the Unicorn,American Amber / Red Ale,52,16.0\n1659,0.069,51.0,1760,GreyBeard™ IPA,American IPA,324,12.0\n1660,0.057,31.0,1759,Pisgah Pale Ale,American Pale Ale (APA),324,12.0\n1661,0.045,,1589,PONTO S.I.P.A.,American IPA,370,16.0\n1662,0.049,,1457,Chronic Ale,American Amber / Red Ale,370,16.0\n1663,0.068,,1191,Swami's India Pale Ale,American IPA,370,16.0\n1664,0.05,,2336,New Cleveland Palesner,American Pilsner,147,12.0\n1665,0.054000000000000006,45.0,2553,Mazzie,American Pale Ale (APA),55,12.0\n1666,0.099,,1909,Big Chuck Barleywine,American Barleywine,274,12.0\n1667,,,335,Ponderosa IPA,American IPA,548,12.0\n1668,,,64,Liquid Amber Ale,American Amber / Red Ale,548,12.0\n1669,0.059000000000000004,14.0,2360,Morning Wood Wheat (Current),American Pale Wheat Ale,135,12.0\n1670,0.069,17.0,1463,Hideout Helles,Munich Helles Lager,135,12.0\n1671,0.06,15.0,1462,Dead Eye Dunkel,Munich Dunkel Lager,135,12.0\n1672,0.057999999999999996,21.0,1461,Peacemaker Pilsner,Czech Pilsener,135,12.0\n1673,0.057,68.0,711,Over the Rail Pale Ale,American Pale Ale (APA),135,12.0\n1674,0.057999999999999996,21.0,188,Pallavicini Pilsner (2009),Czech Pilsener,135,12.0\n1675,0.059000000000000004,14.0,130,Morning Wood Wheat (Current),American Pale Wheat Ale,135,12.0\n1676,0.052000000000000005,18.0,399,Pyramid Hefeweizen (2011),Hefeweizen,544,12.0\n1677,0.052000000000000005,18.0,82,Haywire Hefeweizen (2010),Hefeweizen,544,16.0\n1678,0.045,35.0,2031,Golden Fleece,Belgian Pale Ale,246,12.0\n1679,0.055,30.0,2030,Smoking Mirror,American Porter,246,12.0\n1680,0.046,,2269,Rahr's Blonde,Munich Helles Lager,176,12.0\n1681,0.057999999999999996,60.0,2229,Pride of Texas Pale Ale,American Pale Ale (APA),176,12.0\n1682,0.044000000000000004,5.0,2370,18th Anniversary Gose,Gose,128,12.0\n1683,0.046,25.0,2211,White (2015),Witbier,128,12.0\n1684,0.099,85.0,1861,BLAKKR,American Black Ale,128,12.0\n1685,0.051,21.0,1718,Firemans #4 Blonde Ale (2013),American Blonde Ale,128,12.0\n1686,0.059000000000000004,,1290,The Sword Iron Swan Ale,English Pale Ale,128,12.0\n1687,0.053,52.0,1091,Hans' Pils (2015),German Pilsener,128,12.0\n1688,0.06,50.0,1086,Four Squared (2015),American Blonde Ale,128,12.0\n1689,0.051,21.0,830,Firemans #4 Blonde Ale (2015),American Blonde Ale,128,12.0\n1690,0.07200000000000001,55.0,1021,Watership Brown Ale,American Brown Ale,475,12.0\n1691,0.062,55.0,938,Gangway IPA,American IPA,475,12.0\n1692,0.049,,715,Long Day Lager,Czech Pilsener,475,12.0\n1693,0.051,17.0,2516,Farmer's Daughter Blonde,American Blonde Ale,68,16.0\n1694,0.055,45.0,2515,Pump House IPA,American IPA,68,16.0\n1695,0.07,,2514,Suicide Blonde IPA,Belgian IPA,68,16.0\n1696,0.047,25.0,2513,Vanilla Porter,American Porter,68,16.0\n1697,0.057999999999999996,18.0,2512,Honey Rye,Rye Beer,68,16.0\n1698,0.055,,1467,Happy Cider,Cider,403,16.0\n1699,0.065,44.0,945,Long Hammer IPA,American IPA,487,16.0\n1700,0.065,44.0,583,Long Hammer IPA,American IPA,487,12.0\n1701,0.057999999999999996,27.0,339,Copper Hook (2011),American Amber / Red Ale,487,12.0\n1702,0.08,,1375,Nectar of the Hops,Mead,421,16.0\n1703,0.08,,1374,Sunshine Nectar,Mead,421,16.0\n1704,0.08,,1373,Black Raspberry Nectar,Mead,421,16.0\n1705,0.05,16.0,2087,Blood Orange Wit,Witbier,225,16.0\n1706,0.05,40.0,2414,Consilium,American Pale Ale (APA),110,12.0\n1707,0.09,60.0,1581,Hammer & Sickle,Russian Imperial Stout,110,12.0\n1708,0.07,100.0,1176,Redacted Rye IPA,American IPA,110,16.0\n1709,0.099,100.0,1006,Elevation Triple India Pale Ale,American Double / Imperial IPA,110,12.0\n1710,0.05,25.0,1005,5:00 O'Clock Afternoon Ale,American Blonde Ale,110,16.0\n1711,0.07,100.0,636,Ryeteous Rye IPA (2012),American IPA,110,16.0\n1712,0.064,,1538,Stout Ol' Friend,American Stout,386,16.0\n1713,0.064,,1075,Stout Ol' Friend (2012),American Stout,386,16.0\n1714,,,710,Rye Porter,American Porter,386,16.0\n1715,0.05,,709,Miner's Gold,American Blonde Ale,386,16.0\n1716,0.046,,708,Vienna Lager,Vienna Lager,386,16.0\n1717,0.055999999999999994,,706,Jessie's Garage,American Pale Ale (APA),386,16.0\n1718,0.062,,220,Colorado Red Ale,American Amber / Red Ale,386,12.0\n1719,,,219,Miner's Gold,American Blonde Ale,386,12.0\n1720,0.055,40.0,2576,Fist City,American Pale Ale (APA),44,12.0\n1721,0.068,,1133,A Little Crazy,Belgian Pale Ale,44,12.0\n1722,0.057999999999999996,15.0,609,Rosa Hibiscus Ale,Herbed / Spiced Beer,44,12.0\n1723,0.061,31.0,418,Fistmas Ale,Herbed / Spiced Beer,44,12.0\n1724,0.057,25.0,417,Oktoberfest Revolution,Märzen / Oktoberfest,44,12.0\n1725,0.068,28.0,416,Eugene Porter,American Porter,44,12.0\n1726,0.065,70.0,415,Anti-Hero IPA,American IPA,44,12.0\n1727,0.05,14.0,414,Bottom Up Belgian Wit,Witbier,44,12.0\n1728,0.057,42.0,2452,Hustle,American Amber / Red Ale,93,12.0\n1729,0.055,42.0,2451,Pure Fury,American Pale Ale (APA),93,12.0\n1730,0.06,60.0,2132,Dad,American Amber / Red Ale,93,12.0\n1731,0.057999999999999996,35.0,1993,Panther,American Porter,93,12.0\n1732,0.052000000000000005,21.0,1992,Franz,Märzen / Oktoberfest,93,12.0\n1733,0.043,45.0,1935,Zen,American Pale Ale (APA),93,12.0\n1734,0.07200000000000001,75.0,1852,Truth,American IPA,93,12.0\n1735,0.048,25.0,1851,Cougar,American Blonde Ale,93,12.0\n1736,0.038,,2307,Smooth Operator,Cream Ale,162,16.0\n1737,0.035,,2580,Gose,Gose,42,16.0\n1738,0.043,,1807,Maine Island Trail Ale,American Pale Ale (APA),42,16.0\n1739,0.05,,1180,River North White Ale,Witbier,459,16.0\n1740,0.05,,1179,River North Ale,American Amber / Red Ale,459,16.0\n1741,0.05,55.0,1771,Lil SIPA,American IPA,321,16.0\n1742,0.055,60.0,1654,Hop Bomber Rye Pale Ale,American Pale Ale (APA),321,16.0\n1743,0.05,100.0,2579,Jah Mon,American IPA,43,12.0\n1744,0.062,,2373,Oktoberfest,Märzen / Oktoberfest,43,12.0\n1745,0.08,,2049,Headless Wylie,Pumpkin Ale,43,12.0\n1746,0.05,,2048,Dayman IPA,American IPA,43,12.0\n1747,0.071,,1880,All Aboard! Anniversary Stout,Oatmeal Stout,43,12.0\n1748,0.062,,1879,Hop Lace,American White IPA,43,12.0\n1749,0.048,,1878,OH-PA Session Pale Ale,American Pale Ale (APA),43,12.0\n1750,0.08,,1877,Patrick's Poison,American Amber / Red Ale,43,12.0\n1751,0.081,,1764,Rudolph's Red,American Amber / Red Ale,43,12.0\n1752,0.053,,1103,Babbling Blonde,American Blonde Ale,43,12.0\n1753,0.051,,1102,Maxwell's Scottish Ale,Scottish Ale,43,12.0\n1754,0.061,,1101,Grateful White,Witbier,43,12.0\n1755,0.055,,1100,RT Lager,American Amber / Red Lager,43,12.0\n1756,0.062,,1099,Old Wylie's IPA,American IPA,43,12.0\n1757,0.048,,1098,Hala Kahiki Pineapple Beer,Fruit / Vegetable Beer,43,12.0\n1758,0.045,,1330,Track 1 Amber Lager,American Amber / Red Lager,427,16.0\n1759,0.053,,2074,Pine Knob Pilsner,Czech Pilsener,229,16.0\n1760,,,1724,Cal and Co. Black Cherry Porter,American Porter,229,16.0\n1761,0.055,,1280,Lazy Daze Lager,American Adjunct Lager,229,16.0\n1762,0.059000000000000004,,899,Rochester Red Ale,American Amber / Red Ale,229,16.0\n1763,0.05,,363,Milkshake Stout,Milk / Sweet Stout,229,16.0\n1764,0.07,,158,Cornerstone IPA,American IPA,229,16.0\n1765,0.055,,97,Lazy Daze Lager,American Adjunct Lager,229,12.0\n1766,0.051,,1860,Rogue American Amber Ale,American Amber / Red Ale,289,16.0\n1767,0.076,78.0,1577,12th Round,American Strong Ale,376,16.0\n1768,0.07,80.0,1576,RoughTail IPA,American IPA,376,16.0\n1769,0.08,,1575,Polar Night Stout,American Stout,376,16.0\n1770,0.071,36.0,2304,Sundown,Saison / Farmhouse Ale,164,12.0\n1771,0.099,,2249,Sanctified,Belgian Strong Pale Ale,164,12.0\n1772,0.051,,2053,Fear of a Brett Planet,American Pale Ale (APA),164,12.0\n1773,0.055999999999999994,40.0,1842,Original Slacker Ale,English Brown Ale,164,12.0\n1774,0.07200000000000001,,1841,Alpha Blackback,American Black Ale,164,12.0\n1775,0.063,,1782,Kiss Off IPA,American IPA,164,12.0\n1776,0.045,28.0,1552,Dog Days Summer Ale,Kölsch,164,12.0\n1777,0.055999999999999994,35.0,1479,1881 California Red,American Amber / Red Ale,397,12.0\n1778,0.073,55.0,1478,CAPT Black IPA,American Black Ale,397,12.0\n1779,0.048,42.0,1370,Ruhstaller's Gilt Edge Lager Beer,American Amber / Red Lager,397,12.0\n1780,0.073,55.0,883,CAPT Black IPA,American Black Ale,397,16.0\n1781,0.055999999999999994,35.0,882,1881 California Red Ale,American Amber / Red Ale,397,16.0\n1782,0.05,15.0,1868,Saint Archer White Ale,Witbier,288,12.0\n1783,0.068,66.0,1867,Saint Archer IPA,American IPA,288,12.0\n1784,0.052000000000000005,40.0,1865,Saint Archer Pale Ale,American Pale Ale (APA),288,12.0\n1785,0.048,22.0,1864,Saint Archer Blonde,Kölsch,288,12.0\n1786,0.069,20.0,2599,Sex Panther,American Porter,30,12.0\n1787,0.095,25.0,2073,Winter Warmer (Vault Series),Winter Warmer,30,16.0\n1788,0.091,99.0,2063,Count Hopula (Vault Series),American Double / Imperial IPA,30,16.0\n1789,0.055,,1995,Oktoberfest,Märzen / Oktoberfest,30,12.0\n1790,0.05,15.0,1934,SunSpot Golden Ale,American Blonde Ale,30,12.0\n1791,0.06,,1329,I.W.A. (2011),American Pale Wheat Ale,30,12.0\n1792,0.065,,1299,Supermonk I.P.A.,Belgian IPA,30,12.0\n1793,0.055,20.0,1073,Epicenter Amber Ale,American Amber / Red Ale,30,12.0\n1794,0.05,15.0,1072,SanTan HefeWeizen,Hefeweizen,30,12.0\n1795,0.07,85.0,1071,Hop Shock IPA,American IPA,30,12.0\n1796,0.069,20.0,852,Sex Panther (2014),American Porter,30,12.0\n1797,0.055,45.0,850,Devil’s Ale,American Pale Ale (APA),30,12.0\n1798,0.081,,839,Rail Slide Imperial Spiced Ale,Herbed / Spiced Beer,30,12.0\n1799,0.05,20.0,777,Mr. Pineapple,Fruit / Vegetable Beer,30,12.0\n1800,0.055,45.0,764,American Idiot Ale (2012),American Pale Ale (APA),30,12.0\n1801,0.07,85.0,317,Hop Shock IPA (2010),American IPA,30,12.0\n1802,0.05,15.0,286,SanTan HefeWeizen (2010),Hefeweizen,30,12.0\n1803,0.055,45.0,285,Devil’s Ale (2010),American Pale Ale (APA),30,12.0\n1804,0.055,20.0,124,Epicenter Amber Ale (2010),American Amber / Red Ale,30,12.0\n1805,0.057999999999999996,20.0,1392,Sanitas Saison Ale,Saison / Farmhouse Ale,419,12.0\n1806,0.068,65.0,1391,Sanitas Black IPA,American Black Ale,419,12.0\n1807,0.08900000000000001,88.0,2002,Giant DIPA,American Double / Imperial IPA,252,16.0\n1808,0.054000000000000006,,1683,Dread Brown Ale,American Brown Ale,252,12.0\n1809,0.07,,1362,Casinos IPA,English India Pale Ale (IPA),252,16.0\n1810,0.055,30.0,1519,Saison 88,Saison / Farmhouse Ale,392,12.0\n1811,0.071,95.0,967,Black IPA,American Black Ale,392,12.0\n1812,0.045,,599,Santa Fe Irish Red Ale,Irish Red Ale,392,12.0\n1813,,,307,Santa Fe Oktoberfest,Märzen / Oktoberfest,392,12.0\n1814,0.08,,305,Imperial Java Stout,Russian Imperial Stout,392,12.0\n1815,0.055,,304,Freestyle Pilsner,German Pilsener,392,12.0\n1816,0.066,,217,Happy Camper IPA,American IPA,392,12.0\n1817,0.05,11.0,1477,Oval Beach Blonde Ale,American Blonde Ale,398,16.0\n1818,0.065,,1503,Oak Aged Cider,Cider,394,12.0\n1819,0.065,,1466,Ginger Cider,Cider,394,12.0\n1820,0.065,,1245,Schilling Hard Cider,Cider,394,12.0\n1821,0.05,45.0,1324,Schlafly Yakima Wheat Ale,American Pale Wheat Ale,428,12.0\n1822,0.05,,1323,Schlafly Black Lager,Schwarzbier,428,12.0\n1823,0.045,30.0,1078,Schlafly IPA,American IPA,428,12.0\n1824,0.05,30.0,1077,Schlafly American Brown Ale,American Brown Ale,428,12.0\n1825,0.040999999999999995,16.0,588,Schlafly Hefeweizen,Hefeweizen,428,12.0\n1826,0.045,17.0,53,Schlafly Summer Lager,Munich Helles Lager,428,12.0\n1827,0.047,,815,Sea Dog Wild Blueberry Wheat Ale,Fruit / Vegetable Beer,502,12.0\n1828,0.07400000000000001,60.0,1302,Blur India Pale Ale,American IPA,432,12.0\n1829,0.065,,1416,Dry Cider,Cider,411,16.0\n1830,0.065,,1415,Dry Hard Cider,Cider,411,16.0\n1831,0.07,105.0,918,Frankenlou's IPA,American IPA,494,16.0\n1832,0.07,55.0,917,Becky's Black Cat Porter,American Porter,494,16.0\n1833,0.077,40.0,2250,Seventh Son of a Seventh Son,American Strong Ale,183,16.0\n1834,0.053,20.0,1768,Stone Fort Brown Ale,English Brown Ale,183,16.0\n1835,0.077,40.0,1767,Seventh Son Hopped Red Ale,American Amber / Red Ale,183,16.0\n1836,0.06,53.0,1766,Humulus Nimbus Super Pale Ale,American Pale Ale (APA),183,16.0\n1837,0.07,68.0,1765,Golden Ratio IPA,American IPA,183,16.0\n1838,0.068,,2368,Black Hop IPA,American Black Ale,130,12.0\n1839,0.05,,738,Archer's Ale (2004),English Pale Ale,511,12.0\n1840,0.069,65.0,1539,Monkey Fist IPA,American IPA,385,12.0\n1841,0.051,,975,Shipyard Summer Ale,American Pale Wheat Ale,385,12.0\n1842,0.047,,814,Pumpkinhead Ale,Pumpkin Ale,385,12.0\n1843,0.051,,727,Shipyard Export,American Blonde Ale,385,12.0\n1844,0.052000000000000005,,2474,Nooner,German Pilsener,83,12.0\n1845,0.07200000000000001,65.0,2239,Torpedo,American IPA,83,12.0\n1846,0.06,,1919,Yonder Bock,Maibock / Helles Bock,83,12.0\n1847,0.06,,1918,CANfusion Rye Bock,Rye Beer,83,12.0\n1848,0.055999999999999994,37.0,1905,Sierra Nevada Pale Ale,American Pale Ale (APA),83,16.0\n1849,0.048,26.0,1338,Old Chico Crystal Wheat,American Pale Wheat Ale,83,12.0\n1850,0.05,28.0,1295,Summerfest,Czech Pilsener,83,12.0\n1851,0.07200000000000001,65.0,426,Torpedo,American IPA,83,16.0\n1852,0.055999999999999994,37.0,400,Sierra Nevada Pale Ale,American Pale Ale (APA),83,12.0\n1853,0.069,,2353,Sietsema Red Label,Cider,137,16.0\n1854,0.042,,212,Bear Ass Brown,American Brown Ale,551,12.0\n1855,0.06,,161,Red Mountain Ale,American Amber / Red Ale,551,12.0\n1856,0.068,,160,Ice Pick Ale,American IPA,551,12.0\n1857,0.1,52.0,2574,4Beans,Baltic Porter,46,12.0\n1858,0.042,16.0,2479,Jammer,Gose,46,12.0\n1859,0.08,,2443,Abigale,Belgian Pale Ale,46,12.0\n1860,0.032,7.0,2266,Rad,Fruit / Vegetable Beer,46,16.0\n1861,0.065,62.0,2090,Bengali,American IPA,46,24.0\n1862,0.047,50.0,1962,Sensi Harvest,American Pale Ale (APA),46,12.0\n1863,0.099,111.0,1696,Hi-Res,American Double / Imperial IPA,46,12.0\n1864,0.07,70.0,1608,Global Warmer,American Strong Ale,46,12.0\n1865,0.067,74.0,1591,Autumnation (2013),American IPA,46,16.0\n1866,0.054000000000000006,42.0,1388,The Crisp,German Pilsener,46,16.0\n1867,0.052000000000000005,34.0,1387,Sweet Action,Cream Ale,46,16.0\n1868,0.063,57.0,1386,Righteous Ale,Rye Beer,46,16.0\n1869,0.064,62.0,1385,Bengali Tiger,American IPA,46,16.0\n1870,0.099,85.0,1020,3Beans,Baltic Porter,46,12.0\n1871,0.059000000000000004,47.0,778,Brownstone,American Brown Ale,46,16.0\n1872,0.052000000000000005,11.0,630,Apollo,American Pale Wheat Ale,46,16.0\n1873,0.049,35.0,629,Harbinger,Saison / Farmhouse Ale,46,16.0\n1874,0.091,103.0,628,Resin,American Double / Imperial IPA,46,12.0\n1875,0.063,69.0,525,Diesel,American Stout,46,16.0\n1876,0.06,48.0,512,Autumnation (2011-12) (2011),Pumpkin Ale,46,16.0\n1877,0.054000000000000006,42.0,425,The Crisp (2011),German Pilsener,46,16.0\n1878,0.052000000000000005,34.0,424,Sweet Action (2011),Cream Ale,46,16.0\n1879,0.063,57.0,423,Righteous Ale (2011),Rye Beer,46,16.0\n1880,0.064,62.0,422,Bengali Tiger (2011),American IPA,46,16.0\n1881,0.045,,1942,Rudie Session IPA,American IPA,264,12.0\n1882,0.07400000000000001,,1708,Taster's Choice,Doppelbock,264,12.0\n1883,0.068,65.0,1521,Modus Hoperandi,American IPA,264,12.0\n1884,0.057999999999999996,15.0,1297,Estival Cream Stout,American Stout,264,12.0\n1885,0.057999999999999996,,1192,Vernal Minthe Stout,American Stout,264,12.0\n1886,0.08,,1013,Hibernal Vinifera Stout,Foreign / Export Stout,264,12.0\n1887,,,774,Autumnal Molé Stout,American Stout,264,12.0\n1888,0.042,18.0,386,Mexican Logger,American Pale Lager,264,12.0\n1889,0.053,,70,True Blonde Ale,American Blonde Ale,264,12.0\n1890,0.061,,69,Euphoria Pale Ale,American Pale Ale (APA),264,12.0\n1891,0.057,58.0,68,ESB Special Ale,Extra Special / Strong Bitter (ESB),264,12.0\n1892,0.068,65.0,67,Modus Hoperandi,American IPA,264,12.0\n1893,0.057999999999999996,39.0,1792,Iron Butt Red Ale,American Amber / Red Ale,313,12.0\n1894,0.071,92.0,1609,Initial Point India Pale Ale,American IPA,313,12.0\n1895,0.085,,2537,Monkey Dancing On A Razor Blade,Belgian IPA,64,24.0\n1896,0.08199999999999999,,2536,Tripel Deke,Tripel,64,24.0\n1897,0.049,,30,Urban Wilderness Pale Ale,English Pale Ale,557,12.0\n1898,0.06,70.0,2305,Homefront IPA,American IPA,163,12.0\n1899,0.055,16.0,1588,Sly Fox Christmas Ale 2013,Winter Warmer,371,12.0\n1900,0.055999999999999994,25.0,1363,Grisette,Grisette,371,12.0\n1901,0.062,,1211,360° India Pale Ale,American IPA,371,12.0\n1902,0.049,18.0,1123,Helles Golden Lager,Munich Helles Lager,371,12.0\n1903,0.055,16.0,926,Sly Fox Christmas Ale 2012 (2012),Winter Warmer,371,12.0\n1904,0.084,90.0,894,Odyssey Imperial IPA,American Double / Imperial IPA,371,12.0\n1905,0.057999999999999996,25.0,166,Oktoberfest Lager,Märzen / Oktoberfest,371,12.0\n1906,0.07,113.0,24,113 IPA,American IPA,371,12.0\n1907,0.053,21.0,23,Dunkel Lager,Munich Dunkel Lager,371,12.0\n1908,0.055999999999999994,11.0,22,Royal Weisse Ale,Hefeweizen,371,12.0\n1909,0.049,44.0,21,Pikeland Pils,German Pilsener,371,12.0\n1910,0.051,40.0,20,Phoenix Pale Ale,American Pale Ale (APA),371,12.0\n1911,0.07,88.0,2407,Rule G IPA,American IPA,115,12.0\n1912,0.057999999999999996,35.0,2406,Murphy's Law,American Amber / Red Ale,115,12.0\n1913,0.062,33.0,2405,Alter Ego ,Saison / Farmhouse Ale,115,12.0\n1914,0.05,,2234,Monarch Pilsner,American Pilsner,191,12.0\n1915,0.06,55.0,1606,Snow King Pale Ale,American Pale Ale (APA),191,12.0\n1916,0.054000000000000006,36.0,617,Zonker Stout,Foreign / Export Stout,191,12.0\n1917,0.05,22.0,407,OB-1 Organic Ale,English Brown Ale,191,12.0\n1918,0.05,18.0,406,Snake River Lager,Vienna Lager,191,12.0\n1919,0.052000000000000005,32.0,402,Snake River Pale Ale,American Pale Ale (APA),191,12.0\n1920,0.068,60.0,393,Pako’s EyePA,American IPA,191,12.0\n1921,0.05,,1798,Thanksgiving Ale,Kölsch,309,12.0\n1922,0.092,,1655,Double Dagger Imperial IPA,American Double / Imperial IPA,309,12.0\n1923,0.063,100.0,1596,Dagger Falls IPA,American IPA,309,12.0\n1924,0.063,100.0,1595,Dagger Falls IPA,American IPA,309,12.0\n1925,0.06,,1482,Socktoberfest,Märzen / Oktoberfest,309,16.0\n1926,0.079,,1447,Hopnoxious Imperial IPA,American Double / Imperial IPA,309,12.0\n1927,0.099,,1425,Barrel Aged Seven Devils Imperial Stout,American Double / Imperial Stout,309,12.0\n1928,0.055,,1424,Boise Co-Op Two Score Ale,Saison / Farmhouse Ale,309,16.0\n1929,0.05,,1298,Sockeye Belgian Style Summer Ale,Witbier,309,16.0\n1930,0.064,,1181,Sockeye Maibock,Maibock / Helles Bock,309,12.0\n1931,0.099,100.0,1160,Old Devil's Tooth,American Barleywine,309,12.0\n1932,0.043,,1152,Galena Golden,American Blonde Ale,309,12.0\n1933,0.052000000000000005,32.0,1151,Hell-Diver Pale Ale,American Pale Ale (APA),309,12.0\n1934,0.046,12.0,1150,Woolybugger Wheat,American Pale Wheat Ale,309,12.0\n1935,0.057,,1076,Power House Porter,American Porter,309,12.0\n1936,0.084,90.0,995,Winterfest,American Strong Ale,309,16.0\n1937,0.063,100.0,879,Dagger Falls IPA,American IPA,309,12.0\n1938,0.07,18.0,1972,LuckenBock,Bock,257,16.0\n1939,0.055,40.0,1971,Texas Pale Ale (TPA),American IPA,257,16.0\n1940,0.08,,1970,6 String Saison,Saison / Farmhouse Ale,257,16.0\n1941,0.05,22.0,1969,Kol' Beer,Kölsch,257,16.0\n1942,0.035,,2024,Montauk Light,Light Lager,249,12.0\n1943,0.048,32.0,1283,Na Zdraví Pilsner,Czech Pilsener,436,16.0\n1944,0.055,65.0,1282,Nice Rack IPA,American IPA,436,16.0\n1945,0.075,72.0,2362,2014 IPA Cicada Series,American IPA,133,16.0\n1946,0.077,65.0,2346,Sinister Minister Black IPA,American IPA,133,16.0\n1947,0.053,45.0,2320,Jack the Sipper,Extra Special / Strong Bitter (ESB),133,12.0\n1948,0.057999999999999996,60.0,2297,Devil's Harvest Extra Pale Ale,American Pale Ale (APA),133,12.0\n1949,0.05,20.0,2296,Suzy B Dirty Blonde Ale,American Blonde Ale,133,12.0\n1950,0.08,80.0,1745,Mississippi Fire Ant,American Amber / Red Ale,133,16.0\n1951,0.057999999999999996,40.0,1120,Hipster Breakfast,Oatmeal Stout,133,16.0\n1952,0.05,20.0,1118,Suzy B Dirty Blonde Ale,American Blonde Ale,133,16.0\n1953,0.057999999999999996,60.0,1117,Devil's Harvest Extra Pale Ale,American Pale Ale (APA),133,16.0\n1954,0.065,45.0,2387,Pine Belt Pale Ale,American Pale Ale (APA),118,12.0\n1955,0.055,,2267,Walloon,Saison / Farmhouse Ale,118,12.0\n1956,0.069,23.0,1740,Le Mort Vivant,Bière de Garde,118,12.0\n1957,0.085,110.0,1728,Red Cockaded Ale,American Double / Imperial IPA,118,12.0\n1958,0.092,100.0,1497,Valkyrie Double IPA,American Double / Imperial IPA,118,12.0\n1959,0.085,110.0,1011,Red Cockaded Ale (2013),American Double / Imperial IPA,118,12.0\n1960,0.07200000000000001,40.0,1010,Old Potentate,Old Ale,118,12.0\n1961,0.05,20.0,856,Bombshell Blonde,American Blonde Ale,118,16.0\n1962,0.099,100.0,853,PRO-AM (2012) (2012),American Double / Imperial IPA,118,12.0\n1963,0.055,,691,Walloon (2014),Saison / Farmhouse Ale,118,12.0\n1964,0.069,23.0,555,Le Mort Vivant (2011),Bière de Garde,118,12.0\n1965,0.083,50.0,46,Buried Hatchet Stout,Foreign / Export Stout,118,12.0\n1966,0.065,45.0,45,Pine Belt Pale Ale,American Pale Ale (APA),118,16.0\n1967,0.05,20.0,44,Bombshell Blonde,American Blonde Ale,118,12.0\n1968,0.047,35.0,2486,Baby Daddy Session IPA,American IPA,78,12.0\n1969,,,763,Hopluia (2004),English India Pale Ale (IPA),508,16.0\n1970,0.057999999999999996,,2271,Ball & Chain (2014),American Pale Ale (APA),175,16.0\n1971,0.096,,2206,Bitter Biker Double IPA,American Double / Imperial IPA,175,16.0\n1972,0.08199999999999999,,2136,God Damn Pigeon Porter,American Porter,175,16.0\n1973,0.079,,2135,Working for the Weekend,American Double / Imperial IPA,175,16.0\n1974,0.06,,2134,Angry Adam,American Amber / Red Ale,175,16.0\n1975,0.055,,2109,Freedom Fries,American Stout,175,16.0\n1976,0.096,,1821,Bitter Biker Double IPA,American Double / Imperial IPA,175,12.0\n1977,0.073,,1820,Ghost Bike Pale Ale,American Pale Ale (APA),175,16.0\n1978,0.062,,1819,Spiteful IPA,American IPA,175,12.0\n1979,0.06,,1634,Alley Time,American Pale Ale (APA),175,12.0\n1980,0.057999999999999996,,1633,Fat Badger,Irish Red Ale,175,12.0\n1981,0.055,,1632,In the Weeds,American Pale Wheat Ale,175,12.0\n1982,0.05,22.0,855,Special Amber,Vienna Lager,498,12.0\n1983,0.05,22.0,445,Special Amber,Vienna Lager,498,12.0\n1984,0.055999999999999994,,1587,Seven Gates Pale Ale,American Pale Ale (APA),372,12.0\n1985,0.052000000000000005,,2242,Gunga Din,Cider,186,16.0\n1986,0.042,20.0,1544,Starr Pils,German Pilsener,383,12.0\n1987,0.065,52.0,1205,Northern Lights India Pale Ale,American IPA,383,16.0\n1988,0.048,12.0,369,Festie,Märzen / Oktoberfest,383,12.0\n1989,0.065,52.0,368,Northern Lights India Pale Ale,American IPA,383,12.0\n1990,0.065,65.0,2386,Third Eye Enlightened Pale Ale,American Pale Ale (APA),119,12.0\n1991,0.049,17.0,92,Colorado Kölsch,Kölsch,119,12.0\n1992,0.057,25.0,91,Steam Engine Lager,American Amber / Red Lager,119,12.0\n1993,0.065,65.0,90,Third Eye Pale Ale,American IPA,119,12.0\n1994,0.047,9.0,2366,Point Special (Current),American Adjunct Lager,131,12.0\n1995,0.047,9.0,2365,Point Special,American Adjunct Lager,131,12.0\n1996,0.054000000000000006,33.0,2270,Point Cascade Pale Ale (2013),American Pale Ale (APA),131,12.0\n1997,0.047,9.0,2228,Point Special,American Adjunct Lager,131,12.0\n1998,0.052000000000000005,9.0,2151,Onyx Black Ale,American Black Ale,131,12.0\n1999,0.063,64.0,2150,Beyond The Pale IPA,American IPA,131,12.0\n"
  },
  {
    "path": "core/riot-core/src/test/resources/beers2.csv",
    "content": ",abv,ibu,id,name,style,brewery_id,ounces\n2000,0.047,9.0,2122,Point Special (2013),American Adjunct Lager,131,12.0\n2001,0.047,9.0,2121,Point Special (2012),American Adjunct Lager,131,12.0\n2002,0.047,9.0,2115,Point Special Lager,American Adjunct Lager,131,16.0\n2003,0.062,,1450,St. Benedict's Winter Ale,Winter Warmer,131,12.0\n2004,0.057,15.0,1357,Point Oktoberfest,Märzen / Oktoberfest,131,16.0\n2005,0.052000000000000005,7.0,1225,Point Nude Beach Summer Wheat,American Pale Wheat Ale,131,16.0\n2006,0.05,7.0,816,Point Nude Beach Summer Wheat,American Pale Wheat Ale,131,12.0\n2007,0.05,7.0,772,Point Nude Beach Summer Wheat (2011),American Pale Wheat Ale,131,12.0\n2008,0.035,,684,Drop Dead Blonde,American Blonde Ale,131,12.0\n2009,0.049,13.0,650,Three Kings Ale,Kölsch,131,12.0\n2010,0.057,15.0,456,Point Oktoberfest,Märzen / Oktoberfest,131,12.0\n2011,0.054000000000000006,32.0,357,2012 Black Ale,American Brown Ale,131,12.0\n2012,0.05,7.0,141,Point Nude Beach Summer Wheat (2010),American Pale Wheat Ale,131,12.0\n2013,0.054000000000000006,33.0,140,Point Cascade Pale Ale,American Pale Ale (APA),131,12.0\n2014,0.047,14.0,139,Point Amber Classic,American Amber / Red Lager,131,12.0\n2015,0.047,9.0,138,Point Special Lager,American Adjunct Lager,131,12.0\n2016,0.051,31.0,953,Wisco Disco,American Amber / Red Ale,486,16.0\n2017,0.05,,1983,Brontide,American Black Ale,255,12.0\n2018,0.05,,1631,Brontide,American Black Ale,255,12.0\n2019,0.045,,1344,Classique,Saison / Farmhouse Ale,255,12.0\n2020,0.045,,922,Sunsplash Golden Ale (2004),American Blonde Ale,492,12.0\n2021,0.051,25.0,1410,Sand Island Lighthouse,Kölsch,412,12.0\n2022,0.05,30.0,925,Lily Flagg Milk Stout,Milk / Sweet Stout,412,12.0\n2023,0.07200000000000001,70.0,637,Monkeynaut IPA,American IPA,412,12.0\n2024,0.05,,2369,Straub Beer (Current),American Adjunct Lager,129,12.0\n2025,0.040999999999999995,8.0,2233,American Lager,American Adjunct Lager,129,12.0\n2026,0.040999999999999995,8.0,2232,American Amber,American Amber / Red Lager,129,12.0\n2027,0.032,13.0,2231,American Light,Light Lager,129,12.0\n2028,0.053,49.0,2352,Extra Pale Ale,American Pale Ale (APA),138,12.0\n2029,0.053,40.0,2549,Make It So,Extra Special / Strong Bitter (ESB),58,12.0\n2030,0.047,55.0,2473,Hopvale Organic Ale,American Pale Ale (APA),58,16.0\n2031,0.083,100.0,2415,Unchained #18 Hop Silo,American Double / Imperial IPA,58,16.0\n2032,0.052000000000000005,29.0,2605,Tip Off,Altbier,25,16.0\n2033,0.054000000000000006,,2215,Java Mac,Scottish Ale,25,16.0\n2034,0.054000000000000006,23.0,2164,Cowbell,American Porter,25,16.0\n2035,0.057999999999999996,20.0,2085,Hop Up Offa That Brett (2014),Belgian Pale Ale,25,16.0\n2036,0.083,23.0,2084,PV Muckle (2013),Scotch Ale / Wee Heavy,25,16.0\n2037,0.099,36.0,2083,Bourbon Barrel Batch 666: Sympathy for the Devil,Belgian Dark Ale,25,16.0\n2038,0.09,30.0,2082,Whip Fight,Scotch Ale / Wee Heavy,25,16.0\n2039,0.053,23.0,2081,Port Barrel Wee Mac ,Scotch Ale / Wee Heavy,25,16.0\n2040,0.064,75.0,2001,Fistful Of Hops Red,American IPA,25,16.0\n2041,0.063,75.0,2000,Fistful of Hops Orange,American IPA,25,16.0\n2042,0.064,75.0,1999,Fistful Of Hops Blue,American IPA,25,16.0\n2043,0.064,75.0,1996,Fistful of Hops Green,American IPA,25,16.0\n2044,,,1948,30 Min Coma,Belgian IPA,25,16.0\n2045,0.09,30.0,1656,Wee Muckle,Scotch Ale / Wee Heavy,25,16.0\n2046,0.065,55.0,1599,Royal Brat,Extra Special / Strong Bitter (ESB),25,16.0\n2047,0.075,77.0,1420,Grapefruit Jungle (GFJ),American IPA,25,16.0\n2048,0.055999999999999994,50.0,1389,Osiris Pale Ale,American Pale Ale (APA),25,16.0\n2049,0.099,75.0,1367,Bourbon Barrel Aged Timmie,Russian Imperial Stout,25,16.0\n2050,0.063,23.0,1366,Stupid Sexy Flanders,Flanders Oud Bruin,25,16.0\n2051,,,1347,Bourbon Barrel Cowbell,American Porter,25,16.0\n2052,0.054000000000000006,,1314,Popcorn Pilsner,German Pilsener,25,16.0\n2053,0.071,27.0,1128,Ring of Dingle,Irish Dry Stout,25,16.0\n2054,0.054000000000000006,23.0,1127,Bourbon Barrel Wee Mac,Scottish Ale,25,16.0\n2055,0.099,60.0,1049,Bourbon Barrel Johan,English Barleywine,25,16.0\n2056,0.07,,934,The Deuce,American Brown Ale,25,16.0\n2057,0.09,24.0,923,The Velvet Fog,Quadrupel (Quad),25,16.0\n2058,0.055,23.0,874,Sun King Oktoberfest,Märzen / Oktoberfest,25,16.0\n2059,0.052000000000000005,24.0,739,Indianapolis Indians Lager,Dortmunder / Export Lager,25,16.0\n2060,0.052000000000000005,24.0,698,Indians Victory Lager (2012),Dortmunder / Export Lager,25,16.0\n2061,0.08,,660,Chaka,Belgian Strong Pale Ale,25,16.0\n2062,0.091,91.0,651,Isis,American Double / Imperial IPA,25,16.0\n2063,0.09,30.0,584,Wee Muckle (2011),Scotch Ale / Wee Heavy,25,16.0\n2064,0.075,77.0,532,Grapefruit Jungle (GFJ) (2011),American IPA,25,16.0\n2065,0.055,23.0,526,Sun King Oktoberfest (2011),Märzen / Oktoberfest,25,16.0\n2066,0.099,60.0,394,Johan the Barleywine,English Barleywine,25,16.0\n2067,0.054000000000000006,23.0,213,Wee Mac Scottish-Style Ale,Scottish Ale,25,16.0\n2068,0.053,20.0,55,Sunlight Cream Ale,Cream Ale,25,16.0\n2069,0.055999999999999994,50.0,54,Osiris Pale Ale (2010),American Pale Ale (APA),25,16.0\n2070,0.045,,1207,Dam Lager,American Amber / Red Lager,455,12.0\n2071,0.07,,1206,Red Clay IPA,American IPA,455,12.0\n2072,0.07200000000000001,,2543,Todd the Axe Man,American IPA,61,16.0\n2073,0.057,,2409,Doomtree,Extra Special / Strong Bitter (ESB),61,16.0\n2074,0.099,85.0,1739,BLAKKR,American Black Ale,61,16.0\n2075,0.073,69.0,1112,Overrated! West Coast Style IPA,American IPA,61,16.0\n2076,0.075,90.0,329,WET,American IPA,61,16.0\n2077,0.04,37.0,19,Bitter Brewer,English Bitter,61,16.0\n2078,0.055,34.0,18,SurlyFest,Rye Beer,61,16.0\n2079,0.051,45.0,17,Coffee Bender,American Brown Ale,61,16.0\n2080,0.051,45.0,16,Bender,American Brown Ale,61,16.0\n2081,0.09699999999999999,120.0,15,Abrasive Ale,American Double / Imperial IPA,61,16.0\n2082,0.051,20.0,14,Hell,Keller Bier / Zwickel Bier,61,16.0\n2083,0.067,33.0,13,CynicAle,Saison / Farmhouse Ale,61,16.0\n2084,0.062,99.0,12,Furious,American IPA,61,16.0\n2085,0.073,50.0,1242,Big Nose,American IPA,447,12.0\n2086,0.05,10.0,1241,Cotton Mouth,Witbier,447,12.0\n2087,0.055999999999999994,35.0,1240,Stump Knocker Pale Ale,American Pale Ale (APA),447,12.0\n2088,0.05,38.0,1239,Midnight Oil,Oatmeal Stout,447,12.0\n2089,0.059000000000000004,18.0,1238,Wild Night,Cream Ale,447,12.0\n2090,0.045,,1554,Bermuda Triangle Ginger Beer,Herbed / Spiced Beer,381,12.0\n2091,0.055,35.0,2568,Take Two Pils,German Pilsener,49,12.0\n2092,0.057,,2551,Waterkeeper,Hefeweizen,49,12.0\n2093,0.064,,1710,SweetWater IPA,American IPA,49,12.0\n2094,0.054000000000000006,,1709,420 Extra Pale Ale,American Pale Ale (APA),49,12.0\n2095,0.08,95.0,1229,Dodgy Knight Imperial IPA,American Double / Imperial IPA,449,12.0\n2096,0.05,,1164,TailGate Saison,Saison / Farmhouse Ale,449,12.0\n2097,0.05,44.0,663,TailGate IPA,American IPA,449,24.0\n2098,0.05,44.0,662,TailGate IPA,American IPA,449,12.0\n2099,0.049,28.0,623,TailGate Hefeweizen,Hefeweizen,449,24.0\n2100,0.05,19.0,622,Blacktop Blonde,American Blonde Ale,449,24.0\n2101,0.05,19.0,362,Blacktop Blonde,American Blonde Ale,449,12.0\n2102,0.049,28.0,361,TailGate Hefeweizen,Hefeweizen,449,12.0\n2103,0.085,34.0,2575,Wooden Rooster,Tripel,45,16.9\n2104,0.048,20.0,2555,Ginger Peach Saison,Saison / Farmhouse Ale,45,16.0\n2105,0.062,35.0,1736,Zombie Monkie,American Porter,45,16.0\n2106,0.055999999999999994,20.0,1196,Wild Plum Farmhouse Ale,Saison / Farmhouse Ale,45,16.0\n2107,0.05,20.0,1063,Vanilla Bean Buffalo Sweat,Oatmeal Stout,45,16.0\n2108,0.068,110.0,1017,Ethos IPA,American IPA,45,16.0\n2109,0.044000000000000004,12.0,1009,Tallgrass Pub Ale,American Brown Ale,45,16.0\n2110,0.07200000000000001,93.0,912,Oasis,Extra Special / Strong Bitter (ESB),45,16.0\n2111,0.05,20.0,765,Buffalo Sweat,Milk / Sweet Stout,45,16.0\n2112,0.05,20.0,676,Halcyon Unfiltered Wheat,American Pale Wheat Ale,45,16.0\n2113,0.052000000000000005,,595,8-Bit Pale Ale,American Pale Ale (APA),45,16.0\n2114,0.085,,537,Velvet Rooster,Tripel,45,16.0\n2115,0.05,20.0,412,Halcyon Unfiltered Wheat,American Pale Wheat Ale,45,12.0\n2116,0.05,16.0,105,Köld Lager (2010),German Pilsener,45,16.0\n2117,0.07200000000000001,93.0,104,Oasis (2010),American Double / Imperial IPA,45,16.0\n2118,0.044000000000000004,22.0,103,Tallgrass Ale,American Brown Ale,45,16.0\n2119,0.05,20.0,102,Buffalo Sweat (2010),Milk / Sweet Stout,45,16.0\n2120,0.063,60.0,101,Tallgrass IPA,American IPA,45,16.0\n2121,0.068,,1433,Hat Trick Hop IPA,American IPA,409,16.0\n2122,0.055999999999999994,,1432,Yard Sale Amber Ale,American Amber / Red Ale,409,16.0\n2123,0.055,,936,Loafin Bräu,Altbier,490,16.0\n2124,0.07,80.0,544,Old Elephant Foot IPA,American IPA,490,16.0\n2125,0.065,35.0,2640,Peck's Porter,American Porter,7,16.0\n2126,0.07,,2448,Reactor,American IPA,7,16.0\n2127,0.057,,2447,Mr. Orange,Witbier,7,16.0\n2128,0.08,22.0,2601,Deduction,Dubbel,28,12.0\n2129,0.057,,973,Face Down Brown Ale,American Brown Ale,480,12.0\n2130,0.064,,827,Tempter IPA,American IPA,480,12.0\n2131,0.055,,589,Bridal Veil Rye Pale Ale,American Pale Ale (APA),480,12.0\n2132,0.048,,2155,Smittytown,Extra Special / Strong Bitter (ESB),210,12.0\n2133,0.04,,1982,Greenwood Beach,Fruit / Vegetable Beer,210,12.0\n2134,0.066,,1939,Gatecrasher,English India Pale Ale (IPA),210,12.0\n2135,0.047,42.0,1082,RecreationAle,American Pale Ale (APA),469,12.0\n2136,0.055,35.0,2119,First Stand,Saison / Farmhouse Ale,215,12.0\n2137,0.063,23.0,2118,Battle LIne,American Brown Ale,215,12.0\n2138,0.055999999999999994,12.0,2117,Broken Bridge,Dunkelweizen,215,12.0\n2139,0.071,69.0,2116,Brutus,English India Pale Ale (IPA),215,12.0\n2140,0.06,,1916,Petit Mutant,American Wild Ale,272,16.0\n2141,0.096,,1915,The Crusher,American Double / Imperial IPA,272,16.0\n2142,0.08,,1914,Beelzebub,American Double / Imperial Stout,272,16.0\n2143,0.07,,1810,Focal Banger,American IPA,272,16.0\n2144,0.08,120.0,1111,Heady Topper,American Double / Imperial IPA,272,16.0\n2145,0.08,120.0,379,Heady Topper,American Double / Imperial IPA,272,16.0\n2146,0.046,20.0,1200,Bomber Mountain Amber Ale (2013),American Amber / Red Ale,457,12.0\n2147,0.07,75.0,1199,Indian Paintbrush IPA,American IPA,457,12.0\n2148,0.048,16.0,1198,Saddle Bronc Brown Ale (2013),English Brown Ale,457,12.0\n2149,0.059000000000000004,15.0,1197,Wagon Box Wheat Beer,American Pale Wheat Ale,457,12.0\n2150,0.05,,1945,Birdhouse Pale Ale,Belgian Pale Ale,262,12.0\n2151,0.073,,1079,Ozzy,Belgian Pale Ale,262,12.0\n2152,0.07,,94,Resurrection,Dubbel,262,12.0\n2153,0.052000000000000005,16.0,1748,Bronx Summer Pale Ale,American Pale Ale (APA),329,16.0\n2154,0.057,46.0,1747,Bronx Black Pale Ale,American Black Ale,329,16.0\n2155,0.063,50.0,1037,Bronx Pale Ale,American Pale Ale (APA),329,16.0\n2156,0.052000000000000005,35.0,2594,Surfrider,American Pale Ale (APA),33,16.0\n2157,0.055,,2035,Kolschtal Eddy,Kölsch,33,16.0\n2158,0.05,,2034,South Bay Session IPA,American IPA,33,16.0\n2159,0.069,34.0,1562,Grandma's Pecan,English Brown Ale,33,16.0\n2160,0.099,101.0,1561,Double Trunk,American Double / Imperial IPA,33,16.0\n2161,0.046,45.0,1749,Just IPA,American IPA,328,12.0\n2162,0.045,,2455,Lionshead,American Pilsner,90,12.0\n2163,,,963,Manhattan Gold Lager (1990),American Amber / Red Lager,484,12.0\n2164,0.052000000000000005,,2638,G. B. Russo’s Italian Pistachio Pale Ale,American Pale Ale (APA),9,16.0\n2165,0.057999999999999996,,1278,Northern Hawk Owl Amber,American Amber / Red Ale,438,12.0\n2166,0.059000000000000004,,1277,CEO Stout,American Stout,438,16.0\n2167,0.047,,1276,Will Power Pale Ale,American Pale Ale (APA),438,16.0\n2168,0.044000000000000004,,1732,Curious Traveler Shandy,Shandy,334,12.0\n2169,0.048,18.0,2347,Hunny Do Wheat,American Pale Wheat Ale,142,12.0\n2170,0.052000000000000005,,1781,Three Way Pale Ale,American Pale Ale (APA),142,12.0\n2171,0.040999999999999995,,1780,Rise to the Top,Cream Ale,142,12.0\n2172,0.049,,1779,Lost Trout Brown Ale,American Brown Ale,142,12.0\n2173,0.051,11.0,2421,Watermelon Ale,Fruit / Vegetable Beer,108,12.0\n2174,0.04,18.0,2319,Knotty Blonde Ale,American Blonde Ale,153,12.0\n2175,0.062,40.0,2317,Fivepine Chocolate Porter,American Porter,153,12.0\n2176,0.062,82.0,2316,Hoodoo Voodoo IPA,American IPA,153,12.0\n2177,0.053,22.0,1913,Hydraulion Red,Irish Red Ale,273,12.0\n2178,0.06,50.0,1912,40 Mile IPA,American IPA,273,12.0\n2179,0.055,64.0,2617,Citra Faced,American Pale Wheat Ale,21,16.0\n2180,0.055,31.0,2616,Pole Barn Stout,Oatmeal Stout,21,16.0\n2181,0.054000000000000006,37.0,2615,Pale,American Pale Ale (APA),21,16.0\n2182,0.053,27.0,2614,Yoshi's Nectar,California Common / Steam Beer,21,16.0\n2183,0.052000000000000005,,1889,Leatherhead Red,American Amber / Red Ale,282,12.0\n2184,0.065,,1222,Cropduster Mid-American IPA,American IPA,282,12.0\n2185,0.075,,122,Golden Frau Honey Wheat,Braggot,282,12.0\n2186,,,121,Cornstalker Dark Wheat,American Dark Wheat Ale,282,12.0\n2187,0.057999999999999996,20.0,2623,Cafe Leche,American Porter,17,16.0\n2188,0.052000000000000005,12.0,2622,Damascene Apricot Sour,Fruit / Vegetable Beer,17,16.0\n2189,0.12,90.0,2621,Csar,Russian Imperial Stout,17,16.0\n2190,0.055,,1817,Klingon Warnog Roggen Dunkel,Roggenbier,17,16.0\n2191,0.085,115.0,1449,Overlord Imperial IPA,American Double / Imperial IPA,17,16.0\n2192,0.057999999999999996,36.0,951,Alloy,American IPA,17,16.0\n2193,0.051,22.0,950,Rivet Irish Red Ale,Irish Red Ale,17,16.0\n2194,0.052000000000000005,50.0,949,3 Gear Robust Porter,American Porter,17,16.0\n2195,0.045,35.0,948,Circuit Bohemian Pilsner,Czech Pilsener,17,16.0\n2196,0.055,,2321,Turnrow Harvest Ale,American Blonde Ale,152,12.0\n2197,0.07,60.0,1755,Juke Joint IPA,American IPA,152,12.0\n2198,0.07,35.0,1754,Parade Ground Coffee Porter,American Porter,152,12.0\n2199,0.05,21.0,1428,Tin Roof Watermelon Wheat,Fruit / Vegetable Beer,152,12.0\n2200,0.045,18.0,529,Tin Roof Blonde Ale,American Blonde Ale,152,12.0\n2201,0.055,37.0,495,Voodoo Bengal Pale Ale,American Pale Ale (APA),152,12.0\n2202,0.045,28.0,494,Perfect Tin Amber,American Amber / Red Ale,152,12.0\n2203,0.073,87.0,1856,IPA & a Half,American IPA,291,12.0\n2204,0.055,33.0,736,Ornery Amber Lager (2003),Vienna Lager,291,12.0\n2205,0.05,,1027,Big Island Shandy,Shandy,474,16.0\n2206,0.068,,1026,Preservation IPA,American IPA,474,16.0\n2207,0.062,72.0,1938,Almanac IPA,American IPA,265,12.0\n2208,0.065,,1937,Milk Mustachio Stout,Milk / Sweet Stout,265,12.0\n2209,0.06,30.0,1936,Farmer's Tan Red Ale,American Amber / Red Ale,265,12.0\n2210,0.057,,594,Triangle India Pale Ale,American IPA,524,12.0\n2211,0.05,,114,Triangle White Ale,Witbier,524,12.0\n2212,0.08,,113,Triangle Belgian Golden Ale,Belgian Strong Pale Ale,524,12.0\n2213,0.08199999999999999,,2445,Troegenator,Doppelbock,97,16.0\n2214,0.075,93.0,2444,Nugget Nectar,American Amber / Red Ale,97,16.0\n2215,0.045,45.0,2203,Sunshine Pils,American Pilsner,97,12.0\n2216,0.08199999999999999,25.0,1510,Troegenator Doublebock,Doppelbock,97,16.0\n2217,0.075,85.0,1509,Perpetual IPA,American IPA,97,12.0\n2218,0.055,52.0,433,Greenville Pale Ale,American Pale Ale (APA),539,12.0\n2219,0.062,65.0,641,Hoppy Boy,American IPA,520,16.0\n2220,0.054000000000000006,26.0,2588,Cow Creek,American Amber / Red Lager,38,12.0\n2221,0.075,63.0,2458,Chupahopra,American IPA,38,12.0\n2222,0.051,19.0,2212,Twisted X,American Adjunct Lager,38,12.0\n2223,0.040999999999999995,41.0,2235,Day Hike Session,American IPA,190,12.0\n2224,0.048,48.0,1661,Trailhead ISA,American IPA,190,12.0\n2225,0.052000000000000005,27.0,1660,Immersion Amber,American Amber / Red Ale,190,12.0\n2226,0.062,70.0,1659,Evo IPA,American IPA,190,12.0\n2227,0.048,,1438,Presidential Pils,Czech Pilsener,190,12.0\n2228,0.062,70.0,1173,Evolutionary IPA (2012),American IPA,190,12.0\n2229,0.057,36.0,560,Persnickety Pale,American Pale Ale (APA),190,12.0\n2230,0.054000000000000006,20.0,519,SoDo Brown Ale,American Brown Ale,190,12.0\n2231,0.052000000000000005,27.0,518,Immersion Amber Ale (2011),American Amber / Red Ale,190,12.0\n2232,0.062,70.0,505,Evolutionary IPA (2011),American IPA,190,12.0\n2233,0.048,48.0,482,Trailhead India Style Session Ale (2011),American IPA,190,12.0\n2234,0.046,,451,Panorama Wheat Ale,American Pale Wheat Ale,190,12.0\n2235,0.063,69.0,2497,Wobble,American IPA,74,16.0\n2236,0.057999999999999996,43.0,2246,Night Cat,American Dark Wheat Ale,74,12.0\n2237,0.057999999999999996,43.0,1630,Night Cat (2014),American Dark Wheat Ale,74,12.0\n2238,0.051,17.0,1284,Dog Days Lager,Dortmunder / Export Lager,74,12.0\n2239,0.051,36.0,1121,Sidekick Extra Pale Ale,American Pale Ale (APA),74,12.0\n2240,0.077,23.0,1042,Atom Smasher,Märzen / Oktoberfest,74,12.0\n2241,0.045,,1041,Testudo,Bière de Garde,74,12.0\n2242,0.065,,1040,Hobnob B & B Pale Ale,American Pale Ale (APA),74,12.0\n2243,0.07,68.0,861,Cane and Ebel,American Strong Ale,74,12.0\n2244,0.065,,642,Outlaw IPA (2015),American IPA,74,12.0\n2245,0.045,,2037,The Gilded Age,Munich Helles Lager,243,12.0\n2246,0.05,,1285,No Limits Hefeweizen,Hefeweizen,435,16.0\n2247,0.06,,1189,Honeyspot Road White IPA,American White IPA,435,12.0\n2248,0.07200000000000001,,1171,Road 2 Ruin Double IPA,American Double / Imperial IPA,435,12.0\n2249,0.048,,1170,Workers Comp Saison,Saison / Farmhouse Ale,435,12.0\n2250,0.05,,1169,Ol' Factory Pils,German Pilsener,435,12.0\n2251,0.05,10.0,2310,PUNK'N,Pumpkin Ale,159,12.0\n2252,0.04,22.0,2100,Yard Sale Winter Lager,American Amber / Red Lager,159,12.0\n2253,0.04,42.0,1925,Trader Session IPA,American IPA,159,12.0\n2254,0.073,83.0,1723,Hop Nosh IPA,American IPA,159,12.0\n2255,0.04,17.0,1212,SUM'R,American Blonde Ale,159,12.0\n2256,0.04,32.0,1097,Organic Baba Black Lager,Schwarzbier,159,12.0\n2257,0.073,82.0,1089,Hop Notch IPA (2013),American IPA,159,12.0\n2258,0.04,34.0,1088,Cutthroat Pale Ale,American Pale Ale (APA),159,12.0\n2259,0.04,29.0,974,WYLD Extra Pale Ale,American Pale Ale (APA),159,12.0\n2260,0.055,,98,Pilsner Ukiah,German Pilsener,555,12.0\n2261,0.06,75.0,2372,The Green Room,American IPA,126,16.0\n2262,0.047,25.0,2367,Humbucker Helles,Maibock / Helles Bock,126,16.0\n2263,0.065,,1704,Uncle John's Apple Cherry Cider,Cider,338,16.0\n2264,0.065,,1703,Uncle John's Apricot Apple Cider,Cider,338,16.0\n2265,0.065,,877,Draught Hard Apple Cider,Cider,338,16.0\n2266,0.001,,606,Scotty K NA,Low Alcohol Beer,522,16.0\n2267,0.068,,543,Bacon Brown Ale,American Brown Ale,522,16.0\n2268,0.064,,347,Golden State Ale,Belgian Pale Ale,522,16.0\n2269,0.078,,346,Baltic Porter,Baltic Porter,522,16.0\n2270,0.085,,25,Siamese twin,Dubbel,522,16.0\n2271,0.085,90.0,2507,Double Duckpin,American Double / Imperial IPA,71,12.0\n2272,0.042,10.0,2506,Old Pro,Gose,71,12.0\n2273,0.055,,829,Duckpin Pale Ale,American Pale Ale (APA),71,12.0\n2274,0.06,,582,Balt Altbier,Altbier,71,12.0\n2275,0.045,50.0,2190,Campside Session IPA,American IPA,202,16.0\n2276,0.045,15.0,1951,Upland Wheat Ale,Witbier,202,16.0\n2277,0.06,,1950,Dragonfly IPA,American IPA,202,16.0\n2278,0.128,,2565,Lee Hill Series Vol. 5 - Belgian Style Quadrupel Ale,Quadrupel (Quad),51,19.2\n2279,0.10400000000000001,,2564,Lee Hill Series Vol. 4 - Manhattan Style Rye Ale,Rye Beer,51,19.2\n2280,0.068,24.0,2563,Lee Hill Series Vol. 2 - Wild Saison,American Wild Ale,51,19.2\n2281,0.099,51.0,2562,Lee Hill Series Vol. 3 - Barrel Aged Imperial Stout,American Double / Imperial Stout,51,19.2\n2282,0.076,,2561,Lee Hill Series Vol. 1 - Barrel Aged Brown Ale,American Brown Ale,51,19.2\n2283,0.06,,2560,Blood Orange Saison,Saison / Farmhouse Ale,51,12.0\n2284,0.065,33.0,1932,Thai Style White IPA,American White IPA,51,12.0\n2285,0.075,30.0,1853,Ferus Fluxus Wild Belgian Pale Ale,American Wild Ale,51,19.2\n2286,0.099,90.0,1315,Upslope Imperial India Pale Ale,American Double / Imperial IPA,51,19.2\n2287,0.08199999999999999,,907,Upslope Christmas Ale,Winter Warmer,51,16.0\n2288,0.077,,906,Upslope Pumpkin Ale,Pumpkin Ale,51,16.0\n2289,0.075,30.0,683,Upslope Belgian Style Pale Ale,Belgian Pale Ale,51,12.0\n2290,0.069,,614,Upslope Foreign Style Stout,Foreign / Export Stout,51,12.0\n2291,0.048,15.0,466,Top Rope Mexican-style Craft Lager,Vienna Lager,51,12.0\n2292,0.048,22.0,444,Upslope Craft Lager,Vienna Lager,51,12.0\n2293,0.067,,345,Upslope Brown Ale,English Brown Ale,51,12.0\n2294,0.057999999999999996,,80,Upslope Pale Ale,American Pale Ale (APA),51,12.0\n2295,0.07200000000000001,,79,Upslope India Pale Ale,American IPA,51,12.0\n2296,0.053,22.0,382,Common Sense Kentucky Common Ale,American Brown Ale,546,16.0\n2297,0.065,70.0,381,Upstate I.P.W.,American IPA,546,12.0\n2298,0.04,,1826,Squatters Full Suspension Pale Ale,American Pale Ale (APA),302,12.0\n2299,0.09,75.0,1825,Squatters Hop Rising Double IPA,American Double / Imperial IPA,302,12.0\n2300,0.08,,1824,Devastator Double Bock,Doppelbock,302,12.0\n2301,0.06,,1823,Wasatch Ghostrider White IPA,American White IPA,302,12.0\n2302,0.06,,1682,Wasatch Ghostrider White IPA (2014),American White IPA,302,12.0\n2303,0.04,,1681,Wasatch Apricot Hefeweizen,Fruit / Vegetable Beer,302,12.0\n2304,0.09,75.0,1680,Squatters Hop Rising Double IPA (2014),American Double / Imperial IPA,302,12.0\n2305,0.04,,1679,Squatters Full Suspension Pale Ale,American Pale Ale (APA),302,12.0\n2306,0.068,,2245,Nunica Pine,Cider,185,16.0\n2307,0.069,,2244,Ginger Peach,Cider,185,16.0\n2308,0.068,,1378,Totally Roasted,Cider,185,16.0\n2309,0.068,,1377,Blue Gold,Cider,185,16.0\n2310,0.068,,1376,Hard Apple,Cider,185,16.0\n2311,0.052000000000000005,,2411,Nitro Can Coffee Stout,American Stout,113,12.0\n2312,0.092,25.0,1770,Voodoo Love Child,Tripel,322,12.0\n2313,0.079,23.0,1769,White Magick of the Sun,Witbier,322,12.0\n2314,0.075,31.0,1730,Wynona's Big Brown Ale,American Brown Ale,322,12.0\n2315,0.092,25.0,1729,Gran Met,Belgian Strong Pale Ale,322,12.0\n2316,0.073,85.0,1603,Good Vibes IPA,American IPA,322,12.0\n2317,0.075,85.0,1488,Pilzilla,American Double / Imperial Pilsner,322,12.0\n2318,0.04,37.0,1846,Wachusett Light IPA,American IPA,295,12.0\n2319,0.06,55.0,1845,Green Monsta IPA,American IPA,295,12.0\n2320,0.055999999999999994,50.0,1844,Wachusett IPA,American IPA,295,12.0\n2321,0.047,,1843,Strawberry White,Witbier,295,12.0\n2322,0.085,85.0,1418,Larry Imperial IPA,American Double / Imperial IPA,295,12.0\n2323,0.047,,1038,Wachusett Summer,American Pale Wheat Ale,295,12.0\n2324,0.051,17.0,1030,Country Pale Ale,English Pale Ale,295,12.0\n2325,0.04,37.0,1029,Wachusett Light IPA (2013),American IPA,295,12.0\n2326,0.052000000000000005,20.0,908,Pumpkan,Pumpkin Ale,295,12.0\n2327,0.045,10.0,619,Wachusett Blueberry Ale,Fruit / Vegetable Beer,295,12.0\n2328,0.06,55.0,618,Green Monsta IPA,American IPA,295,12.0\n2329,0.047,,780,T-6 Red Ale (2004),American Amber / Red Ale,506,12.0\n2330,0.052000000000000005,67.0,2450,Self Starter,American IPA,94,16.0\n2331,0.054000000000000006,20.0,2223,Ermal's,Cream Ale,94,16.0\n2332,0.07,,2222,10 Ton,Oatmeal Stout,94,16.0\n2333,0.07,,2221,Flyin' Rye,American IPA,94,16.0\n2334,0.09,,2439,Christmas Ale,Herbed / Spiced Beer,100,12.0\n2335,0.07,,2356,Pay It Forward Cocoa Porter,American Porter,100,12.0\n2336,0.055,,1069,West Sixth Amber Ale,American Amber / Red Ale,100,12.0\n2337,,,652,West Sixth IPA,American IPA,100,12.0\n2338,0.055,,1542,One Claw,American Pale Ale (APA),384,12.0\n2339,0.04,5.0,1312,Westbrook Gose,Gose,384,12.0\n2340,0.05,16.0,576,White Thai,Witbier,384,12.0\n2341,0.068,65.0,575,Westbrook IPA,American IPA,384,12.0\n2342,0.057,22.0,1645,Westfield Octoberfest,Märzen / Oktoberfest,351,12.0\n2343,0.052000000000000005,,1551,Pop's Old Fashioned Lager,American Amber / Red Lager,351,12.0\n2344,0.057999999999999996,55.0,1550,Charlie in the Rye,American IPA,351,12.0\n2345,,,2364,Royal Lager,American Pale Lager,132,16.0\n2346,0.08,,2348,Rip Van Winkle (Current),Bock,132,12.0\n2347,,,2344,O’Malley’s Stout,English Stout,132,12.0\n2348,0.075,89.0,2343,O’Malley’s IPA,American IPA,132,12.0\n2349,,,2342,O’Malley’s Irish Style Cream Ale,Cream Ale,132,12.0\n2350,0.049,28.0,2341,L'il Lucy's Hot Pepper Ale,Chile Beer,132,12.0\n2351,0.052000000000000005,,2340,Drop Kick Ale,American Amber / Red Ale,132,12.0\n2352,0.055,,2573,Raspberry Berliner Weisse,Berliner Weissbier,47,12.0\n2353,0.05,,2572,Hop Session,American IPA,47,12.0\n2354,0.055,,2571,Blueberry Berliner Weisse,Berliner Weissbier,47,12.0\n2355,0.055,,2570,Berliner Weisse,Berliner Weissbier,47,12.0\n2356,0.06,,1498,Super G IPA,American IPA,396,16.0\n2357,0.049,30.0,1838,Hefe Lemon,Radler,296,12.0\n2358,0.049,30.0,1837,Hefe Black,Hefeweizen,296,12.0\n2359,0.049,30.0,1836,Widmer Brothers Hefeweizen,Hefeweizen,296,12.0\n2360,0.08199999999999999,100.0,1619,Hop Slayer Double IPA,American Double / Imperial IPA,361,12.0\n2361,0.045,,1618,Pumpkin Ale,Pumpkin Ale,361,12.0\n2362,0.05,,1364,Big Bowl Blonde Ale,American Brown Ale,361,12.0\n2363,0.052000000000000005,27.0,971,Phat Chance,American Blonde Ale,361,12.0\n2364,0.08199999999999999,100.0,740,Hop Slayer Double IPA (2011),American Double / Imperial IPA,361,12.0\n2365,0.08199999999999999,100.0,430,Hop Slayer Double IPA (2011),American Double / Imperial IPA,361,12.0\n2366,0.042,13.0,398,Wild Onion Summer Wit,Witbier,361,12.0\n2367,0.06,23.0,366,Jack Stout,Oatmeal Stout,361,12.0\n2368,0.045,,334,Wild Onion Pumpkin Ale (2010),Pumpkin Ale,361,12.0\n2369,0.055999999999999994,41.0,162,Paddy Pale Ale,American Pale Ale (APA),361,12.0\n2370,0.068,21.0,2253,Blonde Hunny,Belgian Pale Ale,181,12.0\n2371,0.057,20.0,1318,Wild Wolf Wee Heavy Scottish Style Ale,Scotch Ale / Wee Heavy,181,12.0\n2372,0.045,25.0,1195,Wild Wolf American Pilsner,American Pilsner,181,12.0\n2373,0.051,45.0,1194,Alpha Ale,American Pale Ale (APA),181,12.0\n2374,0.054000000000000006,,826,Mystical Stout,Irish Dry Stout,499,16.0\n2375,0.075,,825,Bodacious Bock,Bock,499,16.0\n2376,0.05,,813,Ambitious Lager,Munich Helles Lager,499,16.0\n2377,0.07200000000000001,,324,Wyoming Pale Ale,American Pale Ale (APA),550,16.0\n2378,0.05,,323,Wind River Blonde Ale,American Blonde Ale,550,16.0\n2379,0.07400000000000001,83.0,762,Ace IPA,American IPA,509,16.0\n2380,0.08,31.0,761,P-51 Porter,American Porter,509,16.0\n2381,0.055,,2149,#001 Golden Amber Lager,American Amber / Red Lager,211,12.0\n2382,0.071,60.0,2148,#002 American I.P.A.,American IPA,211,12.0\n2383,0.052000000000000005,,2147,#003 Brown & Robust Porter,American Porter,211,12.0\n2384,0.048,38.0,2146,#004 Session I.P.A.,American IPA,211,12.0\n2385,0.059000000000000004,,2047,Tarasque,Saison / Farmhouse Ale,239,12.0\n2386,0.062,61.0,1470,Ananda India Pale Ale,American IPA,239,12.0\n2387,0.045,23.0,1469,Tiny Bomb,American Pilsner,239,12.0\n2388,0.057999999999999996,72.0,2627,Train Hopper,American IPA,14,12.0\n2389,0.045,,2626,Edward’s Portly Brown,American Brown Ale,14,12.0\n2390,0.059000000000000004,135.0,1676,Troopers Alley IPA,American IPA,344,12.0\n2391,0.047,15.0,1468,Wolverine Premium Lager,American Pale Lager,402,12.0\n2392,0.05,,822,Woodchuck Amber Hard Cider,Cider,501,12.0\n2393,0.065,82.0,2417,4000 Footer IPA,American IPA,109,12.0\n2394,0.027999999999999997,15.0,2306,Summer Brew,American Pilsner,109,12.0\n2395,0.065,69.0,1697,Be Hoppy IPA,American IPA,339,16.0\n2396,0.069,69.0,2194,Worthy IPA,American IPA,199,12.0\n2397,0.045,25.0,1514,Easy Day Kolsch,Kölsch,199,12.0\n2398,0.077,30.0,1513,Lights Out Vanilla Cream Extra Stout,American Double / Imperial IPA,199,12.0\n2399,0.069,69.0,1512,Worthy IPA (2013),American IPA,199,12.0\n2400,0.06,50.0,1511,Worthy Pale,American Pale Ale (APA),199,12.0\n2401,0.042,,1345,Patty's Chile Beer,Chile Beer,424,12.0\n2402,0.08199999999999999,,1316,Colorojo Imperial Red Ale,American Strong Ale,424,12.0\n2403,0.055,,1045,Wynkoop Pumpkin Ale,Pumpkin Ale,424,12.0\n2404,0.075,,1035,Rocky Mountain Oyster Stout,American Stout,424,12.0\n2405,0.067,45.0,928,Belgorado,Belgian IPA,424,12.0\n2406,0.052000000000000005,,807,Rail Yard Ale,American Amber / Red Ale,424,12.0\n2407,0.055,,620,B3K Black Lager,Schwarzbier,424,12.0\n2408,0.055,40.0,145,Silverback Pale Ale,American Pale Ale (APA),424,12.0\n2409,0.052000000000000005,,84,Rail Yard Ale (2009),American Amber / Red Ale,424,12.0\n"
  },
  {
    "path": "core/riot-faker/gradle.properties",
    "content": "#\n# SPDX-License-Identifier: Apache-2.0\n#\n# Copyright 2022-2023 The RIOT authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\nproject_description = RIOT Faker\nautomatic.module.name = com.redis.riot.faker\n"
  },
  {
    "path": "core/riot-faker/riot-faker.gradle",
    "content": "/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * Copyright 2020-2023 The RIOT authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\ndependencies {\n    implementation 'org.springframework.batch:spring-batch-infrastructure'\n    api group: 'net.datafaker', name: 'datafaker', version: datafakerVersion\n}\n"
  },
  {
    "path": "core/riot-faker/src/main/java/com/redis/riot/faker/FakerItemReader.java",
    "content": "package com.redis.riot.faker;\n\nimport java.util.AbstractMap;\nimport java.util.HashMap;\nimport java.util.LinkedHashMap;\nimport java.util.Locale;\nimport java.util.Map;\nimport java.util.Map.Entry;\nimport java.util.stream.Collectors;\n\nimport org.springframework.batch.item.ItemReader;\nimport org.springframework.batch.item.support.AbstractItemCountingItemStreamItemReader;\nimport org.springframework.util.Assert;\nimport org.springframework.util.ClassUtils;\n\nimport net.datafaker.Faker;\n\n/**\n * {@link ItemReader} that generates HashMaps using Faker.\n *\n * @author Julien Ruaux\n */\npublic class FakerItemReader extends AbstractItemCountingItemStreamItemReader<Map<String, Object>> {\n\n\tpublic static final Locale DEFAULT_LOCALE = Locale.getDefault();\n\n\tprivate Map<String, String> expressions = new LinkedHashMap<>();\n\tprivate Locale locale = DEFAULT_LOCALE;\n\n\tprivate Faker faker;\n\tprivate Map<String, String> fields;\n\n\tpublic FakerItemReader() {\n\t\tsetName(ClassUtils.getShortName(getClass()));\n\t}\n\n\tpublic void setLocale(Locale locale) {\n\t\tthis.locale = locale;\n\t}\n\n\tpublic void setExpressions(Map<String, String> fields) {\n\t\tthis.expressions = fields;\n\t}\n\n\t@Override\n\tprotected synchronized void doOpen() throws Exception {\n\t\tAssert.notEmpty(expressions, \"No field specified\");\n\t\tif (fields == null) {\n\t\t\tfields = expressions.entrySet().stream().map(this::normalizeField)\n\t\t\t\t\t.collect(Collectors.toMap(Entry::getKey, Entry::getValue));\n\t\t}\n\t\tfaker = new Faker(locale);\n\t}\n\n\tprivate Entry<String, String> normalizeField(Entry<String, String> field) {\n\t\tif (field.getValue().startsWith(\"#{\")) {\n\t\t\treturn field;\n\t\t}\n\t\treturn new AbstractMap.SimpleEntry<>(field.getKey(), \"#{\" + field.getValue() + \"}\");\n\t}\n\n\t@Override\n\tprotected Map<String, Object> doRead() throws Exception {\n\t\tMap<String, Object> map = new HashMap<>();\n\t\tfor (Entry<String, String> field : fields.entrySet()) {\n\t\t\tString value;\n\t\t\tsynchronized (faker) {\n\t\t\t\tvalue = faker.expression(field.getValue());\n\t\t\t}\n\t\t\tmap.put(field.getKey(), value);\n\t\t}\n\t\treturn map;\n\t}\n\n\t@Override\n\tprotected synchronized void doClose() {\n\t\tfaker = null;\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-faker/src/test/java/com/redis/riot/faker/FakerReaderTests.java",
    "content": "package com.redis.riot.faker;\n\nimport java.util.ArrayList;\nimport java.util.LinkedHashMap;\nimport java.util.List;\nimport java.util.Map;\n\nimport org.junit.jupiter.api.Assertions;\nimport org.junit.jupiter.api.Test;\nimport org.springframework.batch.item.ExecutionContext;\nimport org.springframework.batch.item.ItemReader;\n\nclass FakerReaderTests {\n\n\tpublic static <T> List<T> readAll(ItemReader<T> reader) throws Exception {\n\t\tList<T> list = new ArrayList<>();\n\t\tT element;\n\t\twhile ((element = reader.read()) != null) {\n\t\t\tlist.add(element);\n\t\t}\n\t\treturn list;\n\t}\n\n\t@Test\n\tvoid fakerReader() throws Exception {\n\t\tint count = 100;\n\t\tFakerItemReader reader = new FakerItemReader();\n\t\tMap<String, String> fields = new LinkedHashMap<>();\n\t\tfields.put(\"firstName\", \"Name.first_name\");\n\t\tfields.put(\"lastName\", \"Name.last_name\");\n\t\treader.setExpressions(fields);\n\t\treader.setMaxItemCount(count);\n\t\treader.open(new ExecutionContext());\n\t\tList<Map<String, Object>> items = readAll(reader);\n\t\treader.close();\n\t\tAssertions.assertEquals(count, items.size());\n\t\tAssertions.assertTrue(items.get(0).containsKey(\"firstName\"));\n\t\tAssertions.assertTrue(items.get(0).containsKey(\"lastName\"));\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-file/gradle.properties",
    "content": "#\n# SPDX-License-Identifier: Apache-2.0\n#\n# Copyright 2022-2023 The RIOT authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\nproject_description = RIOT File\nautomatic.module.name = com.redis.riot.file\n"
  },
  {
    "path": "core/riot-file/riot-file.gradle",
    "content": "/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * Copyright 2020-2023 The RIOT authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\ndependencies {\n    implementation 'org.springframework.batch:spring-batch-infrastructure'\n    api 'com.fasterxml.jackson.dataformat:jackson-dataformat-xml'    \n    api 'org.springframework:spring-oxm'\n    api group: 'io.awspring.cloud', name: 'spring-cloud-aws-starter-s3', version: awsVersion\n    api group: 'com.google.cloud', name: 'spring-cloud-gcp-starter-storage', version: gcpVersion\n    api group: 'com.redis', name: 'spring-batch-resource', version: springBatchRedisVersion\n    testImplementation 'org.slf4j:slf4j-simple'\n}\n"
  },
  {
    "path": "core/riot-file/src/main/java/com/redis/riot/file/AbstractReaderFactory.java",
    "content": "package com.redis.riot.file;\n\nimport java.util.Map;\n\nimport org.springframework.batch.item.file.FlatFileItemReader;\nimport org.springframework.batch.item.file.builder.FlatFileItemReaderBuilder;\nimport org.springframework.batch.item.file.separator.DefaultRecordSeparatorPolicy;\nimport org.springframework.batch.item.file.separator.RecordSeparatorPolicy;\nimport org.springframework.batch.item.file.transform.AbstractLineTokenizer;\nimport org.springframework.core.io.Resource;\nimport org.springframework.util.Assert;\nimport org.springframework.util.ObjectUtils;\n\nimport com.fasterxml.jackson.databind.DeserializationFeature;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport com.fasterxml.jackson.databind.module.SimpleModule;\n\npublic abstract class AbstractReaderFactory implements ReaderFactory {\n\n\tprotected int[] includedFields(ReadOptions options) {\n\t\treturn options.getIncludedFields().stream().mapToInt(Integer::intValue).toArray();\n\t}\n\n\tprotected FlatFileItemReader<Map<String, Object>> flatFileReader(Resource resource, ReadOptions options,\n\t\t\tAbstractLineTokenizer tokenizer) {\n\t\tif (ObjectUtils.isEmpty(options.getFields())) {\n\t\t\tAssert.isTrue(options.isHeader(),\n\t\t\t\t\tString.format(\"Could not create reader for file '%s': no header or field names specified\",\n\t\t\t\t\t\t\tresource.getFilename()));\n\t\t} else {\n\t\t\ttokenizer.setNames(options.getFields().toArray(new String[0]));\n\t\t}\n\t\tFlatFileItemReaderBuilder<Map<String, Object>> builder = flatFileReader(options);\n\t\tbuilder.resource(resource);\n\t\tbuilder.fieldSetMapper(new MapFieldSetMapper());\n\t\tbuilder.lineTokenizer(tokenizer);\n\t\tbuilder.skippedLinesCallback(new HeaderCallbackHandler(tokenizer, headerIndex(options)));\n\t\treturn builder.build();\n\t}\n\n\tprotected <T> FlatFileItemReaderBuilder<T> flatFileReader(ReadOptions options) {\n\t\tFlatFileItemReaderBuilder<T> builder = new FlatFileItemReaderBuilder<>();\n\t\tif (options.getMaxItemCount() > 0) {\n\t\t\tbuilder.maxItemCount(options.getMaxItemCount());\n\t\t}\n\t\tbuilder.encoding(options.getEncoding());\n\t\tbuilder.recordSeparatorPolicy(recordSeparatorPolicy(options));\n\t\tbuilder.linesToSkip(linesToSkip(options));\n\t\tbuilder.saveState(false);\n\t\treturn builder;\n\t}\n\n\tprivate RecordSeparatorPolicy recordSeparatorPolicy(ReadOptions options) {\n\t\tString quoteCharacter = String.valueOf(options.getQuoteCharacter());\n\t\treturn new DefaultRecordSeparatorPolicy(quoteCharacter, options.getContinuationString());\n\t}\n\n\tprivate int headerIndex(ReadOptions options) {\n\t\tif (options.getHeaderLine() != null) {\n\t\t\treturn options.getHeaderLine();\n\t\t}\n\t\treturn linesToSkip(options) - 1;\n\t}\n\n\tprivate int linesToSkip(ReadOptions options) {\n\t\tif (options.getLinesToSkip() != null) {\n\t\t\treturn options.getLinesToSkip();\n\t\t}\n\t\tif (options.isHeader()) {\n\t\t\treturn 1;\n\t\t}\n\t\treturn 0;\n\t}\n\n\tprotected <T extends ObjectMapper> T objectMapper(T objectMapper, ReadOptions options) {\n\t\tobjectMapper.configure(DeserializationFeature.USE_LONG_FOR_INTS, true);\n\t\tSimpleModule module = new SimpleModule();\n\t\toptions.getDeserializers().forEach(module::addDeserializer);\n\t\tobjectMapper.registerModule(module);\n\t\treturn objectMapper;\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-file/src/main/java/com/redis/riot/file/AbstractWriterFactory.java",
    "content": "package com.redis.riot.file;\n\nimport java.util.ArrayList;\nimport java.util.LinkedHashMap;\nimport java.util.List;\nimport java.util.Map;\n\nimport org.springframework.batch.item.file.transform.LineAggregator;\nimport org.springframework.core.io.WritableResource;\nimport org.springframework.util.CollectionUtils;\n\nimport com.fasterxml.jackson.annotation.JsonInclude.Include;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport com.redis.spring.batch.resource.FlatFileItemWriter;\nimport com.redis.spring.batch.resource.FlatFileItemWriterBuilder;\n\npublic abstract class AbstractWriterFactory implements WriterFactory {\n\n\tprotected <T extends ObjectMapper> T objectMapper(T objectMapper) {\n\t\tobjectMapper.setSerializationInclusion(Include.NON_NULL);\n\t\tobjectMapper.setSerializationInclusion(Include.NON_DEFAULT);\n\t\treturn objectMapper;\n\t}\n\n\tprotected <T> FlatFileItemWriterBuilder<T> flatFileWriter(WritableResource resource, WriteOptions options) {\n\t\tFlatFileItemWriterBuilder<T> builder = new FlatFileItemWriterBuilder<>();\n\t\tbuilder.name(resource.getFilename());\n\t\tbuilder.resource(resource);\n\t\tbuilder.append(options.isAppend());\n\t\tbuilder.encoding(options.getEncoding());\n\t\tbuilder.forceSync(options.isForceSync());\n\t\tbuilder.lineSeparator(options.getLineSeparator());\n\t\tbuilder.saveState(false);\n\t\tbuilder.shouldDeleteIfEmpty(options.isShouldDeleteIfEmpty());\n\t\tbuilder.shouldDeleteIfExists(options.isShouldDeleteIfExists());\n\t\tbuilder.transactional(options.isTransactional());\n\t\treturn builder;\n\t}\n\n\tprotected FlatFileItemWriter<Map<String, Object>> flatFileWriter(WriteOptions options,\n\t\t\tFlatFileItemWriterBuilder<Map<String, Object>> writer, LineAggregator<Map<String, Object>> aggregator) {\n\t\twriter.lineAggregator(aggregator);\n\t\tif (options.isHeader()) {\n\t\t\tMap<String, Object> headerRecord = options.getHeaderSupplier().get();\n\t\t\tif (!CollectionUtils.isEmpty(headerRecord)) {\n\t\t\t\tList<String> fields = new ArrayList<>(headerRecord.keySet());\n\t\t\t\tMap<String, Object> fieldMap = new LinkedHashMap<>();\n\t\t\t\tfields.forEach(f -> fieldMap.put(f, f));\n\t\t\t\tString headerLine = aggregator.aggregate(fieldMap);\n\t\t\t\twriter.headerCallback(w -> w.write(headerLine));\n\t\t\t}\n\t\t}\n\t\treturn writer.build();\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-file/src/main/java/com/redis/riot/file/DelimitedReaderFactory.java",
    "content": "package com.redis.riot.file;\n\nimport org.springframework.batch.item.ItemReader;\nimport org.springframework.batch.item.file.transform.DelimitedLineTokenizer;\nimport org.springframework.core.io.Resource;\nimport org.springframework.util.ObjectUtils;\n\npublic class DelimitedReaderFactory extends AbstractReaderFactory {\n\n\tprivate final String delimiter;\n\n\tpublic DelimitedReaderFactory(String delimiter) {\n\t\tthis.delimiter = delimiter;\n\t}\n\n\t@Override\n\tpublic ItemReader<?> create(Resource resource, ReadOptions options) {\n\t\tDelimitedLineTokenizer tokenizer = new DelimitedLineTokenizer();\n\t\ttokenizer.setDelimiter(options.getDelimiter() == null ? delimiter : options.getDelimiter());\n\t\ttokenizer.setQuoteCharacter(options.getQuoteCharacter());\n\t\tif (!ObjectUtils.isEmpty(options.getIncludedFields())) {\n\t\t\ttokenizer.setIncludedFields(includedFields(options));\n\t\t}\n\t\treturn flatFileReader(resource, options, tokenizer);\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-file/src/main/java/com/redis/riot/file/DelimitedWriterFactory.java",
    "content": "package com.redis.riot.file;\n\nimport java.util.Map;\n\nimport org.springframework.batch.item.ItemWriter;\nimport org.springframework.batch.item.file.transform.PassThroughFieldExtractor;\nimport org.springframework.core.io.WritableResource;\n\nimport com.redis.spring.batch.resource.FlatFileItemWriterBuilder;\nimport com.redis.spring.batch.resource.FlatFileItemWriterBuilder.DelimitedBuilder;\n\npublic class DelimitedWriterFactory extends AbstractWriterFactory {\n\n\tprivate final String delimiter;\n\n\tpublic DelimitedWriterFactory(String delimiter) {\n\t\tthis.delimiter = delimiter;\n\t}\n\n\t@Override\n\tpublic ItemWriter<?> create(WritableResource resource, WriteOptions options) {\n\t\tFlatFileItemWriterBuilder<Map<String, Object>> writer = flatFileWriter(resource, options);\n\t\tDelimitedBuilder<Map<String, Object>> delimitedBuilder = writer.delimited();\n\t\tdelimitedBuilder.delimiter(options.getDelimiter() == null ? delimiter : options.getDelimiter());\n\t\tdelimitedBuilder.fieldExtractor(new PassThroughFieldExtractor<>());\n\t\tdelimitedBuilder.quoteCharacter(String.valueOf(options.getQuoteCharacter()));\n\t\treturn flatFileWriter(options, writer, delimitedBuilder.build());\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-file/src/main/java/com/redis/riot/file/FileOptions.java",
    "content": "package com.redis.riot.file;\n\nimport java.nio.charset.StandardCharsets;\n\nimport org.springframework.batch.item.file.transform.DelimitedLineTokenizer;\nimport org.springframework.util.MimeType;\n\nimport lombok.ToString;\n\n@ToString\npublic class FileOptions {\n\n\tpublic static final String DELIMITER_PIPE = \"|\";\n\tpublic static final String DELIMITER_COMMA = DelimitedLineTokenizer.DELIMITER_COMMA;\n\tpublic static final String DELIMITER_TAB = DelimitedLineTokenizer.DELIMITER_TAB;\n\tpublic static final String DEFAULT_ENCODING = StandardCharsets.UTF_8.name();\n\tpublic static final char DEFAULT_QUOTE_CHARACTER = '\"';\n\n\tprivate boolean gzip;\n\tprivate S3Options s3Options = new S3Options();\n\tprivate GoogleStorageOptions googleStorageOptions = new GoogleStorageOptions();\n\tprivate MimeType contentType;\n\tprivate String encoding = DEFAULT_ENCODING;\n\tprivate boolean header;\n\tprivate String delimiter;\n\tprivate char quoteCharacter = DEFAULT_QUOTE_CHARACTER;\n\n\tpublic boolean isGzip() {\n\t\treturn gzip;\n\t}\n\n\tpublic void setGzip(boolean gzip) {\n\t\tthis.gzip = gzip;\n\t}\n\n\tpublic GoogleStorageOptions getGoogleStorageOptions() {\n\t\treturn googleStorageOptions;\n\t}\n\n\tpublic S3Options getS3Options() {\n\t\treturn s3Options;\n\t}\n\n\tpublic void setS3Options(S3Options s3Options) {\n\t\tthis.s3Options = s3Options;\n\t}\n\n\tpublic void setGoogleStorageOptions(GoogleStorageOptions googleStorageOptions) {\n\t\tthis.googleStorageOptions = googleStorageOptions;\n\t}\n\n\tpublic MimeType getContentType() {\n\t\treturn contentType;\n\t}\n\n\tpublic void setContentType(MimeType type) {\n\t\tthis.contentType = type;\n\t}\n\n\tpublic String getDelimiter() {\n\t\treturn delimiter;\n\t}\n\n\tpublic void setDelimiter(String delimiter) {\n\t\tthis.delimiter = delimiter;\n\t}\n\n\tpublic char getQuoteCharacter() {\n\t\treturn quoteCharacter;\n\t}\n\n\tpublic void setQuoteCharacter(char character) {\n\t\tthis.quoteCharacter = character;\n\t}\n\n\tpublic boolean isHeader() {\n\t\treturn header;\n\t}\n\n\tpublic void setHeader(boolean header) {\n\t\tthis.header = header;\n\t}\n\n\tpublic String getEncoding() {\n\t\treturn encoding;\n\t}\n\n\tpublic void setEncoding(String encoding) {\n\t\tthis.encoding = encoding;\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-file/src/main/java/com/redis/riot/file/FileReaderRegistry.java",
    "content": "package com.redis.riot.file;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.springframework.util.MimeType;\n\npublic class FileReaderRegistry {\n\n\tprivate final Map<MimeType, ReaderFactory> factories = new HashMap<>();\n\n\tpublic void register(MimeType type, ReaderFactory factory) {\n\t\tfactories.put(type, factory);\n\t}\n\n\tpublic ReaderFactory getReaderFactory(MimeType type) {\n\t\treturn factories.get(type);\n\t}\n\n\tpublic static FileReaderRegistry defaultReaderRegistry() {\n\t\tFileReaderRegistry registry = new FileReaderRegistry();\n\t\tregistry.register(RiotResourceMap.JSON, new JsonReaderFactory());\n\t\tregistry.register(RiotResourceMap.JSON_LINES, new JsonLinesReaderFactory());\n\t\tregistry.register(RiotResourceMap.XML, new XmlReaderFactory());\n\t\tregistry.register(RiotResourceMap.CSV, new DelimitedReaderFactory(FileOptions.DELIMITER_COMMA));\n\t\tregistry.register(RiotResourceMap.PSV, new DelimitedReaderFactory(FileOptions.DELIMITER_PIPE));\n\t\tregistry.register(RiotResourceMap.TSV, new DelimitedReaderFactory(FileOptions.DELIMITER_TAB));\n\t\tregistry.register(RiotResourceMap.TEXT, new FixedWidthReaderFactory());\n\t\treturn registry;\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-file/src/main/java/com/redis/riot/file/FileReaderResult.java",
    "content": "package com.redis.riot.file;\n\nimport org.springframework.batch.item.ItemReader;\nimport org.springframework.core.io.Resource;\nimport org.springframework.util.MimeType;\n\npublic class FileReaderResult {\n\n\tprivate Resource resource;\n\tprivate MimeType type;\n\tprivate ItemReader<?> reader;\n\n\tpublic Resource getResource() {\n\t\treturn resource;\n\t}\n\n\tpublic void setResource(Resource resource) {\n\t\tthis.resource = resource;\n\t}\n\n\tpublic MimeType getType() {\n\t\treturn type;\n\t}\n\n\tpublic void setType(MimeType mimeType) {\n\t\tthis.type = mimeType;\n\t}\n\n\tpublic ItemReader<?> getReader() {\n\t\treturn reader;\n\t}\n\n\tpublic void setReader(ItemReader<?> itemReader) {\n\t\tthis.reader = itemReader;\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-file/src/main/java/com/redis/riot/file/FileWriterRegistry.java",
    "content": "package com.redis.riot.file;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.springframework.util.MimeType;\n\npublic class FileWriterRegistry {\n\n\tprivate final Map<MimeType, WriterFactory> factories = new HashMap<>();\n\n\tpublic void register(MimeType type, WriterFactory factory) {\n\t\tfactories.put(type, factory);\n\t}\n\n\tpublic WriterFactory getWriterFactory(MimeType type) {\n\t\treturn factories.get(type);\n\t}\n\n\tpublic static FileWriterRegistry defaultWriterRegistry() {\n\t\tFileWriterRegistry registry = new FileWriterRegistry();\n\t\tregistry.register(RiotResourceMap.JSON, new JsonWriterFactory());\n\t\tregistry.register(RiotResourceMap.JSON_LINES, new JsonLinesWriterFactory());\n\t\tregistry.register(RiotResourceMap.XML, new XmlWriterFactory());\n\t\tregistry.register(RiotResourceMap.CSV, new DelimitedWriterFactory(FileOptions.DELIMITER_COMMA));\n\t\tregistry.register(RiotResourceMap.PSV, new DelimitedWriterFactory(FileOptions.DELIMITER_PIPE));\n\t\tregistry.register(RiotResourceMap.TSV, new DelimitedWriterFactory(FileOptions.DELIMITER_TAB));\n\t\tregistry.register(RiotResourceMap.TEXT, new FormattedWriterFactory());\n\t\treturn registry;\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-file/src/main/java/com/redis/riot/file/FileWriterResult.java",
    "content": "package com.redis.riot.file;\n\nimport org.springframework.batch.item.ItemWriter;\nimport org.springframework.core.io.Resource;\nimport org.springframework.util.MimeType;\n\npublic class FileWriterResult {\n\n\tprivate Resource resource;\n\tprivate MimeType type;\n\tprivate ItemWriter<?> writer;\n\n\tpublic Resource getResource() {\n\t\treturn resource;\n\t}\n\n\tpublic void setResource(Resource resource) {\n\t\tthis.resource = resource;\n\t}\n\n\tpublic MimeType getType() {\n\t\treturn type;\n\t}\n\n\tpublic void setType(MimeType mimeType) {\n\t\tthis.type = mimeType;\n\t}\n\n\tpublic ItemWriter<?> getWriter() {\n\t\treturn writer;\n\t}\n\n\tpublic void setWriter(ItemWriter<?> writer) {\n\t\tthis.writer = writer;\n\t}\n}\n"
  },
  {
    "path": "core/riot-file/src/main/java/com/redis/riot/file/FixedWidthReaderFactory.java",
    "content": "package com.redis.riot.file;\n\nimport java.util.List;\n\nimport org.springframework.batch.item.ItemReader;\nimport org.springframework.batch.item.file.transform.FixedLengthTokenizer;\nimport org.springframework.batch.item.file.transform.Range;\nimport org.springframework.batch.item.file.transform.RangeArrayPropertyEditor;\nimport org.springframework.core.io.Resource;\nimport org.springframework.util.Assert;\n\npublic class FixedWidthReaderFactory extends AbstractReaderFactory {\n\n\t@Override\n\tpublic ItemReader<?> create(Resource resource, ReadOptions options) {\n\t\tFixedLengthTokenizer tokenizer = new FixedLengthTokenizer();\n\t\tRangeArrayPropertyEditor editor = new RangeArrayPropertyEditor();\n\t\tList<String> columnRanges = options.getColumnRanges();\n\t\tAssert.notEmpty(columnRanges, \"Column ranges are required\");\n\t\teditor.setAsText(String.join(\",\", columnRanges));\n\t\tRange[] ranges = (Range[]) editor.getValue();\n\t\tAssert.notEmpty(ranges, \"Invalid ranges specified: \" + columnRanges);\n\t\ttokenizer.setColumns(ranges);\n\t\treturn flatFileReader(resource, options, tokenizer);\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-file/src/main/java/com/redis/riot/file/FormattedWriterFactory.java",
    "content": "package com.redis.riot.file;\n\nimport java.util.Map;\n\nimport org.springframework.batch.item.ItemWriter;\nimport org.springframework.batch.item.file.transform.PassThroughFieldExtractor;\nimport org.springframework.core.io.WritableResource;\n\nimport com.redis.spring.batch.resource.FlatFileItemWriterBuilder;\nimport com.redis.spring.batch.resource.FlatFileItemWriterBuilder.FormattedBuilder;\n\npublic class FormattedWriterFactory extends AbstractWriterFactory {\n\n\t@Override\n\tpublic ItemWriter<?> create(WritableResource resource, WriteOptions options) {\n\t\tFlatFileItemWriterBuilder<Map<String, Object>> writer = flatFileWriter(resource, options);\n\t\tFormattedBuilder<Map<String, Object>> formattedBuilder = writer.formatted();\n\t\tformattedBuilder.format(options.getFormatterString());\n\t\tformattedBuilder.fieldExtractor(new PassThroughFieldExtractor<>());\n\t\treturn flatFileWriter(options, writer, formattedBuilder.build());\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-file/src/main/java/com/redis/riot/file/GoogleStorageOptions.java",
    "content": "package com.redis.riot.file;\n\nimport java.io.ByteArrayInputStream;\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.nio.file.Files;\nimport java.nio.file.Path;\nimport java.util.Base64;\n\nimport com.google.auth.oauth2.GoogleCredentials;\nimport com.google.cloud.ServiceOptions;\nimport com.google.cloud.spring.autoconfigure.storage.GcpStorageAutoConfiguration;\nimport com.google.cloud.spring.core.GcpScope;\nimport com.google.cloud.spring.core.UserAgentHeaderProvider;\nimport com.google.cloud.storage.Storage;\nimport com.google.cloud.storage.StorageOptions;\n\npublic class GoogleStorageOptions {\n\n\tpublic static final GcpScope DEFAULT_SCOPE = GcpScope.STORAGE_READ_ONLY;\n\n\tprivate Path keyFile;\n\tprivate String projectId;\n\tprivate String encodedKey;\n\tprivate GcpScope scope = DEFAULT_SCOPE;\n\n\tpublic Storage storage() {\n\t\tStorageOptions.Builder builder = StorageOptions.newBuilder();\n\t\tbuilder.setProjectId(ServiceOptions.getDefaultProjectId());\n\t\tbuilder.setHeaderProvider(new UserAgentHeaderProvider(GcpStorageAutoConfiguration.class));\n\t\tif (keyFile != null) {\n\t\t\tInputStream inputStream;\n\t\t\ttry {\n\t\t\t\tinputStream = Files.newInputStream(keyFile);\n\t\t\t} catch (IOException e) {\n\t\t\t\tthrow new RuntimeIOException(\"Could not read key file\", e);\n\t\t\t}\n\t\t\tbuilder.setCredentials(credentials(inputStream));\n\t\t}\n\t\tif (encodedKey != null) {\n\t\t\tbyte[] bytes = Base64.getDecoder().decode(encodedKey);\n\t\t\tbuilder.setCredentials(credentials(new ByteArrayInputStream(bytes)));\n\t\t}\n\t\tif (projectId != null) {\n\t\t\tbuilder.setProjectId(projectId);\n\t\t}\n\t\treturn builder.build().getService();\n\t}\n\n\tprivate GoogleCredentials credentials(InputStream inputStream) {\n\t\tGoogleCredentials credentials;\n\t\ttry {\n\t\t\tcredentials = GoogleCredentials.fromStream(inputStream);\n\t\t} catch (IOException e) {\n\t\t\tthrow new RuntimeIOException(\"Could not create Google credentials\", e);\n\t\t}\n\t\tcredentials.createScoped(scope.getUrl());\n\t\treturn credentials;\n\t}\n\n\tpublic Path getKeyFile() {\n\t\treturn keyFile;\n\t}\n\n\tpublic void setKeyFile(Path keyFile) {\n\t\tthis.keyFile = keyFile;\n\t}\n\n\tpublic String getProjectId() {\n\t\treturn projectId;\n\t}\n\n\tpublic void setProjectId(String projectId) {\n\t\tthis.projectId = projectId;\n\t}\n\n\tpublic String getEncodedKey() {\n\t\treturn encodedKey;\n\t}\n\n\tpublic void setEncodedKey(String encodedKey) {\n\t\tthis.encodedKey = encodedKey;\n\t}\n\n\tpublic GcpScope getScope() {\n\t\treturn scope;\n\t}\n\n\tpublic void setScope(GcpScope scope) {\n\t\tthis.scope = scope;\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-file/src/main/java/com/redis/riot/file/GoogleStorageProtocolResolver.java",
    "content": "package com.redis.riot.file;\n\nimport java.util.function.Supplier;\n\nimport org.springframework.core.io.ProtocolResolver;\nimport org.springframework.core.io.Resource;\nimport org.springframework.core.io.ResourceLoader;\n\nimport com.google.cloud.spring.storage.GoogleStorageResource;\nimport com.google.cloud.storage.Storage;\n\npublic class GoogleStorageProtocolResolver implements ProtocolResolver {\n\n\tprivate Supplier<Storage> storageSupplier;\n\tprivate Storage storage;\n\n\t@Override\n\tpublic Resource resolve(String location, ResourceLoader resourceLoader) {\n\t\tif (location.startsWith(com.google.cloud.spring.storage.GoogleStorageProtocolResolver.PROTOCOL)) {\n\t\t\treturn new GoogleStorageResource(storage(), location, true);\n\t\t}\n\t\treturn null;\n\t}\n\n\tprivate Storage storage() {\n\t\tif (storage == null) {\n\t\t\tstorage = storageSupplier.get();\n\t\t}\n\t\treturn storage;\n\t}\n\n\tpublic void setStorage(Storage storage) {\n\t\tthis.storage = storage;\n\t}\n\n\tpublic void setStorageSupplier(Supplier<Storage> storageSupplier) {\n\t\tthis.storageSupplier = storageSupplier;\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-file/src/main/java/com/redis/riot/file/HeaderCallbackHandler.java",
    "content": "package com.redis.riot.file;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.springframework.batch.item.file.LineCallbackHandler;\nimport org.springframework.batch.item.file.transform.AbstractLineTokenizer;\nimport org.springframework.batch.item.file.transform.FieldSet;\n\npublic class HeaderCallbackHandler implements LineCallbackHandler {\n\n\tprivate final Log log = LogFactory.getLog(getClass());\n\n\tprivate final AbstractLineTokenizer tokenizer;\n\tprivate final int headerIndex;\n\n\tprivate int lineIndex;\n\n\tpublic HeaderCallbackHandler(AbstractLineTokenizer tokenizer, int headerIndex) {\n\t\tthis.tokenizer = tokenizer;\n\t\tthis.headerIndex = headerIndex;\n\t}\n\n\t@Override\n\tpublic void handleLine(String line) {\n\t\tif (lineIndex == headerIndex) {\n\t\t\tlog.info(\"Found header: \" + line);\n\t\t\tFieldSet fieldSet = tokenizer.tokenize(line);\n\t\t\tList<String> fields = new ArrayList<>();\n\t\t\tfor (int index = 0; index < fieldSet.getFieldCount(); index++) {\n\t\t\t\tfields.add(fieldSet.readString(index));\n\t\t\t}\n\t\t\tlog.info(\"Using field names: \" + fields);\n\t\t\ttokenizer.setNames(fields.toArray(new String[0]));\n\t\t}\n\t\tlineIndex++;\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-file/src/main/java/com/redis/riot/file/JsonLineAggregator.java",
    "content": "package com.redis.riot.file;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.springframework.batch.item.file.transform.LineAggregator;\n\nimport com.fasterxml.jackson.core.JsonProcessingException;\nimport com.fasterxml.jackson.databind.ObjectMapper;\n\npublic class JsonLineAggregator<T> implements LineAggregator<T> {\n\n\tprivate final Log log = LogFactory.getLog(getClass());\n\n\tprivate final ObjectMapper mapper;\n\n\tpublic JsonLineAggregator(ObjectMapper mapper) {\n\t\tthis.mapper = mapper;\n\t}\n\n\t@Override\n\tpublic String aggregate(T item) {\n\t\ttry {\n\t\t\treturn mapper.writeValueAsString(item);\n\t\t} catch (JsonProcessingException e) {\n\t\t\tlog.error(\"Could not serialize item\", e);\n\t\t\treturn null;\n\t\t}\n\t}\n}"
  },
  {
    "path": "core/riot-file/src/main/java/com/redis/riot/file/JsonLinesReaderFactory.java",
    "content": "package com.redis.riot.file;\n\nimport java.util.Map;\n\nimport org.springframework.batch.item.ItemReader;\nimport org.springframework.batch.item.file.builder.FlatFileItemReaderBuilder;\nimport org.springframework.batch.item.file.mapping.JsonLineMapper;\nimport org.springframework.core.io.Resource;\n\nimport com.fasterxml.jackson.databind.ObjectMapper;\n\npublic class JsonLinesReaderFactory extends AbstractReaderFactory {\n\n\t@Override\n\tpublic ItemReader<?> create(Resource resource, ReadOptions options) {\n\t\tif (Map.class.isAssignableFrom(options.getItemType())) {\n\t\t\tFlatFileItemReaderBuilder<Map<String, Object>> reader = flatFileReader(options);\n\t\t\treader.resource(resource);\n\t\t\treader.lineMapper(new JsonLineMapper());\n\t\t\treader.fieldSetMapper(new MapFieldSetMapper());\n\t\t\treturn reader.build();\n\t\t}\n\t\tFlatFileItemReaderBuilder<Object> reader = flatFileReader(options);\n\t\treader.resource(resource);\n\t\tObjectMapper objectMapper = objectMapper(new ObjectMapper(), options);\n\t\treader.lineMapper(new ObjectMapperLineMapper<>(objectMapper, options.getItemType()));\n\t\treturn reader.build();\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-file/src/main/java/com/redis/riot/file/JsonLinesWriterFactory.java",
    "content": "package com.redis.riot.file;\n\nimport org.springframework.batch.item.ItemWriter;\nimport org.springframework.core.io.WritableResource;\n\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport com.redis.spring.batch.resource.FlatFileItemWriterBuilder;\n\npublic class JsonLinesWriterFactory extends AbstractWriterFactory {\n\n\t@Override\n\tpublic ItemWriter<?> create(WritableResource resource, WriteOptions options) {\n\t\tFlatFileItemWriterBuilder<?> builder = flatFileWriter(resource, options);\n\t\tbuilder.lineAggregator(new JsonLineAggregator<>(new ObjectMapper()));\n\t\treturn builder.build();\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-file/src/main/java/com/redis/riot/file/JsonReaderFactory.java",
    "content": "package com.redis.riot.file;\n\nimport org.springframework.batch.item.ItemReader;\nimport org.springframework.batch.item.json.JacksonJsonObjectReader;\nimport org.springframework.batch.item.json.builder.JsonItemReaderBuilder;\nimport org.springframework.core.io.Resource;\n\nimport com.fasterxml.jackson.databind.ObjectMapper;\n\npublic class JsonReaderFactory extends AbstractReaderFactory {\n\n\t@Override\n\tpublic ItemReader<?> create(Resource resource, ReadOptions options) {\n\t\tJsonItemReaderBuilder<Object> builder = new JsonItemReaderBuilder<>();\n\t\tbuilder.name(resource.getFilename() + \"-json-file-reader\");\n\t\tbuilder.resource(resource);\n\t\tbuilder.saveState(false);\n\t\tJacksonJsonObjectReader<Object> objectReader = new JacksonJsonObjectReader<>(options.getItemType());\n\t\tobjectReader.setMapper(objectMapper(new ObjectMapper(), options));\n\t\tbuilder.jsonObjectReader(objectReader);\n\t\tif (options.getMaxItemCount() > 0) {\n\t\t\tbuilder.maxItemCount(options.getMaxItemCount());\n\t\t}\n\t\treturn builder.build();\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-file/src/main/java/com/redis/riot/file/JsonWriterFactory.java",
    "content": "package com.redis.riot.file;\n\nimport org.springframework.batch.item.ItemWriter;\nimport org.springframework.batch.item.json.JacksonJsonObjectMarshaller;\nimport org.springframework.core.io.WritableResource;\n\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport com.redis.spring.batch.resource.JsonFileItemWriterBuilder;\n\npublic class JsonWriterFactory extends AbstractWriterFactory {\n\n\t@Override\n\tpublic ItemWriter<?> create(WritableResource resource, WriteOptions options) {\n\t\tJsonFileItemWriterBuilder<?> writer = new JsonFileItemWriterBuilder<>();\n\t\twriter.name(resource.getFilename());\n\t\twriter.resource((WritableResource) resource);\n\t\twriter.append(options.isAppend());\n\t\twriter.encoding(options.getEncoding());\n\t\twriter.forceSync(options.isForceSync());\n\t\twriter.lineSeparator(options.getLineSeparator());\n\t\twriter.saveState(false);\n\t\twriter.shouldDeleteIfEmpty(options.isShouldDeleteIfEmpty());\n\t\twriter.shouldDeleteIfExists(options.isShouldDeleteIfExists());\n\t\twriter.transactional(options.isTransactional());\n\t\twriter.jsonObjectMarshaller(new JacksonJsonObjectMarshaller<>(objectMapper(new ObjectMapper())));\n\t\treturn writer.build();\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-file/src/main/java/com/redis/riot/file/MapFieldSetMapper.java",
    "content": "package com.redis.riot.file;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.springframework.batch.item.file.mapping.FieldSetMapper;\nimport org.springframework.batch.item.file.transform.FieldSet;\nimport org.springframework.util.StringUtils;\n\npublic class MapFieldSetMapper implements FieldSetMapper<Map<String, Object>> {\n\n\t@Override\n\tpublic Map<String, Object> mapFieldSet(FieldSet fieldSet) {\n\t\tMap<String, Object> fields = new HashMap<>();\n\t\tString[] names = fieldSet.getNames();\n\t\tfor (int index = 0; index < names.length; index++) {\n\t\t\tString value = fieldSet.readString(index);\n\t\t\tif (StringUtils.hasLength(value)) {\n\t\t\t\tfields.put(names[index], value);\n\t\t\t}\n\t\t}\n\t\treturn fields;\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-file/src/main/java/com/redis/riot/file/NamedInputStreamResource.java",
    "content": "package com.redis.riot.file;\n\nimport java.io.InputStream;\n\nimport org.springframework.core.io.InputStreamResource;\n\npublic class NamedInputStreamResource extends InputStreamResource {\n\n\tprivate final String filename;\n\n\tpublic NamedInputStreamResource(InputStream inputStream, String filename, String description) {\n\t\tsuper(inputStream, description);\n\t\tthis.filename = filename;\n\t}\n\n\t@Override\n\tpublic String getFilename() {\n\t\treturn filename;\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-file/src/main/java/com/redis/riot/file/ObjectMapperLineMapper.java",
    "content": "package com.redis.riot.file;\n\nimport org.springframework.batch.item.file.LineMapper;\n\nimport com.fasterxml.jackson.databind.ObjectMapper;\n\npublic class ObjectMapperLineMapper<T> implements LineMapper<T> {\n\n\tprivate final Class<? extends T> valueType;\n\tprivate final ObjectMapper mapper;\n\n\tpublic ObjectMapperLineMapper(ObjectMapper mapper, Class<? extends T> valueType) {\n\t\tthis.mapper = mapper;\n\t\tthis.valueType = valueType;\n\t}\n\n\t@Override\n\tpublic T mapLine(String line, int lineNumber) throws Exception {\n\t\treturn mapper.readValue(line, valueType);\n\t}\n\n}"
  },
  {
    "path": "core/riot-file/src/main/java/com/redis/riot/file/OutputStreamResource.java",
    "content": "package com.redis.riot.file;\n\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.io.OutputStream;\nimport java.util.Objects;\n\nimport org.springframework.core.io.AbstractResource;\nimport org.springframework.core.io.WritableResource;\n\npublic class OutputStreamResource extends AbstractResource implements WritableResource {\n\n\tprivate final OutputStream outStream;\n\tprivate final String filename;\n\tprivate final String desc;\n\n\tpublic OutputStreamResource(OutputStream outStream, String filename, String desc) {\n\t\tthis.outStream = outStream;\n\t\tthis.filename = filename;\n\t\tthis.desc = desc;\n\t}\n\n\t@Override\n\tpublic OutputStream getOutputStream() throws IOException {\n\t\treturn this.outStream;\n\t}\n\n\t@Override\n\tpublic String getDescription() {\n\t\treturn this.desc;\n\t}\n\n\t@Override\n\tpublic String getFilename() {\n\t\treturn filename;\n\t}\n\n\t@Override\n\tpublic InputStream getInputStream() throws IOException {\n\t\tthrow new IOException(\"Unable to create input stream.\");\n\t}\n\n\t@Override\n\tpublic boolean isWritable() {\n\t\treturn true;\n\t}\n\n\t@Override\n\tpublic int hashCode() {\n\t\tfinal int prime = 31;\n\t\tint result = super.hashCode();\n\t\tresult = prime * result + Objects.hash(desc, outStream);\n\t\treturn result;\n\t}\n\n\t@Override\n\tpublic boolean equals(Object obj) {\n\t\treturn super.equals(obj);\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-file/src/main/java/com/redis/riot/file/ReadOptions.java",
    "content": "package com.redis.riot.file;\n\nimport java.util.LinkedHashMap;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Set;\n\nimport com.fasterxml.jackson.databind.JsonDeserializer;\n\nimport lombok.ToString;\n\n@ToString\npublic class ReadOptions extends FileOptions {\n\n\tpublic static final String DEFAULT_CONTINUATION_STRING = \"\\\\\";\n\n\tprivate int maxItemCount;\n\tprivate Set<Integer> includedFields;\n\tprivate String continuationString = DEFAULT_CONTINUATION_STRING;\n\tprivate List<String> fields;\n\tprivate Integer headerLine;\n\tprivate Integer linesToSkip;\n\tprivate List<String> columnRanges;\n\t@SuppressWarnings(\"rawtypes\")\n\tprivate final Map<Class, JsonDeserializer> deserializers = new LinkedHashMap<>();\n\tprivate Class<?> itemType = Map.class;\n\n\tpublic <T> void addDeserializer(Class<T> type, JsonDeserializer<? extends T> deserializer) {\n\t\tdeserializers.put(type, deserializer);\n\t}\n\n\t@SuppressWarnings(\"rawtypes\")\n\tpublic Map<Class, JsonDeserializer> getDeserializers() {\n\t\treturn deserializers;\n\t}\n\n\tpublic Class<?> getItemType() {\n\t\treturn itemType;\n\t}\n\n\tpublic void setItemType(Class<?> type) {\n\t\tthis.itemType = type;\n\t}\n\n\tpublic int getMaxItemCount() {\n\t\treturn maxItemCount;\n\t}\n\n\tpublic void setMaxItemCount(int count) {\n\t\tthis.maxItemCount = count;\n\t}\n\n\tpublic Set<Integer> getIncludedFields() {\n\t\treturn includedFields;\n\t}\n\n\tpublic void setIncludedFields(Set<Integer> fields) {\n\t\tthis.includedFields = fields;\n\t}\n\n\tpublic String getContinuationString() {\n\t\treturn continuationString;\n\t}\n\n\tpublic void setContinuationString(String string) {\n\t\tthis.continuationString = string;\n\t}\n\n\tpublic List<String> getFields() {\n\t\treturn fields;\n\t}\n\n\tpublic void setFields(List<String> fields) {\n\t\tthis.fields = fields;\n\t}\n\n\tpublic Integer getHeaderLine() {\n\t\treturn headerLine;\n\t}\n\n\tpublic void setHeaderLine(Integer headerLine) {\n\t\tthis.headerLine = headerLine;\n\t}\n\n\tpublic Integer getLinesToSkip() {\n\t\treturn linesToSkip;\n\t}\n\n\tpublic void setLinesToSkip(Integer linesToSkip) {\n\t\tthis.linesToSkip = linesToSkip;\n\t}\n\n\tpublic List<String> getColumnRanges() {\n\t\treturn columnRanges;\n\t}\n\n\tpublic void setColumnRanges(List<String> columnRanges) {\n\t\tthis.columnRanges = columnRanges;\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-file/src/main/java/com/redis/riot/file/ReaderFactory.java",
    "content": "package com.redis.riot.file;\n\nimport org.springframework.batch.item.ItemReader;\nimport org.springframework.core.io.Resource;\n\npublic interface ReaderFactory {\n\n\tItemReader<?> create(Resource resource, ReadOptions options);\n\n}\n"
  },
  {
    "path": "core/riot-file/src/main/java/com/redis/riot/file/ResourceFactory.java",
    "content": "package com.redis.riot.file;\n\nimport java.io.IOException;\nimport java.util.HashSet;\nimport java.util.Set;\nimport java.util.zip.GZIPInputStream;\nimport java.util.zip.GZIPOutputStream;\n\nimport org.springframework.core.io.ProtocolResolver;\nimport org.springframework.core.io.Resource;\nimport org.springframework.core.io.WritableResource;\nimport org.springframework.util.Assert;\n\npublic class ResourceFactory {\n\n\tpublic static final String GZ_SUFFIX = \".gz\";\n\n\tprivate Set<ProtocolResolver> protocolResolvers = new HashSet<>();\n\n\tpublic void addProtocolResolver(ProtocolResolver protocolResolver) {\n\t\tprotocolResolvers.add(protocolResolver);\n\t}\n\n\tpublic Resource resource(String location, FileOptions options) throws IOException {\n\t\tResource resource = createResource(location, options);\n\t\tif (isGzip(resource, options)) {\n\t\t\tGZIPInputStream gzipInputStream = new GZIPInputStream(resource.getInputStream());\n\t\t\treturn new NamedInputStreamResource(gzipInputStream, resource.getFilename(), resource.getDescription());\n\t\t}\n\t\treturn resource;\n\t}\n\n\tprivate boolean isGzip(Resource resource, FileOptions options) {\n\t\treturn options.isGzip() || isGzip(resource.getFilename());\n\t}\n\n\tpublic WritableResource writableResource(String location, FileOptions options) throws IOException {\n\t\tResource resource = createResource(location, options);\n\t\tAssert.isInstanceOf(WritableResource.class, resource);\n\t\tif (options.isGzip() || isGzip(resource.getFilename())) {\n\t\t\tGZIPOutputStream gzipOutputStream = new GZIPOutputStream(((WritableResource) resource).getOutputStream());\n\t\t\treturn new OutputStreamResource(gzipOutputStream, resource.getFilename(), resource.getDescription());\n\t\t}\n\t\treturn (WritableResource) resource;\n\t}\n\n\tprivate Resource createResource(String location, FileOptions options) {\n\t\tRiotResourceLoader resourceLoader = new RiotResourceLoader();\n\t\tprotocolResolvers.forEach(resourceLoader::addProtocolResolver);\n\t\tresourceLoader.getS3ProtocolResolver().setClientSupplier(options.getS3Options()::client);\n\t\tresourceLoader.getGoogleStorageProtocolResolver()\n\t\t\t\t.setStorageSupplier(options.getGoogleStorageOptions()::storage);\n\t\treturn resourceLoader.getResource(location);\n\t}\n\n\tpublic static boolean isGzip(String filename) {\n\t\treturn filename.endsWith(GZ_SUFFIX);\n\t}\n\n\tpublic static String stripGzipSuffix(String filename) {\n\t\tif (isGzip(filename)) {\n\t\t\treturn filename.substring(0, filename.length() - GZ_SUFFIX.length());\n\t\t}\n\t\treturn filename;\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-file/src/main/java/com/redis/riot/file/ResourceMap.java",
    "content": "package com.redis.riot.file;\n\nimport org.springframework.core.io.Resource;\nimport org.springframework.util.MimeType;\nimport org.springframework.util.MimeTypeUtils;\n\npublic interface ResourceMap {\n\n\tMimeType CSV = new MimeType(\"text\", \"csv\");\n\tMimeType PSV = new MimeType(\"text\", \"psv\");\n\tMimeType TSV = new MimeType(\"text\", \"tsv\");\n\tMimeType TEXT = new MimeType(\"text\", \"plain\");\n\tMimeType JSON = MimeTypeUtils.APPLICATION_JSON;\n\tMimeType JSON_LINES = new MimeType(\"application\", \"jsonlines\");\n\tMimeType XML = MimeTypeUtils.APPLICATION_XML;\n\n\tMimeType getContentTypeFor(Resource resource);\n\n}\n"
  },
  {
    "path": "core/riot-file/src/main/java/com/redis/riot/file/RiotResourceLoader.java",
    "content": "package com.redis.riot.file;\n\nimport java.net.MalformedURLException;\nimport java.net.URL;\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.LinkedHashSet;\nimport java.util.List;\nimport java.util.Set;\n\nimport org.springframework.core.io.FileSystemResource;\nimport org.springframework.core.io.FileUrlResource;\nimport org.springframework.core.io.ProtocolResolver;\nimport org.springframework.core.io.Resource;\nimport org.springframework.core.io.ResourceLoader;\nimport org.springframework.util.Assert;\nimport org.springframework.util.ClassUtils;\nimport org.springframework.util.ResourceUtils;\n\npublic class RiotResourceLoader implements ResourceLoader {\n\n\tprivate GoogleStorageProtocolResolver googleStorageProtocolResolver = new GoogleStorageProtocolResolver();\n\tprivate S3ProtocolResolver s3ProtocolResolver = new S3ProtocolResolver();\n\n\tprivate Set<ProtocolResolver> protocolResolvers = new LinkedHashSet<>(4);\n\n\t/**\n\t * Register the given resolver with this resource loader, allowing for\n\t * additional protocols to be handled.\n\t * <p>\n\t * Any such resolver will be invoked ahead of this loader's standard resolution\n\t * rules. It may therefore also override any default rules.\n\t * \n\t * @see #getProtocolResolvers()\n\t */\n\tpublic void addProtocolResolver(ProtocolResolver resolver) {\n\t\tAssert.notNull(resolver, \"ProtocolResolver must not be null\");\n\t\tthis.protocolResolvers.add(resolver);\n\t}\n\n\tpublic GoogleStorageProtocolResolver getGoogleStorageProtocolResolver() {\n\t\treturn googleStorageProtocolResolver;\n\t}\n\n\tpublic void setGoogleStorageProtocolResolver(GoogleStorageProtocolResolver resolver) {\n\t\tthis.googleStorageProtocolResolver = resolver;\n\t}\n\n\tpublic S3ProtocolResolver getS3ProtocolResolver() {\n\t\treturn s3ProtocolResolver;\n\t}\n\n\tpublic void setS3ProtocolResolver(S3ProtocolResolver resolver) {\n\t\tthis.s3ProtocolResolver = resolver;\n\t}\n\n\t/**\n\t * Return the collection of currently registered protocol resolvers, allowing\n\t * for introspection as well as modification.\n\t * \n\t * @see #addProtocolResolver(ProtocolResolver)\n\t */\n\tpublic Collection<ProtocolResolver> getProtocolResolvers() {\n\t\treturn this.protocolResolvers;\n\t}\n\n\t@Override\n\tpublic ClassLoader getClassLoader() {\n\t\treturn ClassUtils.getDefaultClassLoader();\n\t}\n\n\t@Override\n\tpublic Resource getResource(String location) {\n\t\tAssert.notNull(location, \"Location must not be null\");\n\t\tfor (ProtocolResolver protocolResolver : allProtocolResolvers()) {\n\t\t\tResource resource = protocolResolver.resolve(location, this);\n\t\t\tif (resource != null) {\n\t\t\t\treturn resource;\n\t\t\t}\n\t\t}\n\t\ttry {\n\t\t\t// Try to parse the location as a URL...\n\t\t\tURL url = ResourceUtils.toURL(location);\n\t\t\treturn (ResourceUtils.isFileURL(url) ? new FileUrlResource(url) : new UncustomizedUrlResource(url));\n\t\t} catch (MalformedURLException ex) {\n\t\t\t// No URL -> resolve as resource path.\n\t\t\treturn new FileSystemResource(location);\n\t\t}\n\t}\n\n\tprivate Iterable<ProtocolResolver> allProtocolResolvers() {\n\t\tList<ProtocolResolver> resolvers = new ArrayList<>();\n\t\tresolvers.add(s3ProtocolResolver);\n\t\tresolvers.add(googleStorageProtocolResolver);\n\t\tresolvers.addAll(protocolResolvers);\n\t\treturn resolvers;\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-file/src/main/java/com/redis/riot/file/RiotResourceMap.java",
    "content": "package com.redis.riot.file;\n\nimport java.io.IOException;\nimport java.net.FileNameMap;\nimport java.net.URLConnection;\nimport java.nio.file.Files;\nimport java.util.LinkedHashSet;\nimport java.util.Set;\n\nimport org.springframework.core.io.Resource;\nimport org.springframework.util.MimeType;\n\npublic class RiotResourceMap implements ResourceMap {\n\n\tprivate final Set<FileNameMap> fileNameMaps = new LinkedHashSet<>();\n\n\tpublic void addFileNameMap(FileNameMap map) {\n\t\tfileNameMaps.add(map);\n\t}\n\n\t@Override\n\tpublic MimeType getContentTypeFor(Resource resource) {\n\t\tString type = null;\n\t\tif (resource.isFile()) {\n\t\t\ttry {\n\t\t\t\ttype = Files.probeContentType(resource.getFile().toPath());\n\t\t\t} catch (IOException e) {\n\t\t\t\t// ignore\n\t\t\t}\n\t\t}\n\t\tif (type == null) {\n\t\t\treturn getContentTypeFor(resource.getFilename());\n\t\t}\n\t\treturn MimeType.valueOf(type);\n\t}\n\n\tpublic MimeType getContentTypeFor(String filename) {\n\t\tString normalizedFilename = ResourceFactory.stripGzipSuffix(filename);\n\t\tString type = URLConnection.guessContentTypeFromName(normalizedFilename);\n\t\tif (type != null) {\n\t\t\treturn MimeType.valueOf(type);\n\t\t}\n\t\tfor (FileNameMap nameMap : fileNameMaps) {\n\t\t\tString mapType = nameMap.getContentTypeFor(normalizedFilename);\n\t\t\tif (mapType != null) {\n\t\t\t\treturn MimeType.valueOf(mapType);\n\t\t\t}\n\t\t}\n\t\tthrow new IllegalArgumentException(\"Could not determine type of \" + filename);\n\t}\n\n\tpublic static RiotResourceMap defaultResourceMap() {\n\t\tRiotResourceMap resourceMap = new RiotResourceMap();\n\t\tresourceMap.addFileNameMap(new JsonLinesFileNameMap());\n\t\treturn resourceMap;\n\t}\n\n\tprivate static class JsonLinesFileNameMap implements FileNameMap {\n\n\t\tpublic static final String JSONL_SUFFIX = \".jsonl\";\n\n\t\t@Override\n\t\tpublic String getContentTypeFor(String fileName) {\n\t\t\tif (fileName == null) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tif (fileName.endsWith(JSONL_SUFFIX)) {\n\t\t\t\treturn JSON_LINES.toString();\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "core/riot-file/src/main/java/com/redis/riot/file/RuntimeIOException.java",
    "content": "package com.redis.riot.file;\n\nimport java.io.IOException;\n\nimport org.springframework.core.NestedRuntimeException;\n\n@SuppressWarnings(\"serial\")\npublic class RuntimeIOException extends NestedRuntimeException {\n\n\tpublic RuntimeIOException(String msg) {\n\t\tsuper(msg);\n\t}\n\n\tpublic RuntimeIOException(String msg, IOException cause) {\n\t\tsuper(msg, cause);\n\t}\n\n}"
  },
  {
    "path": "core/riot-file/src/main/java/com/redis/riot/file/S3Options.java",
    "content": "package com.redis.riot.file;\n\nimport java.net.URI;\n\nimport software.amazon.awssdk.auth.credentials.AnonymousCredentialsProvider;\nimport software.amazon.awssdk.auth.credentials.AwsBasicCredentials;\nimport software.amazon.awssdk.auth.credentials.AwsCredentialsProvider;\nimport software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;\nimport software.amazon.awssdk.regions.Region;\nimport software.amazon.awssdk.services.s3.S3Client;\nimport software.amazon.awssdk.services.s3.S3ClientBuilder;\n\npublic class S3Options {\n\n\tprivate String accessKey;\n\tprivate String secretKey;\n\tprivate Region region;\n\tprivate URI endpoint;\n\n\tpublic S3Client client() {\n\t\tS3ClientBuilder clientBuilder = S3Client.builder();\n\t\tif (region != null) {\n\t\t\tclientBuilder.region(region);\n\t\t}\n\t\tif (endpoint != null) {\n\t\t\tclientBuilder.endpointOverride(endpoint);\n\t\t}\n\t\tclientBuilder.credentialsProvider(credentialsProvider());\n\t\treturn clientBuilder.build();\n\t}\n\n\tprivate AwsCredentialsProvider credentialsProvider() {\n\t\tif (accessKey == null && secretKey == null) {\n\t\t\treturn AnonymousCredentialsProvider.create();\n\t\t}\n\t\treturn StaticCredentialsProvider.create(AwsBasicCredentials.create(accessKey, secretKey));\n\t}\n\n\tpublic String getAccessKey() {\n\t\treturn accessKey;\n\t}\n\n\tpublic void setAccessKey(String accessKey) {\n\t\tthis.accessKey = accessKey;\n\t}\n\n\tpublic String getSecretKey() {\n\t\treturn secretKey;\n\t}\n\n\tpublic void setSecretKey(String secretKey) {\n\t\tthis.secretKey = secretKey;\n\t}\n\n\tpublic Region getRegion() {\n\t\treturn region;\n\t}\n\n\tpublic void setRegion(Region region) {\n\t\tthis.region = region;\n\t}\n\n\tpublic URI getEndpoint() {\n\t\treturn endpoint;\n\t}\n\n\tpublic void setEndpoint(URI endpoint) {\n\t\tthis.endpoint = endpoint;\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-file/src/main/java/com/redis/riot/file/S3ProtocolResolver.java",
    "content": "package com.redis.riot.file;\n\nimport java.util.function.Supplier;\n\nimport org.springframework.core.io.ProtocolResolver;\nimport org.springframework.core.io.Resource;\nimport org.springframework.core.io.ResourceLoader;\nimport org.springframework.util.ClassUtils;\n\nimport io.awspring.cloud.s3.InMemoryBufferingS3OutputStreamProvider;\nimport io.awspring.cloud.s3.Location;\nimport io.awspring.cloud.s3.PropertiesS3ObjectContentTypeResolver;\nimport io.awspring.cloud.s3.S3ObjectContentTypeResolver;\nimport io.awspring.cloud.s3.S3OutputStreamProvider;\nimport io.awspring.cloud.s3.S3Resource;\nimport software.amazon.awssdk.services.s3.S3Client;\n\npublic class S3ProtocolResolver implements ProtocolResolver, ResourceLoader {\n\n\tprivate Supplier<S3Client> clientSupplier;\n\tprivate S3Client client;\n\tprivate S3OutputStreamProvider outputStreamProvider;\n\n\t@Override\n\tpublic Resource resolve(String location, ResourceLoader resourceLoader) {\n\t\tif (isS3(location)) {\n\t\t\treturn getResource(location);\n\t\t}\n\t\treturn null;\n\t}\n\n\tprivate boolean isS3(String location) {\n\t\treturn location.startsWith(Location.S3_PROTOCOL_PREFIX);\n\t}\n\n\t@Override\n\tpublic Resource getResource(String location) {\n\t\treturn new S3Resource(location, client(), outputStreamProvider());\n\t}\n\n\tprivate S3Client client() {\n\t\tif (client == null) {\n\t\t\tclient = clientSupplier.get();\n\t\t}\n\t\treturn client;\n\t}\n\n\tpublic S3OutputStreamProvider outputStreamProvider() {\n\t\tif (outputStreamProvider == null) {\n\t\t\tS3ObjectContentTypeResolver contentTypeResolver = new PropertiesS3ObjectContentTypeResolver();\n\t\t\toutputStreamProvider = new InMemoryBufferingS3OutputStreamProvider(client(), contentTypeResolver);\n\t\t}\n\t\treturn outputStreamProvider;\n\t}\n\n\t@Override\n\tpublic ClassLoader getClassLoader() {\n\t\treturn ClassUtils.getDefaultClassLoader();\n\t}\n\n\tpublic void setClient(S3Client client) {\n\t\tthis.client = client;\n\t}\n\n\tpublic void setClientSupplier(Supplier<S3Client> clientSupplier) {\n\t\tthis.clientSupplier = clientSupplier;\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-file/src/main/java/com/redis/riot/file/StdInProtocolResolver.java",
    "content": "package com.redis.riot.file;\n\nimport org.springframework.core.io.ProtocolResolver;\nimport org.springframework.core.io.Resource;\nimport org.springframework.core.io.ResourceLoader;\n\npublic class StdInProtocolResolver implements ProtocolResolver {\n\n\tpublic static final String DEFAULT_FILENAME = SystemInResource.FILENAME;\n\n\tprivate String filename;\n\n\tpublic StdInProtocolResolver() {\n\t\tsetFilename(DEFAULT_FILENAME);\n\t}\n\n\tpublic String getFilename() {\n\t\treturn filename;\n\t}\n\n\tpublic void setFilename(String filename) {\n\t\tthis.filename = filename;\n\t}\n\n\t@Override\n\tpublic Resource resolve(String location, ResourceLoader resourceLoader) {\n\t\tif (location.equals(filename)) {\n\t\t\treturn new SystemInResource();\n\t\t}\n\t\treturn null;\n\t}\n}\n"
  },
  {
    "path": "core/riot-file/src/main/java/com/redis/riot/file/StdOutProtocolResolver.java",
    "content": "package com.redis.riot.file;\n\nimport org.springframework.core.io.ProtocolResolver;\nimport org.springframework.core.io.ResourceLoader;\nimport org.springframework.core.io.WritableResource;\n\npublic class StdOutProtocolResolver implements ProtocolResolver {\n\n\tpublic static final String DEFAULT_FILENAME = SystemOutResource.FILENAME;\n\n\tprivate String filename = DEFAULT_FILENAME;\n\n\tpublic void setFilename(String filename) {\n\t\tthis.filename = filename;\n\t}\n\n\t@Override\n\tpublic WritableResource resolve(String location, ResourceLoader resourceLoader) {\n\t\tif (location.equals(filename)) {\n\t\t\treturn new SystemOutResource();\n\t\t}\n\t\treturn null;\n\t}\n}\n"
  },
  {
    "path": "core/riot-file/src/main/java/com/redis/riot/file/SystemInResource.java",
    "content": "package com.redis.riot.file;\n\nimport java.io.InputStream;\n\npublic class SystemInResource extends NamedInputStreamResource {\n\n\tpublic static final String FILENAME = \"stdin\";\n\tpublic static final String DESCRIPTION = \"Standard Input\";\n\n\tpublic SystemInResource() {\n\t\tthis(System.in);\n\t}\n\n\tpublic SystemInResource(InputStream inputStream) {\n\t\tsuper(inputStream, FILENAME, DESCRIPTION);\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-file/src/main/java/com/redis/riot/file/SystemOutResource.java",
    "content": "package com.redis.riot.file;\n\nimport java.io.OutputStream;\n\npublic class SystemOutResource extends OutputStreamResource {\n\n\tpublic static final String FILENAME = \"stdout\";\n\tpublic static final String DESCRIPTION = \"Standard Output\";\n\n\tpublic SystemOutResource() {\n\t\tthis(System.out);\n\t}\n\n\tpublic SystemOutResource(OutputStream outputStream) {\n\t\tsuper(outputStream, FILENAME, DESCRIPTION);\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-file/src/main/java/com/redis/riot/file/UncustomizedUrlResource.java",
    "content": "package com.redis.riot.file;\n\nimport org.springframework.core.io.UrlResource;\n\nimport java.io.IOException;\nimport java.net.HttpURLConnection;\nimport java.net.MalformedURLException;\nimport java.net.URI;\nimport java.net.URL;\n\npublic class UncustomizedUrlResource extends UrlResource {\n\n\tpublic UncustomizedUrlResource(String path) throws MalformedURLException {\n\t\tsuper(path);\n\t}\n\n\tpublic UncustomizedUrlResource(URI uri) throws MalformedURLException {\n\t\tsuper(uri);\n\t}\n\n\tpublic UncustomizedUrlResource(URL url) {\n\t\tsuper(url);\n\t}\n\n\t@Override\n\tprotected void customizeConnection(HttpURLConnection con) throws IOException {\n\t\t// do nothing\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-file/src/main/java/com/redis/riot/file/WriteOptions.java",
    "content": "package com.redis.riot.file;\n\nimport java.util.Map;\nimport java.util.function.Supplier;\n\nimport lombok.ToString;\n\n@ToString\npublic class WriteOptions extends FileOptions {\n\n\tpublic static final String DEFAULT_LINE_SEPARATOR = System.getProperty(\"line.separator\");\n\tpublic static final boolean DEFAULT_SHOULD_DELETE_IF_EXISTS = true;\n\tpublic static final boolean DEFAULT_TRANSACTIONAL = true;\n\tpublic static final String DEFAULT_ELEMENT_NAME = \"record\";\n\tpublic static final String DEFAULT_ROOT_NAME = \"root\";\n\n\tprivate String formatterString;\n\tprivate boolean append;\n\tprivate boolean forceSync;\n\tprivate String lineSeparator = DEFAULT_LINE_SEPARATOR;\n\tprivate boolean shouldDeleteIfEmpty;\n\tprivate boolean shouldDeleteIfExists = DEFAULT_SHOULD_DELETE_IF_EXISTS;\n\tprivate boolean transactional = DEFAULT_TRANSACTIONAL;\n\tprivate String rootName = DEFAULT_ROOT_NAME;\n\tprivate String elementName = DEFAULT_ELEMENT_NAME;\n\tprivate Supplier<Map<String, Object>> headerSupplier = () -> null;\n\n\tpublic Supplier<Map<String, Object>> getHeaderSupplier() {\n\t\treturn headerSupplier;\n\t}\n\n\tpublic void setHeaderSupplier(Supplier<Map<String, Object>> headerSupplier) {\n\t\tthis.headerSupplier = headerSupplier;\n\t}\n\n\tpublic String getRootName() {\n\t\treturn rootName;\n\t}\n\n\tpublic void setRootName(String name) {\n\t\tthis.rootName = name;\n\t}\n\n\tpublic String getElementName() {\n\t\treturn elementName;\n\t}\n\n\tpublic void setElementName(String name) {\n\t\tthis.elementName = name;\n\t}\n\n\tpublic boolean isAppend() {\n\t\treturn append;\n\t}\n\n\tpublic void setAppend(boolean append) {\n\t\tthis.append = append;\n\t}\n\n\tpublic boolean isForceSync() {\n\t\treturn forceSync;\n\t}\n\n\tpublic void setForceSync(boolean forceSync) {\n\t\tthis.forceSync = forceSync;\n\t}\n\n\tpublic String getLineSeparator() {\n\t\treturn lineSeparator;\n\t}\n\n\tpublic void setLineSeparator(String separator) {\n\t\tthis.lineSeparator = separator;\n\t}\n\n\tpublic boolean isShouldDeleteIfEmpty() {\n\t\treturn shouldDeleteIfEmpty;\n\t}\n\n\tpublic void setShouldDeleteIfEmpty(boolean delete) {\n\t\tthis.shouldDeleteIfEmpty = delete;\n\t}\n\n\tpublic boolean isShouldDeleteIfExists() {\n\t\treturn shouldDeleteIfExists;\n\t}\n\n\tpublic void setShouldDeleteIfExists(boolean delete) {\n\t\tthis.shouldDeleteIfExists = delete;\n\t}\n\n\tpublic String getFormatterString() {\n\t\treturn formatterString;\n\t}\n\n\tpublic void setFormatterString(String formatterString) {\n\t\tthis.formatterString = formatterString;\n\t}\n\n\tpublic boolean isTransactional() {\n\t\treturn transactional;\n\t}\n\n\tpublic void setTransactional(boolean transactional) {\n\t\tthis.transactional = transactional;\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-file/src/main/java/com/redis/riot/file/WriterFactory.java",
    "content": "package com.redis.riot.file;\n\nimport org.springframework.batch.item.ItemWriter;\nimport org.springframework.core.io.WritableResource;\n\npublic interface WriterFactory {\n\n\tItemWriter<?> create(WritableResource resource, WriteOptions options);\n}\n"
  },
  {
    "path": "core/riot-file/src/main/java/com/redis/riot/file/XmlReaderFactory.java",
    "content": "package com.redis.riot.file;\n\nimport org.springframework.batch.item.ItemReader;\nimport org.springframework.core.io.Resource;\n\nimport com.fasterxml.jackson.dataformat.xml.XmlMapper;\nimport com.redis.riot.file.xml.XmlItemReaderBuilder;\nimport com.redis.riot.file.xml.XmlObjectReader;\n\npublic class XmlReaderFactory extends AbstractReaderFactory {\n\n\t@Override\n\tpublic ItemReader<?> create(Resource resource, ReadOptions options) {\n\t\tXmlItemReaderBuilder<Object> builder = new XmlItemReaderBuilder<>();\n\t\tbuilder.name(resource.getFilename() + \"-xml-file-reader\");\n\t\tbuilder.resource(resource);\n\t\tXmlObjectReader<Object> objectReader = new XmlObjectReader<>(options.getItemType());\n\t\tobjectReader.setMapper(objectMapper(new XmlMapper(), options));\n\t\tbuilder.xmlObjectReader(objectReader);\n\t\tif (options.getMaxItemCount() > 0) {\n\t\t\tbuilder.maxItemCount(options.getMaxItemCount());\n\t\t}\n\t\treturn builder.build();\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-file/src/main/java/com/redis/riot/file/XmlWriterFactory.java",
    "content": "package com.redis.riot.file;\n\nimport org.springframework.batch.item.ItemWriter;\nimport org.springframework.batch.item.json.JacksonJsonObjectMarshaller;\nimport org.springframework.core.io.WritableResource;\n\nimport com.fasterxml.jackson.dataformat.xml.XmlMapper;\nimport com.redis.riot.file.xml.XmlResourceItemWriterBuilder;\n\npublic class XmlWriterFactory extends AbstractWriterFactory {\n\n\t@Override\n\tpublic ItemWriter<?> create(WritableResource resource, WriteOptions options) {\n\t\tXmlResourceItemWriterBuilder<?> writer = new XmlResourceItemWriterBuilder<>();\n\t\twriter.name(resource.getFilename());\n\t\twriter.append(options.isAppend());\n\t\twriter.encoding(options.getEncoding());\n\t\twriter.lineSeparator(options.getLineSeparator());\n\t\twriter.rootName(options.getRootName());\n\t\twriter.resource(resource);\n\t\twriter.saveState(false);\n\t\tXmlMapper mapper = objectMapper(new XmlMapper());\n\t\tmapper.setConfig(mapper.getSerializationConfig().withRootName(options.getElementName()));\n\t\twriter.xmlObjectMarshaller(new JacksonJsonObjectMarshaller<>(mapper));\n\t\treturn writer.build();\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-file/src/main/java/com/redis/riot/file/xml/XmlItemReader.java",
    "content": "package com.redis.riot.file.xml;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.springframework.batch.item.ItemStreamReader;\nimport org.springframework.batch.item.file.ResourceAwareItemReaderItemStream;\nimport org.springframework.batch.item.support.AbstractItemCountingItemStreamItemReader;\nimport org.springframework.core.io.Resource;\nimport org.springframework.lang.Nullable;\nimport org.springframework.util.Assert;\n\n/**\n * {@link ItemStreamReader} implementation that reads XML objects from a\n * {@link Resource} having the following format:\n * \n * <pre>\n * {@code\n * <root>\n *    <item>...</item>\n *    <item>...</item>\n * </root>\n * }\n * </pre>\n * \n * The implementation is <b>not</b> thread-safe.\n *\n * @param <T> the type of XML objects to read\n *\n * @author Julien Ruaux\n */\npublic class XmlItemReader<T> extends AbstractItemCountingItemStreamItemReader<T>\n\t\timplements ResourceAwareItemReaderItemStream<T> {\n\n\tprivate final Log log = LogFactory.getLog(XmlItemReader.class);\n\n\tprivate Resource resource;\n\n\tprivate XmlObjectReader<T> xmlObjectReader;\n\n\tprivate boolean strict = true;\n\n\t/**\n\t * Create a new {@link XmlItemReader} instance.\n\t * \n\t * @param resource        the input XML resource\n\t * @param xmlObjectReader the XML object reader to use\n\t */\n\tpublic XmlItemReader(Resource resource, XmlObjectReader<T> xmlObjectReader) {\n\t\tAssert.notNull(resource, \"The resource must not be null.\");\n\t\tAssert.notNull(xmlObjectReader, \"The XML object reader must not be null.\");\n\t\tthis.resource = resource;\n\t\tthis.xmlObjectReader = xmlObjectReader;\n\t}\n\n\t/**\n\t * Set the {@link XmlObjectReader} to use to read and map XML elements to domain\n\t * objects.\n\t * \n\t * @param xmlObjectReader the XML object reader to use\n\t */\n\tpublic void setXmlObjectReader(XmlObjectReader<T> xmlObjectReader) {\n\t\tthis.xmlObjectReader = xmlObjectReader;\n\t}\n\n\t/**\n\t * In strict mode the reader will throw an exception on\n\t * {@link #open(org.springframework.batch.item.ExecutionContext)} if the input\n\t * resource does not exist.\n\t * \n\t * @param strict true by default\n\t */\n\tpublic void setStrict(boolean strict) {\n\t\tthis.strict = strict;\n\t}\n\n\t@Override\n\tpublic void setResource(Resource resource) {\n\t\tthis.resource = resource;\n\t}\n\n\t@Nullable\n\t@Override\n\tprotected T doRead() throws Exception {\n\t\treturn xmlObjectReader.read();\n\t}\n\n\t@Override\n\tprotected void doOpen() throws Exception {\n\t\tif (!this.resource.exists()) {\n\t\t\tif (this.strict) {\n\t\t\t\tthrow new IllegalStateException(\"Input resource must exist (reader is in 'strict' mode)\");\n\t\t\t}\n\t\t\tlog.warn(\"Input resource does not exist: \" + resource.getDescription());\n\t\t\treturn;\n\t\t}\n\t\tif (!this.resource.isReadable()) {\n\t\t\tif (this.strict) {\n\t\t\t\tthrow new IllegalStateException(\"Input resource must be readable (reader is in 'strict' mode)\");\n\t\t\t}\n\t\t\tlog.warn(\"Input resource is not readable: \" + resource.getDescription());\n\t\t\treturn;\n\t\t}\n\t\tthis.xmlObjectReader.open(this.resource);\n\t}\n\n\t@Override\n\tprotected void doClose() throws Exception {\n\t\tthis.xmlObjectReader.close();\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-file/src/main/java/com/redis/riot/file/xml/XmlItemReaderBuilder.java",
    "content": "package com.redis.riot.file.xml;\n\nimport org.springframework.core.io.Resource;\nimport org.springframework.util.Assert;\nimport org.springframework.util.StringUtils;\n\npublic class XmlItemReaderBuilder<T> {\n\n\tprivate XmlObjectReader<T> xmlObjectReader;\n\n\tprivate Resource resource;\n\n\tprivate String name;\n\n\tprivate boolean strict = true;\n\n\tprivate boolean saveState = true;\n\n\tprivate int maxItemCount = Integer.MAX_VALUE;\n\n\tprivate int currentItemCount;\n\n\t/**\n\t * Set the {@link XmlObjectReader} to use to read and map XML objects to domain\n\t * objects.\n\t * \n\t * @param xmlObjectReader to use\n\t * @return The current instance of the builder.\n\t * @see XmlItemReader#setXmlObjectReader(XmlObjectReader)\n\t */\n\tpublic XmlItemReaderBuilder<T> xmlObjectReader(XmlObjectReader<T> xmlObjectReader) {\n\t\tthis.xmlObjectReader = xmlObjectReader;\n\t\treturn this;\n\t}\n\n\t/**\n\t * The {@link Resource} to be used as input.\n\t * \n\t * @param resource the input to the reader.\n\t * @return The current instance of the builder.\n\t * @see XmlItemReader#setResource(Resource)\n\t */\n\tpublic XmlItemReaderBuilder<T> resource(Resource resource) {\n\t\tthis.resource = resource;\n\t\treturn this;\n\t}\n\n\t/**\n\t * The name used to calculate the key within the\n\t * {@link org.springframework.batch.item.ExecutionContext}. Required if\n\t * {@link #saveState(boolean)} is set to true.\n\t * \n\t * @param name name of the reader instance\n\t * @return The current instance of the builder.\n\t * @see org.springframework.batch.item.ItemStreamSupport#setName(String)\n\t */\n\tpublic XmlItemReaderBuilder<T> name(String name) {\n\t\tthis.name = name;\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Setting this value to true indicates that it is an error if the input does\n\t * not exist and an exception will be thrown. Defaults to true.\n\t * \n\t * @param strict indicates the input resource must exist\n\t * @return The current instance of the builder.\n\t * @see XmlItemReader#setStrict(boolean)\n\t */\n\tpublic XmlItemReaderBuilder<T> strict(boolean strict) {\n\t\tthis.strict = strict;\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Configure if the state of the\n\t * {@link org.springframework.batch.item.ItemStreamSupport} should be persisted\n\t * within the {@link org.springframework.batch.item.ExecutionContext} for\n\t * restart purposes.\n\t * \n\t * @param saveState defaults to true\n\t * @return The current instance of the builder.\n\t */\n\tpublic XmlItemReaderBuilder<T> saveState(boolean saveState) {\n\t\tthis.saveState = saveState;\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Configure the max number of items to be read.\n\t * \n\t * @param maxItemCount the max items to be read\n\t * @return The current instance of the builder.\n\t * @see org.springframework.batch.item.support.AbstractItemCountingItemStreamItemReader#setMaxItemCount(int)\n\t */\n\tpublic XmlItemReaderBuilder<T> maxItemCount(int maxItemCount) {\n\t\tthis.maxItemCount = maxItemCount;\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Index for the current item. Used on restarts to indicate where to start from.\n\t * \n\t * @param currentItemCount current index\n\t * @return The current instance of the builder.\n\t * @see org.springframework.batch.item.support.AbstractItemCountingItemStreamItemReader#setCurrentItemCount(int)\n\t */\n\tpublic XmlItemReaderBuilder<T> currentItemCount(int currentItemCount) {\n\t\tthis.currentItemCount = currentItemCount;\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Validate the configuration and build a new {@link XmlItemReader}.\n\t * \n\t * @return a new instance of the {@link XmlItemReader}\n\t */\n\tpublic XmlItemReader<T> build() {\n\t\tAssert.notNull(this.xmlObjectReader, \"A XML object reader is required.\");\n\t\tAssert.notNull(this.resource, \"A resource is required.\");\n\t\tif (this.saveState) {\n\t\t\tAssert.state(StringUtils.hasText(this.name), \"A name is required when saveState is set to true.\");\n\t\t}\n\n\t\tXmlItemReader<T> reader = new XmlItemReader<>(this.resource, this.xmlObjectReader);\n\t\treader.setName(this.name);\n\t\treader.setStrict(this.strict);\n\t\treader.setSaveState(this.saveState);\n\t\treader.setMaxItemCount(this.maxItemCount);\n\t\treader.setCurrentItemCount(this.currentItemCount);\n\n\t\treturn reader;\n\t}\n}\n"
  },
  {
    "path": "core/riot-file/src/main/java/com/redis/riot/file/xml/XmlObjectReader.java",
    "content": "package com.redis.riot.file.xml;\n\nimport com.fasterxml.jackson.core.JsonParseException;\nimport com.fasterxml.jackson.dataformat.xml.XmlMapper;\nimport com.redis.riot.file.xml.XmlObjectReader;\n\nimport org.springframework.core.io.Resource;\nimport org.springframework.lang.Nullable;\nimport org.springframework.util.Assert;\n\nimport javax.xml.stream.XMLInputFactory;\nimport javax.xml.stream.XMLStreamReader;\nimport java.io.InputStream;\n\n/**\n * \n * @author Julien Ruaux\n *\n * @param <T> type of the target object\n */\npublic class XmlObjectReader<T> {\n\n\tprivate Class<? extends T> itemType;\n\tprivate XMLStreamReader reader;\n\tprivate XmlMapper mapper = new XmlMapper();\n\tprivate InputStream inputStream;\n\n\t/**\n\t * Create a new {@link XmlObjectReader} instance.\n\t * \n\t * @param itemType the target item type\n\t */\n\tpublic XmlObjectReader(Class<? extends T> itemType) {\n\t\tthis.itemType = itemType;\n\t}\n\n\t/**\n\t * Set the object mapper to use to map Xml objects to domain objects.\n\t * \n\t * @param mapper the object mapper to use\n\t */\n\tpublic void setMapper(XmlMapper mapper) {\n\t\tAssert.notNull(mapper, \"The mapper must not be null\");\n\t\tthis.mapper = mapper;\n\t}\n\n\tpublic void open(Resource resource) throws Exception {\n\t\tAssert.notNull(resource, \"The resource must not be null\");\n\t\tthis.inputStream = resource.getInputStream();\n\t\tthis.reader = XMLInputFactory.newFactory().createXMLStreamReader(this.inputStream);\n\t\tthis.mapper = new XmlMapper();\n\t\tif (reader.hasNext()) {\n\t\t\treader.next(); // point to root element\n\t\t} else {\n\t\t\tthrow new Exception(\"XML not in the form <root><element>...</element></root>\");\n\t\t}\n\t\tif (reader.hasNext()) {\n\t\t\treader.next(); // point to first element under root\n\t\t} else {\n\t\t\tthrow new Exception(\"XML not in the form <root><element>...</element></root>\");\n\t\t}\n\t}\n\n\t@Nullable\n\tpublic T read() throws Exception {\n\t\tif (reader.hasNext()) {\n\t\t\ttry {\n\t\t\t\treturn mapper.readValue(reader, itemType);\n\t\t\t} catch (JsonParseException e) {\n\t\t\t\t// reached end of stream, ignore\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic void close() throws Exception {\n\t\tthis.inputStream.close();\n\t\tthis.reader.close();\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-file/src/main/java/com/redis/riot/file/xml/XmlResourceItemWriter.java",
    "content": "/*\n * Copyright 2018 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *       https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage com.redis.riot.file.xml;\n\nimport java.util.Iterator;\n\nimport org.springframework.batch.item.Chunk;\nimport org.springframework.batch.item.json.JsonObjectMarshaller;\nimport org.springframework.core.io.Resource;\nimport org.springframework.core.io.WritableResource;\nimport org.springframework.util.Assert;\nimport org.springframework.util.ClassUtils;\n\nimport com.fasterxml.jackson.dataformat.xml.XmlMapper;\nimport com.redis.spring.batch.resource.AbstractFileItemWriter;\n\n/**\n * Item writer that writes data in XML format to an output file. The location of\n * the output file is defined by a {@link Resource} and must represent a\n * writable file. Items are transformed to XML format using a {@link XmlMapper}.\n * Items will be enclosed in a XML element as follows:\n * \n * <pre>\n * {@code\n * <root>\n *  <record>...</record>\n *  <record>...</record>\n *  <record>...</record>\n * </root>\n * }\n * </pre>\n * \n * The implementation is <b>not</b> thread-safe.\n *\n */\npublic class XmlResourceItemWriter<T> extends AbstractFileItemWriter<T> {\n\n\tprivate JsonObjectMarshaller<T> xmlObjectMarshaller;\n\n\t/**\n\t * Create a new {@link XmlResourceItemWriter} instance.\n\t * \n\t * @param resource            to write XML data to\n\t * @param rootName            XML root element tag name\n\t * @param xmlObjectMarshaller used to marshal object into XML representation\n\t */\n\tpublic XmlResourceItemWriter(WritableResource resource, String rootName,\n\t\t\tJsonObjectMarshaller<T> xmlObjectMarshaller) {\n\t\tAssert.notNull(resource, \"resource must not be null\");\n\t\tAssert.notNull(rootName, \"root name must not be null\");\n\t\tAssert.notNull(xmlObjectMarshaller, \"xml object writer must not be null\");\n\t\tsetResource(resource);\n\t\tsetRootName(rootName);\n\t\tsetXmlObjectMarshaller(xmlObjectMarshaller);\n\t\tsetExecutionContextName(ClassUtils.getShortName(XmlResourceItemWriter.class));\n\t}\n\n\tpublic void setRootName(String rootName) {\n\t\tsetHeaderCallback(writer -> writer.write(\"<\" + rootName + \">\"));\n\t\tsetFooterCallback(writer -> writer.write(this.lineSeparator + \"</\" + rootName + \">\" + this.lineSeparator));\n\t}\n\n\t/**\n\t * Assert that mandatory properties (xmlObjectMarshaller) are set.\n\t *\n\t * @see org.springframework.beans.factory.InitializingBean#afterPropertiesSet()\n\t */\n\t@Override\n\tpublic void afterPropertiesSet() throws Exception {\n\t\tif (this.append) {\n\t\t\tthis.shouldDeleteIfExists = false;\n\t\t}\n\t}\n\n\t/**\n\t * Set the {@link JsonObjectMarshaller} to use to marshal object to XML.\n\t * \n\t * @param objectMarshaller the marshaller to use\n\t */\n\tpublic void setXmlObjectMarshaller(JsonObjectMarshaller<T> objectMarshaller) {\n\t\tthis.xmlObjectMarshaller = objectMarshaller;\n\t}\n\n\t@Override\n\tpublic String doWrite(Chunk<? extends T> items) {\n\t\tStringBuilder lines = new StringBuilder();\n\t\tIterator<? extends T> iterator = items.iterator();\n\t\tif (!items.isEmpty() && state.getLinesWritten() > 0) {\n\t\t\tlines.append(this.lineSeparator);\n\t\t}\n\t\twhile (iterator.hasNext()) {\n\t\t\tT item = iterator.next();\n\t\t\tlines.append(' ').append(this.xmlObjectMarshaller.marshal(item));\n\t\t\tif (iterator.hasNext()) {\n\t\t\t\tlines.append(this.lineSeparator);\n\t\t\t}\n\t\t}\n\t\treturn lines.toString();\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-file/src/main/java/com/redis/riot/file/xml/XmlResourceItemWriterBuilder.java",
    "content": "/*\n * Copyright 2018 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *       https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npackage com.redis.riot.file.xml;\n\nimport org.springframework.batch.item.file.FlatFileFooterCallback;\nimport org.springframework.batch.item.file.FlatFileHeaderCallback;\nimport org.springframework.batch.item.json.JsonObjectMarshaller;\nimport org.springframework.core.io.Resource;\nimport org.springframework.core.io.WritableResource;\nimport org.springframework.util.Assert;\n\nimport com.redis.spring.batch.resource.AbstractFileItemWriter;\n\n/**\n * Builder for {@link XmlResourceItemWriter}.\n *\n * @param <T> type of objects to write as XML output.\n */\npublic class XmlResourceItemWriterBuilder<T> {\n\n\tprivate WritableResource resource;\n\tprivate String rootName;\n\tprivate JsonObjectMarshaller<T> xmlObjectMarshaller;\n\tprivate FlatFileHeaderCallback headerCallback;\n\tprivate FlatFileFooterCallback footerCallback;\n\n\tprivate String name;\n\tprivate String encoding = AbstractFileItemWriter.DEFAULT_CHARSET;\n\tprivate String lineSeparator = AbstractFileItemWriter.DEFAULT_LINE_SEPARATOR;\n\n\tprivate boolean append = false;\n\tprivate boolean saveState = true;\n\tprivate boolean shouldDeleteIfExists = true;\n\tprivate boolean shouldDeleteIfEmpty = false;\n\n\t/**\n\t * Configure if the state of the\n\t * {@link org.springframework.batch.item.ItemStreamSupport} should be persisted\n\t * within the {@link org.springframework.batch.item.ExecutionContext} for\n\t * restart purposes.\n\t *\n\t * @param saveState defaults to true\n\t * @return The current instance of the builder.\n\t */\n\tpublic XmlResourceItemWriterBuilder<T> saveState(boolean saveState) {\n\t\tthis.saveState = saveState;\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * The name used to calculate the key within the\n\t * {@link org.springframework.batch.item.ExecutionContext}. Required if\n\t * {@link #saveState(boolean)} is set to true.\n\t *\n\t * @param name name of the reader instance\n\t * @return The current instance of the builder.\n\t * @see org.springframework.batch.item.ItemStreamSupport#setName(String)\n\t */\n\tpublic XmlResourceItemWriterBuilder<T> name(String name) {\n\t\tthis.name = name;\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * String used to separate lines in output. Defaults to the System property\n\t * <code>line.separator</code>.\n\t *\n\t * @param lineSeparator value to use for a line separator\n\t * @return The current instance of the builder.\n\t * @see XmlResourceItemWriter#setLineSeparator(String)\n\t */\n\tpublic XmlResourceItemWriterBuilder<T> lineSeparator(String lineSeparator) {\n\t\tthis.lineSeparator = lineSeparator;\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Set the {@link JsonObjectMarshaller} to use to marshal objects to XML.\n\t *\n\t * @param xmlObjectMarshaller to use\n\t * @return The current instance of the builder.\n\t * @see XmlResourceItemWriter#setXmlObjectMarshaller(JsonObjectMarshaller)\n\t */\n\tpublic XmlResourceItemWriterBuilder<T> xmlObjectMarshaller(JsonObjectMarshaller<T> xmlObjectMarshaller) {\n\t\tthis.xmlObjectMarshaller = xmlObjectMarshaller;\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * The {@link Resource} to be used as output.\n\t *\n\t * @param resource the output of the writer.\n\t * @return The current instance of the builder.\n\t */\n\tpublic XmlResourceItemWriterBuilder<T> resource(WritableResource resource) {\n\t\tthis.resource = resource;\n\n\t\treturn this;\n\t}\n\n\tpublic XmlResourceItemWriterBuilder<T> rootName(String rootName) {\n\t\tthis.rootName = rootName;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Encoding used for output.\n\t *\n\t * @param encoding encoding type.\n\t * @return The current instance of the builder.\n\t * @see XmlResourceItemWriter#setEncoding(String)\n\t */\n\tpublic XmlResourceItemWriterBuilder<T> encoding(String encoding) {\n\t\tthis.encoding = encoding;\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * If set to true, once the step is complete, if the resource previously\n\t * provided is empty, it will be deleted.\n\t *\n\t * @param shouldDelete defaults to false\n\t * @return The current instance of the builder\n\t * @see XmlResourceItemWriter#setShouldDeleteIfEmpty(boolean)\n\t */\n\tpublic XmlResourceItemWriterBuilder<T> shouldDeleteIfEmpty(boolean shouldDelete) {\n\t\tthis.shouldDeleteIfEmpty = shouldDelete;\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * If set to true, upon the start of the step, if the resource already exists,\n\t * it will be deleted and recreated.\n\t *\n\t * @param shouldDelete defaults to true\n\t * @return The current instance of the builder\n\t * @see XmlResourceItemWriter#setShouldDeleteIfExists(boolean)\n\t */\n\tpublic XmlResourceItemWriterBuilder<T> shouldDeleteIfExists(boolean shouldDelete) {\n\t\tthis.shouldDeleteIfExists = shouldDelete;\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * If set to true and the file exists, the output will be appended to the\n\t * existing file.\n\t *\n\t * @param append defaults to false\n\t * @return The current instance of the builder\n\t * @see XmlResourceItemWriter#setAppendAllowed(boolean)\n\t */\n\tpublic XmlResourceItemWriterBuilder<T> append(boolean append) {\n\t\tthis.append = append;\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * A callback for header processing.\n\t *\n\t * @param callback {@link FlatFileHeaderCallback} implementation\n\t * @return The current instance of the builder\n\t * @see XmlResourceItemWriter#setHeaderCallback(FlatFileHeaderCallback)\n\t */\n\tpublic XmlResourceItemWriterBuilder<T> headerCallback(FlatFileHeaderCallback callback) {\n\t\tthis.headerCallback = callback;\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * A callback for footer processing.\n\t *\n\t * @param callback {@link FlatFileFooterCallback} implementation\n\t * @return The current instance of the builder\n\t * @see XmlResourceItemWriter#setFooterCallback(FlatFileFooterCallback)\n\t */\n\tpublic XmlResourceItemWriterBuilder<T> footerCallback(FlatFileFooterCallback callback) {\n\t\tthis.footerCallback = callback;\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Validate the configuration and build a new {@link XmlResourceItemWriter}.\n\t *\n\t * @return a new instance of the {@link XmlResourceItemWriter}\n\t */\n\tpublic XmlResourceItemWriter<T> build() {\n\t\tAssert.notNull(this.resource, \"A resource is required.\");\n\t\tAssert.notNull(this.rootName, \"A root name is required.\");\n\t\tAssert.notNull(this.xmlObjectMarshaller, \"An xml object marshaller is required.\");\n\n\t\tif (this.saveState) {\n\t\t\tAssert.hasText(this.name, \"A name is required when saveState is true\");\n\t\t}\n\n\t\tXmlResourceItemWriter<T> xmlResourceItemWriter = new XmlResourceItemWriter<>(this.resource, this.rootName,\n\t\t\t\tthis.xmlObjectMarshaller);\n\n\t\txmlResourceItemWriter.setName(this.name);\n\t\txmlResourceItemWriter.setAppendAllowed(this.append);\n\t\txmlResourceItemWriter.setEncoding(this.encoding);\n\t\tif (this.headerCallback != null) {\n\t\t\txmlResourceItemWriter.setHeaderCallback(this.headerCallback);\n\t\t}\n\t\tif (this.footerCallback != null) {\n\t\t\txmlResourceItemWriter.setFooterCallback(this.footerCallback);\n\t\t}\n\t\txmlResourceItemWriter.setLineSeparator(this.lineSeparator);\n\t\txmlResourceItemWriter.setSaveState(this.saveState);\n\t\txmlResourceItemWriter.setShouldDeleteIfEmpty(this.shouldDeleteIfEmpty);\n\t\txmlResourceItemWriter.setShouldDeleteIfExists(this.shouldDeleteIfExists);\n\t\treturn xmlResourceItemWriter;\n\t}\n}\n"
  },
  {
    "path": "core/riot-file/src/test/java/com/redis/riot/file/ReaderTests.java",
    "content": "package com.redis.riot.file;\n\nimport java.io.FileOutputStream;\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.net.MalformedURLException;\nimport java.net.URI;\nimport java.net.URISyntaxException;\nimport java.nio.file.Files;\nimport java.nio.file.Path;\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport org.junit.jupiter.api.Assertions;\nimport org.junit.jupiter.api.Test;\nimport org.springframework.batch.item.ExecutionContext;\nimport org.springframework.batch.item.ItemReader;\nimport org.springframework.batch.item.ItemStream;\nimport org.springframework.batch.item.file.FlatFileItemReader;\nimport org.springframework.batch.item.json.JsonItemReader;\nimport org.springframework.core.io.Resource;\nimport org.springframework.util.MimeType;\nimport org.springframework.util.StreamUtils;\n\nimport software.amazon.awssdk.regions.Region;\n\npublic class ReaderTests {\n\n\tpublic static final String BUCKET_URL = \"https://storage.googleapis.com/jrx/\";\n\tpublic static final String JSON_FILE = \"beers.json\";\n\tpublic static final String JSON_URL = BUCKET_URL + JSON_FILE;\n\tpublic static final String JSONL_FILE = \"beers.jsonl\";\n\tpublic static final String JSONL_URL = BUCKET_URL + JSONL_FILE;\n\tpublic static final String CSV_FILE = \"beers.csv\";\n\tpublic static final String CSV_URL = BUCKET_URL + CSV_FILE;\n\tpublic static final String S3_BUCKET_URL = \"s3://riot-bucket-jrx\";\n\tpublic static final String JSON_S3_URL = S3_BUCKET_URL + \"/beers.json\";\n\tpublic static final String JSON_GOOGLE_STORAGE_URL = \"gs://riot-bucket-jrx/beers.json\";\n\tpublic static final String JSON_GZ_URL = \"http://storage.googleapis.com/jrx/beers.json.gz\";\n\n\tprivate final ResourceFactory resourceFactory = new ResourceFactory();\n\tprivate final ResourceMap resourceMap = RiotResourceMap.defaultResourceMap();\n\tprivate final FileReaderRegistry registry = FileReaderRegistry.defaultReaderRegistry();\n\n\t@Test\n\tvoid readJsonUrl() throws Exception {\n\t\tassertRead(JSON_URL, JsonItemReader.class, 216);\n\t}\n\n\t@Test\n\tvoid readJsonGzUrl() throws Exception {\n\t\tassertRead(JSON_GZ_URL, JsonItemReader.class, 216);\n\t}\n\n\t@Test\n\tvoid readJsonS3Url() throws Exception {\n\t\tReadOptions options = new ReadOptions();\n\t\toptions.getS3Options().setRegion(Region.US_WEST_1);\n\t\tassertRead(JSON_S3_URL, options, JsonItemReader.class, 4432);\n\t}\n\n\t@Test\n\tvoid readJsonGoogleStorageUrl() throws Exception {\n\t\tassertRead(JSON_GOOGLE_STORAGE_URL, JsonItemReader.class, 4432);\n\t}\n\n\t@Test\n\tvoid readJsonFile() throws Exception {\n\t\tPath file = Files.createTempFile(\"readJsonFile\", JSON_FILE);\n\t\ttry (FileOutputStream outputStream = new FileOutputStream(file.toFile())) {\n\t\t\tStreamUtils.copy(urlInputStream(JSON_URL), outputStream);\n\t\t}\n\t\tassertRead(file.toFile().getAbsolutePath(), JsonItemReader.class, 216);\n\t}\n\n\tprivate InputStream urlInputStream(String url) throws MalformedURLException, IOException, URISyntaxException {\n\t\treturn new URI(url).toURL().openConnection().getInputStream();\n\t}\n\n\t@Test\n\tvoid readJsonLinesUrl() throws Exception {\n\t\tassertRead(JSONL_URL, FlatFileItemReader.class, 6);\n\t}\n\n\t@Test\n\tvoid readCsvUrl() throws Exception {\n\t\tReadOptions options = new ReadOptions();\n\t\toptions.setHeader(true);\n\t\tassertRead(CSV_URL, options, FlatFileItemReader.class, 2410);\n\t}\n\n\t@Test\n\tvoid readStdIn() throws Exception {\n\t\tRiotResourceLoader resourceLoader = new RiotResourceLoader();\n\t\tresourceLoader.addProtocolResolver(new StdInProtocolResolver());\n\t\tResource resource = resourceLoader.getResource(SystemInResource.FILENAME);\n\t\tAssertions.assertInstanceOf(SystemInResource.class, resource);\n\t}\n\n\tprivate void assertRead(String location, Class<?> expectedType, int expectedCount) throws Exception {\n\t\tassertRead(location, new ReadOptions(), expectedType, expectedCount);\n\t}\n\n\tprivate void assertRead(String location, ReadOptions options, Class<?> expectedType, int expectedCount)\n\t\t\tthrows Exception {\n\t\tResource resource = resourceFactory.resource(location, options);\n\t\tMimeType type = resourceMap.getContentTypeFor(resource);\n\t\tItemReader<?> reader = registry.getReaderFactory(type).create(resource, options);\n\t\tAssertions.assertNotNull(reader);\n\t\tList<?> items = readAll(reader);\n\t\tAssertions.assertEquals(expectedCount, items.size());\n\t}\n\n\tprivate <T> List<T> readAll(ItemReader<T> reader) throws Exception {\n\t\tif (reader instanceof ItemStream) {\n\t\t\t((ItemStream) reader).open(new ExecutionContext());\n\t\t}\n\t\tList<T> items = new ArrayList<>();\n\t\tT item;\n\t\twhile ((item = reader.read()) != null) {\n\t\t\titems.add(item);\n\t\t}\n\t\tif (reader instanceof ItemStream) {\n\t\t\t((ItemStream) reader).close();\n\t\t}\n\t\treturn items;\n\t}\n\n}\n"
  },
  {
    "path": "core/riot-test/gradle.properties",
    "content": "#\n# SPDX-License-Identifier: Apache-2.0\n#\n# Copyright 2020-2023 The RIOT authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\nproject_description = RIOT Test\nautomatic.module.name = com.redis.riot.test\n"
  },
  {
    "path": "core/riot-test/riot-test.gradle",
    "content": "/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * Copyright 2020-2023 The RIOT authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\ndependencies {\n    api(project(':riot-core')) {\n        exclude group: 'commons-logging', module: 'commons-logging'\n    }\n    api 'org.slf4j:slf4j-simple'\n    api group: 'com.redis', name: 'spring-batch-redis-core', version: springBatchRedisVersion\n    api group: 'com.redis', name: 'spring-batch-redis-test', version: springBatchRedisVersion\n    api 'org.springframework.batch:spring-batch-infrastructure'\n    api 'org.springframework.boot:spring-boot-autoconfigure'\n    api 'org.awaitility:awaitility'\n    api 'org.hsqldb:hsqldb'\n}"
  },
  {
    "path": "core/riot-test/src/main/java/com/redis/riot/test/AbstractRiotTestBase.java",
    "content": "package com.redis.riot.test;\n\nimport java.io.InputStream;\nimport java.nio.charset.StandardCharsets;\nimport java.util.StringTokenizer;\nimport java.util.Vector;\n\nimport org.junit.jupiter.api.Assertions;\nimport org.junit.jupiter.api.TestInfo;\nimport org.slf4j.simple.SimpleLogger;\n\nimport com.redis.riot.core.MainCommand;\nimport com.redis.riot.core.RiotDuration;\nimport com.redis.spring.batch.test.AbstractTargetTestBase;\n\nimport picocli.CommandLine.IExecutionStrategy;\nimport picocli.CommandLine.ParseResult;\n\npublic abstract class AbstractRiotTestBase extends AbstractTargetTestBase {\n\n\tpublic static final RiotDuration DEFAULT_IDLE_TIMEOUT = RiotDuration.ofSeconds(1);\n\tpublic static final int DEFAULT_EVENT_QUEUE_CAPACITY = 100000;\n\n\tstatic {\n\t\tSystem.setProperty(SimpleLogger.SHOW_DATE_TIME_KEY, \"true\");\n\t\tSystem.setProperty(SimpleLogger.DEFAULT_LOG_LEVEL_KEY, \"info\");\n\t}\n\n\tprotected static void assertExecutionSuccessful(int exitCode) {\n\t\tAssertions.assertEquals(0, exitCode);\n\t}\n\n\tprotected <T> T command(ParseResult parseResult) {\n\t\treturn parseResult.subcommands().get(0).commandSpec().commandLine().getCommand();\n\t}\n\n\tprotected int execute(TestInfo info, String filename) throws Exception {\n\t\treturn doExecute(info, filename);\n\t}\n\n\tprotected int execute(TestInfo info, String filename, IExecutionStrategy config) throws Exception {\n\t\treturn doExecute(info, filename, config);\n\t}\n\n\tprivate int doExecute(TestInfo info, String filename, IExecutionStrategy... executionStrategies) throws Exception {\n\t\tMainCommand mainCommand = mainCommand(info, executionStrategies);\n\t\treturn mainCommand.run(args(mainCommand, filename));\n\t}\n\n\tprotected abstract MainCommand mainCommand(TestInfo info, IExecutionStrategy... executionStrategies);\n\n\tprotected abstract String getMainCommandPrefix();\n\n\tprivate String[] args(MainCommand mainCommand, String filename) throws Exception {\n\t\ttry (InputStream inputStream = mainCommand.getClass().getResourceAsStream(\"/\" + filename)) {\n\t\t\tString command = new String(inputStream.readAllBytes(), StandardCharsets.UTF_8);\n\t\t\tString prefix = getMainCommandPrefix();\n\t\t\tif (command.startsWith(prefix)) {\n\t\t\t\tcommand = command.substring(prefix.length());\n\t\t\t}\n\t\t\treturn translateCommandline(command);\n\t\t}\n\t}\n\n\tprotected String[] translateCommandline(String toProcess) throws Exception {\n\t\tif ((toProcess == null) || (toProcess.length() == 0)) {\n\t\t\treturn new String[0];\n\t\t}\n\n\t\t// parse with a simple finite state machine\n\n\t\tfinal int normal = 0;\n\t\tfinal int inQuote = 1;\n\t\tfinal int inDoubleQuote = 2;\n\t\tint state = normal;\n\t\tStringTokenizer tok = new StringTokenizer(toProcess, \"\\\"\\' \", true);\n\t\tVector<String> v = new Vector<String>();\n\t\tStringBuilder current = new StringBuilder();\n\n\t\twhile (tok.hasMoreTokens()) {\n\t\t\tString nextTok = tok.nextToken();\n\t\t\tswitch (state) {\n\t\t\tcase inQuote:\n\t\t\t\tif (\"\\'\".equals(nextTok)) {\n\t\t\t\t\tstate = normal;\n\t\t\t\t} else {\n\t\t\t\t\tcurrent.append(nextTok);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase inDoubleQuote:\n\t\t\t\tif (\"\\\"\".equals(nextTok)) {\n\t\t\t\t\tstate = normal;\n\t\t\t\t} else {\n\t\t\t\t\tcurrent.append(nextTok);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tif (\"\\'\".equals(nextTok)) {\n\t\t\t\t\tstate = inQuote;\n\t\t\t\t} else if (\"\\\"\".equals(nextTok)) {\n\t\t\t\t\tstate = inDoubleQuote;\n\t\t\t\t} else if (\" \".equals(nextTok)) {\n\t\t\t\t\tif (current.length() != 0) {\n\t\t\t\t\t\tv.addElement(current.toString());\n\t\t\t\t\t\tcurrent.setLength(0);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tcurrent.append(nextTok);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (current.length() != 0) {\n\t\t\tv.addElement(current.toString());\n\t\t}\n\n\t\tif ((state == inQuote) || (state == inDoubleQuote)) {\n\t\t\tthrow new Exception(\"unbalanced quotes in \" + toProcess);\n\t\t}\n\n\t\tString[] args = new String[v.size()];\n\t\tv.copyInto(args);\n\t\treturn args;\n\t}\n\n}\n"
  },
  {
    "path": "docs/LICENSE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n"
  },
  {
    "path": "docs/guide/gradle.properties",
    "content": "#\n# SPDX-License-Identifier: Apache-2.0\n#\n# Copyright 2020-2023 The RIOT authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\nproject_description = RIOT Guide"
  },
  {
    "path": "docs/guide/guide.gradle",
    "content": "plugins {\n    id 'org.kordamp.gradle.guide'\n    id 'org.ajoberstar.git-publish'\n}\n\nconfigurations {\n    asciidoctorExtensions\n}\n\ndependencies {\n    asciidoctorExtensions 'com.bmuschko:asciidoctorj-tabbed-code-extension:0.3'\n}\n\nasciidoctor {\n    configurations 'asciidoctorExtensions'\n    attributes = [\n        numbered                : false,\n        'source-highlighter'    : 'coderay',\n        'coderay-linenums-mode' : 'table',\n        'testdir'               : '../../../../../plugins/riot/src/test/resources'\n    ]\n    dependsOn ':aggregateCopyDocFiles'\n}\n\neclipse {\n    project {\n        name = 'riot-guide'\n    }\n}"
  },
  {
    "path": "docs/guide/src/docs/asciidoc/_links.adoc",
    "content": ":link_etl:              link:https://en.wikipedia.org/wiki/Extract,_transform,_load[ETL]\n:link_releases:         link:{project-url}/releases[{project-title} Releases]\n:link_redis_7:          link:https://raw.githubusercontent.com/redis/redis/7.0/00-RELEASENOTES[Redis 7.0]\n:link_redis_notif:      link:https://redis.io/docs/manual/keyspace-notifications[Redis Keyspace Notifications]\n:link_redis_ce:         link:https://redis.io/docs/latest/operate/oss_and_stack/[Redis Community Edition]\n:link_redis_cloud:      link:https://redis.io/docs/latest/operate/rc/[Redis Cloud]\n:link_redis_software:   link:https://redis.io/docs/latest/operate/rs/[Redis Software]\n:link_redis_crdb:       link:https://redis.com/redis-enterprise/technology/active-active-geo-distribution/[Redis Enterprise CRDB]\n:link_redis_bigkeys:    link:https://developer.redis.com/operate/redis-at-scale/observability/identifying-issues/#scanning-keys[Big keys]\n:link_lettuce_api:      link:https://lettuce.io/core/release/api/io/lettuce/core/api/sync/RedisCommands.html[Lettuce API]\n:link_lettuce_readfrom: link:https://github.com/lettuce-io/lettuce-core/wiki/ReadFrom-Settings#read-from-settings[Read-From Settings]\n:link_spel:             link:https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#expressions[SpEL]\n:link_java_dateformat:  link:https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html[Java DateFormat]\n:link_datafaker:        link:http://www.datafaker.net[Datafaker]\n:link_datafaker_doc:    link:http://www.datafaker.net/documentation/providers/#number-of-providers-per-datafaker-version[Datafaker Providers]\n:link_ec_notifications: link:https://aws.amazon.com/premiumsupport/knowledge-center/elasticache-redis-keyspace-notifications[AWS Knowledge Center]\n"
  },
  {
    "path": "docs/guide/src/docs/asciidoc/changelog.adoc",
    "content": "[[_changelog]]\n= Changelog\n\nYou can use {project-title} to stream change data from a Redis database. \n\n.Streaming to stdout\n[source,console]\n----\nriot file-export --mode live\n{\"key\":\"gen:1\",\"type\":\"string\",\"time\":1718050552000,\"ttl\":-1,\"memoryUsage\":300003376}\n{\"key\":\"gen:3\",\"type\":\"string\",\"time\":1718050552000,\"ttl\":-1,\"memoryUsage\":300003376}\n{\"key\":\"gen:6\",\"type\":\"string\",\"time\":1718050552000,\"ttl\":-1,\"memoryUsage\":300003376}\n...\n----\n\n.Streaming to a file\n[source,console]\n----\nriot file-export export.json --mode live\n----\n"
  },
  {
    "path": "docs/guide/src/docs/asciidoc/concepts.adoc",
    "content": "[[_concepts]]\n= Concepts\n\n{project-title} is essentially an {link_etl} tool where data is extracted from the source system, transformed (see <<_processing,Processing>>), and loaded into the target system.\n\nimage::architecture.svg[]\n\n== Redis URI\n\n{project-title} follows the https://github.com/redis/redis-specifications/tree/master/uri[Redis URI] specification, which supports standalone, sentinel and cluster Redis deployments with plain, SSL, TLS and unix domain socket connections.\n\nTIP: You can use the `host:port` short hand for `redis://host:port`.\n\nRedis Standalone::\n  `redis :// [[username :] password@] host [:port][/database]\n          [?[timeout=timeout[d|h|m|s|ms|us|ns]] [&clientName=clientName]\n          [&libraryName=libraryName] [&libraryVersion=libraryVersion] ]`\nRedis Standalone (SSL)::\n  `rediss :// [[username :] password@] host [: port][/database]\n           [?[timeout=timeout[d|h|m|s|ms|us|ns]] [&clientName=clientName]\n           [&libraryName=libraryName] [&libraryVersion=libraryVersion] ]`\nRedis Sentinel::\n  `redis-sentinel :// [[username :] password@] host1[:port1] [, host2[:port2]] [, hostN[:portN]] [/database]\n                   [?[timeout=timeout[d|h|m|s|ms|us|ns]] [&sentinelMasterId=sentinelMasterId]\n                   [&clientName=clientName] [&libraryName=libraryName]\n                   [&libraryVersion=libraryVersion] ]`\n\nTIP: You can provide the database, password and timeouts within the Redis URI. For example `redis://localhost:6379/1` selects database `1`.\n\n.Timeout Units\n[horizontal]\n`d`:: Days\n`h`:: Hours\n`m`:: Minutes\n`s`:: Seconds\n`ms`:: Milliseconds\n`us`:: Microseconds\n`ns`:: Nanoseconds\n\n\n== Batching\n\nProcessing in {project-title} is done in batches: a fixed number of records is read from the source, processed, and written to the target.\nThe default batch size is `50`, which means that an execution step reads 50 items at a time from the source, processes them, and finally writes then to the target.\nIf the source/target is Redis, reading/writing of a batch is done in a single https://redis.io/topics/pipelining[command pipeline] to minimize the number of roundtrips to the server.\n\nYou can change the batch size (and hence pipeline size) using the `--batch` option.\nThe optimal batch size in terms of throughput depends on many factors like record size and command types (see https://stackoverflow.com/a/32165090[Redis Pipeline Tuning] for details).\n\n== Multi-threading\n\nBy default processing happens in a single thread, but it is possible to parallelize processing by using multiple threads.\nIn that configuration, each chunk of items is read, processed, and written in a separate thread of execution.\nThis is different from partitioning where items would be read by multiple readers.\nHere, only one reader is being accessed from multiple threads.\n\nTo set the number of threads, use the `--threads` option.\n\n.Multi-threading example\n[source,console]\n----\ninclude::{testdir}/db-import-postgresql-multithreaded[]\n----\n\ninclude::import.adoc[leveloffset=+1]\ninclude::export.adoc[leveloffset=+1]\n\n\n\n"
  },
  {
    "path": "docs/guide/src/docs/asciidoc/cookbook.adoc",
    "content": "[[_cookbook]]\n= Cookbook\n\nHere are various recipes using {project-title}.\n\n:leveloffset: +1\ninclude::{includedir}/changelog.adoc[]\ninclude::{includedir}/elasticache.adoc[]\ninclude::{includedir}/ping.adoc[]\n:leveloffset: -1\n"
  },
  {
    "path": "docs/guide/src/docs/asciidoc/databases.adoc",
    "content": "[[_db]]\n= Databases\n\n{project-title} includes two commands for interaction with relational databases:\n\n<<_db_import, `db-import`>>:: Import database tables into Redis\n<<_db_export, `db-export`>>:: Export Redis data structures to a database\n\n[[_db_drivers]]\n== Drivers\n\n{project-title} relies on JDBC to interact with databases.\nIt includes JDBC drivers for the most common database systems:\n\nhttps://docs.oracle.com/cd/E11882_01/appdev.112/e13995/oracle/jdbc/OracleDriver.html[Oracle]:: `jdbc:oracle:thin:@myhost:1521:orcl`\n\nhttps://docs.microsoft.com/en-us/sql/connect/jdbc/building-the-connection-url?view=sql-server-2017[SQL Server]:: `jdbc:sqlserver://[serverName[\\instanceName][:portNumber]][;property=value[;property=value]]`\n\nhttps://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference-jdbc-url-format.html[MySQL]:: `jdbc:mysql://[host]:[port][/database][?properties]`\n\nhttps://www.postgresql.org/docs/7.4/jdbc-use.html[Postgres]:: `jdbc:postgresql://host:port/database`\n\n[TIP]\n====\nFor non-included databases you must install the corresponding JDBC driver under the `lib` directory and modify the `CLASSPATH`:\n\n*nix:: `bin/riot` -> `CLASSPATH=$APP_HOME/lib/myjdbc.jar:$APP_HOME/lib/...`\nWindows:: `bin\\riot.bat` -> `set CLASSPATH=%APP_HOME%\\lib\\myjdbc.jar;%APP_HOME%\\lib\\...`\n====\n\n[[_db_import]]\n== Database Import\n\nThe `db-import` command imports data from a relational database into Redis.\n\nNOTE: Ensure {project-title} has the relevant JDBC driver for your database.\nSee the <<_db_drivers,Drivers>> section for more details.\n\n[source,console]\n----\nriot db-import --jdbc-url <jdbc url> -u <Redis URI> SQL [REDIS COMMAND...]\n----\n\nTo show the full usage, run:\n\n[source,console]\n----\nriot db-import --help\n----\n\nYou must specify at least one Redis command as a target.\n\nIMPORTANT: Redis connection options apply to the root command (`riot`) and not to subcommands.\n\nThe keys that will be written are constructed from input records by concatenating the keyspace prefix and key fields.\n\nimage::mapping.svg[]\n\n.PostgreSQL Import Example\n[source,console]\n----\ninclude::{testdir}/db-import-postgresql[]\n----\n\n.Import from PostgreSQL to JSON strings\n[source,console]\n----\ninclude::{testdir}/db-import-postgresql-set[]\n----\n\nThis will produce Redis strings that look like this:\n[source,json]\n----\ninclude::{includedir}/../resources/order.json[]\n----\n\n[[_db_export]]\n== Database Export\n\nUse the `db-export` command to read from a Redis database and writes to a SQL database.\n\nNOTE: Ensure {project-title} has the relevant JDBC driver for your database.\nSee the <<_db_drivers,Drivers>> section for more details.\n\nThe general usage is:\n[source,console]\n----\nriot db-export --jdbc-url <jdbc url> SQL\n----\n\nTo show the full usage, run:\n[source,console]\n----\nriot db-export --help\n----\n\n.Example: export to PostgreSQL\n[source,console]\n----\ninclude::{testdir}/db-export-postgresql[]\n----\n\n\n"
  },
  {
    "path": "docs/guide/src/docs/asciidoc/datagen.adoc",
    "content": "[[_datagen]]\n= Data Generation\n\n{project-title} includes 2 commands for data generation:\n\n<<_datagen_struct,`generate`>>:: Generate Redis data structures\n<<_datagen_faker,`faker`>>:: Import data from {link_datafaker}\n\n[[_datagen_struct]]\n== Data Structure Generator\n\nThe `gen` command generates Redis data structures as well as JSON and Timeseries.\n\n[source,console]\n----\nriot gen [OPTIONS]\n----\n\n.Example\n[source,console]\n----\ninclude::{testdir}/generate[]\n----\n\n[[_datagen_faker]]\n== Faker Generator\n\nThe `faker` command generates data using {link_datafaker}.\n\n[source,console]\n----\nriot faker [OPTIONS] EXPRESSION... [REDIS COMMAND...]\n----\n\nwhere `EXPRESSION` is a https://www.datafaker.net/documentation/expressions/[Faker expression] field in the form `field=\"expression\"`.\n\nTo show the full usage, run:\n\n[source,console]\n----\nriot faker --help\n----\n\nYou must specify at least one Redis command as a target.\n\n[IMPORTANT]\n====\nRedis connection options apply to the root command (`riot`) and not to subcommands.\n\nIn this example the Redis options will not be taken into account:\n\n[source,subs=\"verbatim,attributes\"]\n----\nriot faker id=\"numerify '####'\" hset -h myredis.com -p 6380\n----\n====\n\n[[_datagen_faker_keys]]\n=== Keys\n\nKeys are constructed from input records by concatenating the keyspace prefix and key fields.\n\nimage::mapping.svg[]\n\n.Import into hashes\n[source,console]\n----\ninclude::{testdir}/faker-hset[]\n----\n\n.Import into sets\n[source,console]\n----\ninclude::{testdir}/faker-sadd[]\n----\n\n[[_datagen_faker_providers]]\n=== Data Providers\n\nFaker offers many data providers.\nMost providers don't take any arguments and can be called directly:\n\n.Simple Faker example\n[source,console]\n----\nriot faker firstName=\"name.first_name\"\n----\n\nSome providers take parameters:\n\n.Parameter Faker example\n[source,console]\n----\nriot faker lease=\"number.digits '2'\"\n----\n\nHere are a few sample Faker expressions:\n\n* `regexify '(a|b){2,3}'`\n* `regexify '\\\\.\\\\*\\\\?\\\\+'`\n* `bothify '????','false'`\n* `name.first_name`\n* `name.last_name`\n* `number.number_between '1','10'`\n\nRefer to {link_datafaker_doc} for a list of providers and their corresponding documentation.\n\n"
  },
  {
    "path": "docs/guide/src/docs/asciidoc/elasticache.adoc",
    "content": ":ec: ElastiCache\n\n[[_elasticache]]\n= {ec} Migration\n\nThis recipe contains step-by-step instructions to migrate an {ec} (EC) database to {link_redis_cloud} or {link_redis_software}.\n\nThe following scenarios are covered:\n\n* One-time (snapshot) migration\n* Online (live) migration\n\nIMPORTANT: It is recommended to read the <<_replication,Replication>> section to familiarize yourself with its usage and architecture.\n\n== Setup\n\n=== Prerequisites\n\nFor this recipe you will require the following resources:\n \n* AWS {ec}: _Primary Endpoint_ in case of Single Master and _Configuration Endpoint_ in case of Clustered EC.\nRefer to https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Endpoints.html[this link] to learn more\n* {link_redis_cloud} or {link_redis_software}\n* An Amazon EC2 instance to run {project-title}\n\n[IMPORTANT]\n.Keyspace Notifications\n====\nFor a live migration you need to enable keyspace notifications on your {ec} instance (see {link_ec_notifications}).\n====\n\n=== Migration Host\n\nTo run the migration tool we will need an EC2 instance.\n\nYou can either create a new EC2 instance or leverage an existing one if available.\nIn the example below we first create an instance on AWS Cloud Platform.\nThe most common scenario is to access an {ec} cluster from an Amazon EC2 instance in the same Amazon Virtual Private Cloud (Amazon VPC).\nWe have used Ubuntu 16.04 LTS for this setup but you can choose any Ubuntu or Debian distribution of your choice.\n \nSSH to this EC2 instance from your laptop:\n\n[source,console]\n----\nssh -i “public key” <AWS EC2 Instance>\n----\n\nInstall `redis-cli` on this new instance by running this command:\n\n[source,console]\n----\nsudo apt update\nsudo apt install -y redis-tools\n----\n\nUse `redis-cli` to check connectivity with the {ec} database:\n\n[source,console]\n----\nredis-cli -h <ec primary endpoint> -p 6379\n----\n\nEnsure that the above command allows you to connect to the remote {ec} database successfully.\n\n\n=== Installing {project-title}\n\nLet's install {project-title} on the EC2 instance we set up previously.\nFor this we'll follow the steps in <<_install_manual,Manual Installation>>.\n\n== Performing Migration\n\nWe are now all set to begin the migration process.\nThe options you will use depend on your source and target databases, as well as the replication mode (snapshot or live).\n\n=== {ec} Single Master -> Redis\n[source,console]\n----\nriot replicate source:port target:port\n----\n\n=== Live {ec} Single Master -> Redis\n[source,console]\n----\nriot replicate source:port target:port --mode live\n----\n\n[IMPORTANT]\n====\nIn case {ec} is configured with https://docs.aws.amazon.com/Amazon{ec}/latest/red-ug/auth.html[AUTH TOKEN enabled], you need to pass `--source-tls` as well as `--source-pass` option:\n\n[source,console,subs=\"+quotes\"]\n----\nriot replicate source:port target:port --source-tls --source-pass <password>\n----\n====\n\n=== {ec} Cluster -> Redis\n\n[source,console]\n----\nriot replicate source:port target:port --source-cluster\n----\n\nNOTE: `--cluster` is an important parameter used ONLY for {ec} whenever cluster-mode is enabled.\nDo note that the source database is specified first and the target database is specified after the replicate command and it is applicable for all the scenarios.\n\n=== {ec} Single Master -> Redis (with specific database index)\n\n[source,console]\n----\nriot replicate redis://source:port/db target:port\n----\n\n=== {ec} Single Master -> Redis with OSS Cluster\n[source,console]\n----\nriot replicate source:port target:port --target-cluster\n----\n\n=== Live {ec} Cluster -> Redis with OSS Cluster\n\n[source,console]\n----\nriot replicate source:port target:port --source-cluster --target-cluster --mode live\n----\n\n== Important Considerations\n\n* It is recommended to test migration in UAT before production use.\n* Once migration is completed, ensure that application traffic gets redirected to Redis endpoint successfully.\n* It is recommended to perform the migration process during low traffic hours so as to avoid chances of data loss.\n\n\n"
  },
  {
    "path": "docs/guide/src/docs/asciidoc/export.adoc",
    "content": "= Exporting\n\nWhen exporting data from Redis the following options allow for filtering .\n\n== Key Filtering\n\nKey filtering can be done through multiple options in {project-title}:\n\n`--key-pattern`:: Glob-style pattern used for https://redis.io/docs/latest/commands/scan/[scan] and https://redis.io/docs/latest/develop/use/keyspace-notifications/[keyspace notification] registration.\n\n`--key-type`:: Type of keys to consider for scan and keyspace notification registration.\n\n`--key-include` & `--key-exclude`:: Glob-style pattern(s) to futher filter keys on the client (RIOT) side, i.e. after they are received through scan or keyspace notifications.\n\n`--mem-limit`: Ignore keys whose memory usage exceeds the given limit. For example `--mem-limit 10mb` skips keys over 10 MB in size.\n"
  },
  {
    "path": "docs/guide/src/docs/asciidoc/faq.adoc",
    "content": "[[_faq]]\n= FAQ\n\n[qanda]\nLogs are cut off or missing::\n  This could be due to concurrency issues in the terminal when refreshing the progress bar and displaying logs.\n  Try running with job option `--progress log`.\nUnknown options: '--keyspace', '--key'::\n  You must specify one or more Redis commands with import commands (<<_file_import,`file-import`>>, <<_datagen_faker,`faker`>>, <<_db_import,`db-import`>>).\nERR DUMP payload version or checksum are wrong::\n  Redis 7 DUMP format is not backwards compatible with previous versions.\n  To replicate between different Redis versions, use <<_replication_type_struct,Type-Based Replication>>.\nERR Unsupported Type 0::\n  The target database is most likely CRDB in which case you need to use type-based replication (`--struct` option).\nProcess gets stuck during replication and eventually times out::\n  This could be due to big keys clogging the replication pipes.\n  In these cases it might be hard to catch the offending key(s).\n  Try running the same command with `--info` and `--progress log` so that all errors are reported.\n  Check the database with `redis-cli` {link_redis_bigkeys} and/or use reader options to filter these keys out.\nNOAUTH Authentication required::\n  This issue occurs when you fail to supply the `--pass <password>` parameter.\nERR The ID argument cannot be a complete ID because xadd-id-uniqueness-mode is strict::\n  This usually happens in Active/Active (CRDB) setups where stream message IDs cannot be copied over to the target database.\n  Use the `--no-stream-id` option to disable ID propagation.\nERR Error running script... This Redis command is not allowed from scripts::\n  This can happen with Active/Active (CRDB) databases because the `MEMORY USAGE` command is not allowed to be run from a LUA script.\n  Use the `--mem-limit -1` option to disable memory usage.\njava.lang.OutOfMemoryError: Java heap space::\n  The RIOT JVM ran out of memory.\n  Either increase max JVM heap size (`export JAVA_OPTS=\"-Xmx8g\"`) or reduce RIOT memory usage by lowering `threads`, `batch`, `read-batch` and `read-queue`.\n  \n\n"
  },
  {
    "path": "docs/guide/src/docs/asciidoc/files.adoc",
    "content": "[[_file]]\n= Files\n\n{project-title} includes two commands to work with files in various formats:\n\n<<_file_import,`file-import`>>:: Import data from files\n<<_file_export,`file-export`>>:: Export Redis data structures to files\n\n[[_file_import]]\n== File Import\n\nThe `file-import` command reads data from files and writes it to Redis.\n\nThe basic usage for file imports is:\n\n[source,console]\n----\nriot file-import [OPTIONS] FILE... [REDIS COMMAND...]\n----\n\nTo show the full usage, run:\n\n[source,console]\n----\nriot file-import --help\n----\n\n{project-title} will try to determine the file type from its extension (e.g. `.csv` or `.json`), but you can specify it with the `--type` option.\n\nGzipped files are supported and the extension before `.gz` is used (e.g. `myfile.json.gz` -> `json`).\n\n.Examples\n* `/path/file.csv`\n* `/path/file-*.csv`\n* `/path/file.json`\n* `\\http://data.com/file.csv`\n* `\\http://data.com/file.json.gz`\n\nTIP: Use `-` to read from standard input.\n\nAmazon S3 and Google Cloud Storage buckets are supported.\n\n.Importing from Amazon S3\n[source,console]\n----\ninclude::{testdir}/file-import-s3[]\n----\n\n.Importing from Google Cloud Storage\n[source,console]\n----\ninclude::{testdir}/file-import-gcs[]\n----\n\n\n[[_file_import_struct]]\n=== Data Structures\n\nIf no `REDIS COMMAND` is specified, it is assumed that the input file(s) contain Redis data structures serialized as JSON or XML. See the <<_file_export, File Export>> section to learn about the expected format and how to generate such files.\n\n.Example\n[source,console]\n----\ninclude::{testdir}/file-import-json[]\n----\n\n[[_file_import_commands]]\n=== Redis Commands\n\nWhen one or more `REDIS COMMAND`s are specified, these commands are called for each input record.\n\n[IMPORTANT]\n====\nRedis client options apply to the root command (`riot`) and not to Redis commands.\n\nIn this example Redis client options will not be taken into account:\n\n[source,subs=\"verbatim,attributes\"] \n----\nriot file-import my.json hset -h myredis.com -p 6380\n----\n====\n\nRedis command keys are constructed from input records by concatenating keyspace prefix and key fields.\n\nimage::mapping.svg[]\n\n.Import into hashes with keyspace `blah:<id>`\n[source,console]\n----\nriot file-import my.json hset --keyspace blah --key id\n----\n\n.Import into JSON\n[source,console]\n----\ninclude::{testdir}/file-import-json-elastic-jsonset[]\n----\n\n.Import into hashes *and* set TTL on the key\n[source,console]\n----\nriot file-import my.json hset --keyspace blah --key id expire --keyspace blah --key id\n----\n\n.Import into hashes in keyspace `blah:<id>` *and* set TTL *and* add each `id` to a set named `myset`\n[source,console]\n----\nriot file-import my.json hset --keyspace blah --key id expire --keyspace blah --key id sadd --keyspace myset --member id\n----\n\n[[_file_import_delimited]]\n=== Delimited (CSV)\n\nThe default delimiter character is comma (`,`).\nIt can be changed with the `--delimiter` option.\n\nIf the file has a header, use the `--header` option to automatically extract field names.\nOtherwise specify the field names using the `--fields` option.\n\nLet's consider this CSV file:\n\n.beers.csv\n[format=\"csv\",options=\"header\",cols=\"5,5,5,5,20,20,8,8\"]\n|===\nrow,abv,ibu,id,name,style,brewery,ounces\n1,0.079,45,321,Fireside Chat (2010),Winter Warmer,368,12.0\n2,0.068,65,173,Back in Black,American Black Ale,368,12.0\n3,0.083,35,11,Monk's Blood,Belgian Dark Ale,368,12.0\n|===\n\nThe following command imports this CSV into Redis as hashes using `beer` as the key prefix and `id` as primary key.\n[source,console]\n----\ninclude::{testdir}/file-import-csv[]\n----\n\nThis creates hashes with keys `beer:321`, `beer:173`, ...\n\nThis command imports a CSV file into a geo set named `airportgeo` with airport IDs as members:\n[source,console]\n----\ninclude::{testdir}/file-import-geoadd[]\n----\n\n[[_file_import_fixed_length]]\n=== Fixed-Length (Fixed-Width)\n\nFixed-length files can be imported by specifying the width of each field using the `--ranges` option.\n\n[source,console]\n----\ninclude::{testdir}/file-import-fw[]\n----\n\n[[_file_import_json]]\n=== JSON\n\nThe expected format for JSON files is:\n\n[source,json]\n----\n[\n  {\n    \"...\": \"...\"\n  },\n  {\n    \"...\": \"...\"\n  }\n]\n----\n\n.JSON import example\n[source,console]\n----\ninclude::{testdir}/file-import-json[]\n----\n\nJSON records are trees with potentially nested values that need to be flattened when the target is a Redis hash for example.\n\nTo that end, {project-title} uses a field naming convention to flatten JSON objects and arrays:\n\n.Nested object\n[cols=\"45%m,10%,45%m\",frame=\"none\",grid=\"none\"]\n|=========================================================\n\n|`{ \"field\": { \"sub\": \"value\" } }`| -> | `field.sub=value`\n\n|=========================================================\n\n.Array\n[cols=\"45%m,10%,45%m\",frame=\"none\",grid=\"none\"]\n|=========================================================\n\n|`{ \"field\": [1, 2, 3] }`| -> | `field[0]=1 field[1]=2 field[2]=3`\n\n|=========================================================\n\n[[_file_import_xml]]\n=== XML\n\nHere is a sample XML file that can be imported by {project-title}:\n\n[source,xml]\n----\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<records>\n    <trade>\n        <isin>XYZ0001</isin>\n        <quantity>5</quantity>\n        <price>11.39</price>\n        <customer>Customer1</customer>\n    </trade>\n    <trade>\n        <isin>XYZ0002</isin>\n        <quantity>2</quantity>\n        <price>72.99</price>\n        <customer>Customer2c</customer>\n    </trade>\n    <trade>\n        <isin>XYZ0003</isin>\n        <quantity>9</quantity>\n        <price>99.99</price>\n        <customer>Customer3</customer>\n    </trade>\n</records>\n----\n\n.XML Import Example\n[source,console]\n----\ninclude::{testdir}/file-import-xml[]\n----\n\n\n[[_file_export]]\n== File Export\n\nThe `file-export` command reads data from a Redis database and writes it to a JSON or XML file, potentially gzip-compressed.\n\nThe general usage is:\n[source,console]\n----\nriot file-export [OPTIONS] FILE\n----\n\nTo show the full usage, run:\n[source,console]\n----\nriot file-export --help\n----\n\n[[_file_export_json]]\n=== JSON\n\n.Export to JSON\n[source,console]\n----\ninclude::{testdir}/file-export-json[]\n----\n\n.Sample JSON-export file\n[source,json]\n----\ninclude::{includedir}/../resources/redis-dump.json[]\n----\n\n.Export to compressed JSON\n[source,console]\n----\ninclude::{testdir}/file-export-json-gz[]\n----\n\n[[_file_export_xml]]\n=== XML\n.Export to XML\n[source,console]\n----\ninclude::{testdir}/file-export-xml[]\n----\n\n\n"
  },
  {
    "path": "docs/guide/src/docs/asciidoc/import.adoc",
    "content": "= Importing\n\nWhen importing data into Redis (`file-import`, `db-import`, `faker`) the following options allow for field-level processing and filtering.\n\n== Processing\n\nProcessors allow you to create/update/delete fields using the Spring Expression Language ({link_spel}).\n\n.Examples\n`--proc field1=\"'foo'\"`:: Generate a field named `field1` containing the string `foo`\n`--proc temp=\"(temp-32)*5/9\"`:: Convert from Fahrenheit to Celsius\n`--proc name='remove(\"first\").concat(remove(\"last\"))'`:: Concatenate `first` and `last` fields and delete them\n`--proc field2=null`:: Delete `field2`\n\nInput fields are accessed by name (e.g. `field3=field1+field2`).\n\nProcessors have access to the following context variables and functions:\n\n`date`:: Date parsing and formatting object.\nInstance of Java https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html[SimpleDateFormat].\n\n`number`:: Number parsing and formatting object.\nInstance of Java https://docs.oracle.com/javase/8/docs/api/java/text/DecimalFormat.html[DecimalFormat].\n\n`faker`:: https://s01.oss.sonatype.org/service/local/repositories/releases/archive/net/datafaker/datafaker/2.3.1/datafaker-2.3.1-javadoc.jar/!/net/datafaker/Faker.html[Faker] object.\n\n`redis`:: Redis commands object.\nInstance of Lettuce https://www.lettuce.io/core/release/api/io/lettuce/core/api/sync/RedisCommands.html[RedisCommands].\nThe `replicate` command exposes 2 command objects named `source` and `target`.\n\n`geo`:: Convenience function that takes a longitude and a latitude to produce a RediSearch geo-location string in the form `longitude,latitude` (e.g. `location=#geo(lon,lat)`)\n\n.Processor example\n[source,console]\n----\nriot file-import --proc epoch=\"#date.parse(mydate).getTime()\" location=\"#geo(lon,lat)\" name=\"#redis.hget('person1','lastName')\" ...\n----\n\n.Faker processor example\n[source,console]\n----\ninclude::{testdir}/file-import-process-faker[]\n----\n\nYou can register your own variables using `--var`.\n\n.Custom variable example\n[source,console]\n----\ninclude::{testdir}/file-import-process-var[]\n----\n\n== Filtering\n\nFilters allow you to exclude records that don't match a {link_spel} boolean expression.\n\nFor example this filter will only keep records where the `value` field is a series of digits:\n\n[source,console]\n----\nriot file-import --filter \"value matches '\\\\d+'\" ...\n----\n\n"
  },
  {
    "path": "docs/guide/src/docs/asciidoc/index.adoc",
    "content": "= Redis Input/Output Tools ({project-title})\nJulien Ruaux\n:title-logo-image: image:riot.svg[]\n:author: {project-author}\n:revnumber: {project-version}\n:docinfo1:\n\ninclude::{includedir}/_links.adoc[]\n\n:leveloffset: 1\ninclude::{includedir}/introduction.adoc[]\ninclude::{includedir}/install.adoc[]\ninclude::{includedir}/concepts.adoc[]\ninclude::{includedir}/usage.adoc[]\ninclude::{includedir}/cookbook.adoc[]\ninclude::{includedir}/faq.adoc[]\n"
  },
  {
    "path": "docs/guide/src/docs/asciidoc/install.adoc",
    "content": "[[_install]]\n= Install\n\n{project-title} can be installed on Linux, macOS, and Windows platforms and can be used as a standalone tool that connects remotely to a Redis database.\nIt is not required to run locally on a Redis server.\n\n[[_install_homebrew]]\n[discrete]\n== Homebrew (macOS & Linux)\n\n[source,console]\n----\nbrew install redis/tap/riot\n----\n\n[[_install_scoop]]\n[discrete]\n== Scoop (Windows)\n\n[source,console]\n----\nscoop bucket add redis https://github.com/redis/scoop.git\nscoop install riot\n----\n\n[[_install_manual]]\n[discrete]\n== Manual Installation (All Platforms)\nDownload the pre-compiled binary from {link_releases}, uncompress and copy to the desired location.\n\n[NOTE]\n====\n`riot-{project-version}.zip` requires Java 11 or greater to be installed.\n\n`riot-standalone-{project-version}-*.zip` includes its own Java runtime and does not require a Java installation.\n====\n\n[[_install_docker]]\n[discrete]\n== Docker\n\nYou can run {project-title} as a docker image:\n\n[source,console]\n----\ndocker run riotx/riot [OPTIONS] [COMMAND]\n----"
  },
  {
    "path": "docs/guide/src/docs/asciidoc/introduction.adoc",
    "content": "[[_introduction]]\n= Introduction\n\n{project-title} is a command-line utility to get data in and out of Redis. It supports any Redis-compatible database like {link_redis_cloud}, {link_redis_ce}, {link_redis_software}.\n\n{project-title} includes the following features:\n\nFiles (CSV, JSON, XML)::\n* <<_file_import,Import>>: File -> Redis\n* <<_file_export,Export>>: Redis -> File\n\nDatabases::\n* <<_db_import,Import>>: Database -> Redis\n* <<_db_export,Export>>: Redis -> Database\n\nData Generators::\n* <<_datagen_struct,Redis Data Generator>>: Data Structures -> Redis\n* <<_datagen_faker,Faker Data Generator>>: Faker -> Redis\n\n<<_replication,Replication>>:: Redis -> Redis\n\n{project-title} is supported by Redis, Inc. on a good faith effort basis. To report bugs, request features, or receive assistance, please https://github.com/redis/riot/issues[file an issue] or contact your Redis account team.\n\n[discrete]\n== RIOT-X\nhttps://redis-field-engineering.github.io/riotx/[RIOT-X] is an extension to {project-title} which provides the following additional features for https://redis.io/cloud/[Redis Cloud] and https://redis.io/enterprise/[Redis Software]:\n\n* Observability\n* Memcached Replication\n* Stream Import/Export\n\nFull documentation for RIOT-X is available here: https://redis-field-engineering.github.io/riotx/[redis-field-engineering.github.io/riotx]\n\nimage::riotx-dashboard-replication.png[]\n\nimage::riotx-dashboard-jvm.png[]\n"
  },
  {
    "path": "docs/guide/src/docs/asciidoc/ping.adoc",
    "content": "[[_ping]]\n= Connectivity Test\n\nThe `ping` command can be used to test connectivity to a Redis database.\n\n[source,console]\n----\nriot ping [OPTIONS]\n----\n\nTo show the full usage, run:\n\n[source,console]\n----\nriot ping --help\n----\n\nThe command prints statistics like these:\n\n[source,console]\n----\nriot ping -h localhost --unit microseconds\n[min=491, max=14811, percentiles={99.9=14811, 90.0=1376, 95.0=2179, 99.0=14811, 50.0=741}]\n[min=417, max=1286, percentiles={99.9=1286, 90.0=880, 95.0=1097, 99.0=1286, 50.0=606}]\n[min=382, max=2244, percentiles={99.9=2244, 90.0=811, 95.0=1036, 99.0=2244, 50.0=518}]\n...\n----\n\n"
  },
  {
    "path": "docs/guide/src/docs/asciidoc/replication.adoc",
    "content": "[[_replication]]\n= Replication\n\nThe `replicate` command reads data from a *source* Redis database and writes to a *target* Redis database.\n\nimage::replication-architecture.svg[]\n\nThe replication mechanism is as follows:\n\n1. Identify source keys to be replicated using scan and/or keyspace notifications depending on the <<_replication_mode,replication mode>>.\n\n2. Read data associated with each key using <<_replication_type_dump,dump>> or <<_replication_type_struct,type-specific commands>>.\n\n3. Write each key to the target using <<_replication_type_dump,restore>> or <<_replication_type_struct,type-specific commands>>.\n\nThe basic usage is:\n\n[source,console]\n----\nriot replicate [OPTIONS] SOURCE TARGET\n----\n\nwhere SOURCE and TARGET are <<_redis_uri,Redis URIs>>.\n\nFor the full usage, run:\n[source,console]\n----\nriot replicate --help\n----\n\nTIP: To replicate a Redis logical database other than the default (`0`), specify the database in the source Redis URI.\nFor example `riot replicate redis://source:6379/1 redis://target:6379` replicates database `1`.\n\n[[_replication_mode]]\n== Replication Mode\n\nReplication starts with identifying keys to be replicated from the source Redis database.\nThe `--mode` option allows you to specify how {project-title} identifies keys to be replicated:\n\n* iterate over keys with a key scan (`--mode scan`)\n* received by a keyspace notification subscriber (`--mode liveonly`)\n* or both (`--mode live`)\n\n[[_replication_mode_scan]]\n=== Scan \n\nThis key reader scans for keys using the Redis https://redis.io/docs/latest/commands/scan/[`SCAN` command]:\n\n```\nSCAN cursor [MATCH pattern] [COUNT count] [TYPE type]\n```\n\n`MATCH pattern`:: configured with the `--key-pattern` option\n`TYPE type`:: configured with the `--key-type` option\n`COUNT count`:: configured with the `--scan-count` option\n\nINFO: In cluster mode keys are scanned in parallel across cluster nodes.\n\nThe status bar shows progress with a percentage of keys that have been replicated.\nThe total number of keys is estimated when the replication process starts and it can change by the time it is finished, for example if keys are deleted or added during replication.\n\n.Scan replication example\n[source,console]\n----\ninclude::{testdir}/replicate[]\n----\n\n[[_replication_mode_live]]\n=== Live\n\nThe key notification reader listens for key changes using keyspace notifications.\n\n**Make sure the source database has keyspace notifications enabled** using:\n\n* `redis.conf`: `notify-keyspace-events = KEA`\n* `CONFIG SET notify-keyspace-events KEA`\n\nFor more details see {link_redis_notif}.\n\n.Live replication example\n[source,console]\n----\ninclude::{testdir}/replicate-live[]\n----\n\n[WARNING]\n====\nThe live replication mechanism does not guarantee data consistency.\nRedis sends keyspace notifications over pub/sub which does not provide guaranteed delivery.\nIt is possible that {project-title} can miss some notifications in case of network failures for example.\n\nAlso, depending on the type, size, and rate of change of data structures on the source it is possible that {project-title} cannot keep up with the change stream.\nFor example if a big set is repeatedly updated, {project-title} will need to read the whole set on each update and transfer it over to the target database.\nWith a big-enough set, {project-title} could fall behind and the internal queue could fill up leading up to updates being dropped.\n\nFor those potentially problematic migrations it is recommend to perform some preliminary sizing using Redis statistics and `bigkeys`/`memkeys` in tandem with `--mem-limit`.\nIf you need assistance please contact your Redis account team.\n====\n\n== Replication Types\n\n{project-title} offers two different mechanisms for reading and writing keys:\n\n* Dump & restore (default)\n* Data structure replication (`--struct`)\n\n[[_replication_type_dump]]\n=== Dump & Restore\n\nThe default replication mechanism is Dump & Restore:\n\n1. Scan for keys in the source Redis database.\nIf live replication is enabled the reader also subscribes to keyspace notifications to generate a continuous stream of keys.\n\n2. Reader threads iterate over the keys to read corresponding values (DUMP) and TTLs.\n\n3. Reader threads enqueue key/value/TTL tuples into the reader queue, from which the writer dequeues key/value/TTL tuples and writes them to the target Redis database by calling RESTORE and EXPIRE.\n\n[[_replication_type_struct]]\n=== Data Structure Replication\n\nThere are situations where Dump & Restore cannot be used, for example:\n\n* The target Redis database does not support the RESTORE command ({link_redis_crdb})\n* Incompatible DUMP formats between source and target ({link_redis_7})\n\nIn those cases you can use another replication strategy that is data structure-specific: each key is introspected to determine its type and then use the corresponding read/write commands.\n\n[%header,cols=\"h,1,1\"]\n|=========================================================\n|Type|Read|Write\n\n|Hash|`HGETALL`|`HSET`\n|JSON|`JSON.GET`|`JSON.SET`\n|List|`LRANGE`|`RPUSH`\n|Set|`SMEMBERS`|`SADD`\n|Sorted Set|`ZRANGE`|`ZADD`\n|Stream|`XRANGE`|`XADD`\n|String|`GET`|`SET`\n|TimeSeries|`TS.RANGE`|`TS.ADD`\n\n|=========================================================\n\nWARNING: This replication strategy is more intensive in terms of CPU, memory, and network for all the machines involved (source Redis, target Redis, and {project-title} machines).\nAdjust number of threads, batch and queue sizes accordingly.\n\n\n.Type-based replication example\n[source,console]\n----\ninclude::{testdir}/replicate-struct[]\n----\n\n.Live type-based replication example\n[source,console]\n----\ninclude::{testdir}/replicate-live-struct[]\n----\n\n[[_replication_compare]]\n== Compare\n\nOnce replication is complete, {project-title} performs a verification step by reading keys in the source database and comparing them against the target database.\n\nThe verification step happens automatically after the scan is complete (snapshot replication), or for live replication when keyspace notifications have become idle.\n\nVerification can also be run on-demand using the `compare` command:\n\n[source,console]\n----\nriot compare SOURCE TARGET [OPTIONS]\n----\n\nThe output looks like this:\n\n----\nVerification failed (type: 225,062, missing: 485,450)\n----\n\nmissing::\nNumber of keys in source but not in target.\n\ntype::\nNumber of keys with mismatched types (e.g. hash vs string).\n\nvalue::\nNumber of keys with mismatched values.\n\nttl::\nNumber of keys with mismatched TTL i.e. difference is greater than tolerance (can be specified with `--ttl-tolerance`).\n\nThere are 2 comparison modes available through `--compare` (`--quick` for `compare` command):\n\nQuick (default):: Compare key types and TTLs.\nFull:: Compare key types, TTLs, and values.\n\nTo show which keys differ, use the `--show-diffs` option.\n\n\n[[_replication_performance]]\n== Performance\n\nPerformance tuning is an art but {project-title} offers some options to identify potential bottlenecks.\nIn addition to <<_batching,`--batch`>> and <<_multi_threading,`--threads`>> options you have the `--dry-run` option which disables writing to the target Redis database so that you can tune the reader in isolation.\nAdd that option to your existing `replicate` command-line to compare replication speeds with and without writing to the target Redis database.\n\n\n"
  },
  {
    "path": "docs/guide/src/docs/asciidoc/usage.adoc",
    "content": "[[_usage]]\n= Usage\n\nYou can launch {project-title} with the following command:\n\n[source,console]\n----\nriot\n----\n\nThis will show usage help, which you can also get by running:\n\n[source,console]\n----\nriot --help\n----\n\n`--help` is available on any command:\n\n[source,console]\n----\nriot COMMAND --help\n----\n\n[TIP]\n====\nRun the following command to give `riot` TAB completion in the current shell:\n\n[source,console]\n----\n$ source <(riot generate-completion)\n----\n====\n\n:leveloffset: +1\ninclude::{includedir}/datagen.adoc[]\ninclude::{includedir}/databases.adoc[]\ninclude::{includedir}/files.adoc[]\ninclude::{includedir}/replication.adoc[]\n:leveloffset: -1\n\n"
  },
  {
    "path": "docs/guide/src/docs/resources/images/Diagrams.drawio",
    "content": "<mxfile host=\"Electron\" modified=\"2024-06-10T18:34:25.945Z\" agent=\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/24.5.1 Chrome/124.0.6367.207 Electron/30.0.6 Safari/537.36\" etag=\"TUOONfkPA5DEMHqMsrJ8\" version=\"24.5.1\" type=\"device\" pages=\"3\">\n  <diagram name=\"mapping\" id=\"-CJQqSpR1AHRDQsbGXs3\">\n    <mxGraphModel dx=\"1434\" dy=\"854\" grid=\"1\" gridSize=\"10\" guides=\"1\" tooltips=\"1\" connect=\"1\" arrows=\"1\" fold=\"1\" page=\"1\" pageScale=\"1\" pageWidth=\"850\" pageHeight=\"1100\" math=\"0\" shadow=\"0\">\n      <root>\n        <mxCell id=\"0\" />\n        <mxCell id=\"1\" parent=\"0\" />\n        <mxCell id=\"yuC8ztW3-dCmG9XeEZeN-1\" value=\"&lt;b&gt;&lt;font face=&quot;Courier New&quot;&gt;hset&lt;/font&gt;&lt;/b&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;font face=&quot;Courier New&quot;&gt;--keyspace actor&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;font face=&quot;Courier New&quot;&gt;--key id&lt;/font&gt;&lt;/div&gt;\" style=\"shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;fillColor=#f0a30a;strokeColor=#BD7000;fontFamily=Tahoma;fontColor=#FFFFFF;\" parent=\"1\" vertex=\"1\">\n          <mxGeometry x=\"360\" y=\"240\" width=\"160\" height=\"80\" as=\"geometry\" />\n        </mxCell>\n        <mxCell id=\"yuC8ztW3-dCmG9XeEZeN-2\" value=\"\" style=\"endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontSize=12;fontFamily=Tahoma;\" parent=\"1\" target=\"yuC8ztW3-dCmG9XeEZeN-1\" edge=\"1\">\n          <mxGeometry width=\"50\" height=\"50\" relative=\"1\" as=\"geometry\">\n            <mxPoint x=\"310\" y=\"280\" as=\"sourcePoint\" />\n            <mxPoint x=\"450\" y=\"250\" as=\"targetPoint\" />\n          </mxGeometry>\n        </mxCell>\n        <mxCell id=\"yuC8ztW3-dCmG9XeEZeN-10\" value=\"&lt;div style=&quot;font-size: 12px;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;; background-color: initial;&quot;&gt;id:&amp;nbsp; &amp;nbsp; 123&lt;/span&gt;&lt;br&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;; background-color: initial;&quot;&gt;first: Tom&lt;/span&gt;&lt;br&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;; background-color: initial;&quot;&gt;last:&amp;nbsp; Hanks&lt;/span&gt;&lt;br&gt;&lt;/div&gt;\" style=\"edgeLabel;html=1;align=left;verticalAlign=middle;resizable=0;points=[];fontFamily=Tahoma;fontSize=12;labelBackgroundColor=none;\" parent=\"yuC8ztW3-dCmG9XeEZeN-2\" vertex=\"1\" connectable=\"0\">\n          <mxGeometry x=\"0.4786\" y=\"-1\" relative=\"1\" as=\"geometry\">\n            <mxPoint x=\"-127\" y=\"-1\" as=\"offset\" />\n          </mxGeometry>\n        </mxCell>\n        <mxCell id=\"yuC8ztW3-dCmG9XeEZeN-14\" value=\"\" style=\"endArrow=classic;html=1;rounded=0;fontSize=12;fontFamily=Tahoma;\" parent=\"1\" edge=\"1\">\n          <mxGeometry width=\"50\" height=\"50\" relative=\"1\" as=\"geometry\">\n            <mxPoint x=\"520\" y=\"279.5\" as=\"sourcePoint\" />\n            <mxPoint x=\"560\" y=\"280\" as=\"targetPoint\" />\n          </mxGeometry>\n        </mxCell>\n        <mxCell id=\"yuC8ztW3-dCmG9XeEZeN-15\" value=\"&lt;div style=&quot;text-align: left; font-size: 12px;&quot;&gt;&lt;font face=&quot;Courier New&quot;&gt;&lt;font style=&quot;background-color: initial;&quot;&gt;HSET actor:42&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left; font-size: 12px;&quot;&gt;&lt;font face=&quot;Courier New&quot;&gt;&lt;font style=&quot;background-color: initial;&quot;&gt;&amp;nbsp; first Tom&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left; font-size: 12px;&quot;&gt;&lt;font face=&quot;Courier New&quot;&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;&amp;nbsp; last Hanks&lt;/span&gt;&lt;/font&gt;&lt;br&gt;&lt;/div&gt;\" style=\"edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontFamily=Tahoma;fontSize=12;labelBackgroundColor=none;\" parent=\"yuC8ztW3-dCmG9XeEZeN-14\" vertex=\"1\" connectable=\"0\">\n          <mxGeometry x=\"0.4786\" y=\"-1\" relative=\"1\" as=\"geometry\">\n            <mxPoint x=\"60\" y=\"-1\" as=\"offset\" />\n          </mxGeometry>\n        </mxCell>\n      </root>\n    </mxGraphModel>\n  </diagram>\n  <diagram name=\"replication-architecture\" id=\"SzyLX5oUc3AnbnFBjnkx\">\n    <mxGraphModel dx=\"2092\" dy=\"878\" grid=\"1\" gridSize=\"10\" guides=\"1\" tooltips=\"1\" connect=\"1\" arrows=\"1\" fold=\"1\" page=\"1\" pageScale=\"1\" pageWidth=\"850\" pageHeight=\"1100\" math=\"0\" shadow=\"0\">\n      <root>\n        <mxCell id=\"0\" />\n        <mxCell id=\"1\" parent=\"0\" />\n        <mxCell id=\"BWhVouGPxx9xCM-iD3RN-2\" value=\"Queue\" style=\"strokeWidth=2;html=1;shape=mxgraph.flowchart.direct_data;whiteSpace=wrap;fontFamily=Tahoma;fillColor=#1ba1e2;fontColor=#ffffff;strokeColor=#006EAF;\" parent=\"1\" vertex=\"1\">\n          <mxGeometry x=\"271\" y=\"382\" width=\"89\" height=\"54\" as=\"geometry\" />\n        </mxCell>\n        <mxCell id=\"BWhVouGPxx9xCM-iD3RN-5\" value=\"Value Reader\" style=\"shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;strokeWidth=2;fontFamily=Tahoma;fillColor=#1ba1e2;fontColor=#ffffff;strokeColor=#006EAF;\" parent=\"1\" vertex=\"1\">\n          <mxGeometry x=\"81\" y=\"450\" width=\"120\" height=\"30\" as=\"geometry\" />\n        </mxCell>\n        <mxCell id=\"BWhVouGPxx9xCM-iD3RN-6\" value=\"Value Reader\" style=\"shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;strokeWidth=2;fontFamily=Tahoma;fillColor=#1ba1e2;fontColor=#ffffff;strokeColor=#006EAF;\" parent=\"1\" vertex=\"1\">\n          <mxGeometry x=\"81\" y=\"394\" width=\"120\" height=\"30\" as=\"geometry\" />\n        </mxCell>\n        <mxCell id=\"BWhVouGPxx9xCM-iD3RN-7\" value=\"Value Reader\" style=\"shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;strokeWidth=2;fontFamily=Tahoma;fillColor=#1ba1e2;fontColor=#ffffff;strokeColor=#006EAF;\" parent=\"1\" vertex=\"1\">\n          <mxGeometry x=\"81\" y=\"337\" width=\"120\" height=\"30\" as=\"geometry\" />\n        </mxCell>\n        <mxCell id=\"BWhVouGPxx9xCM-iD3RN-8\" value=\"\" style=\"endArrow=classic;html=1;rounded=0;strokeWidth=2;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontFamily=Tahoma;\" parent=\"1\" source=\"BWhVouGPxx9xCM-iD3RN-32\" target=\"BWhVouGPxx9xCM-iD3RN-7\" edge=\"1\">\n          <mxGeometry width=\"50\" height=\"50\" relative=\"1\" as=\"geometry\">\n            <mxPoint x=\"19\" y=\"382.2582159624412\" as=\"sourcePoint\" />\n            <mxPoint x=\"80\" y=\"380\" as=\"targetPoint\" />\n          </mxGeometry>\n        </mxCell>\n        <mxCell id=\"BWhVouGPxx9xCM-iD3RN-11\" value=\"Key\" style=\"edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontFamily=Tahoma;fontSize=12;labelBackgroundColor=none;\" parent=\"BWhVouGPxx9xCM-iD3RN-8\" vertex=\"1\" connectable=\"0\">\n          <mxGeometry x=\"0.3434\" y=\"-1\" relative=\"1\" as=\"geometry\">\n            <mxPoint x=\"-13\" y=\"30\" as=\"offset\" />\n          </mxGeometry>\n        </mxCell>\n        <mxCell id=\"BWhVouGPxx9xCM-iD3RN-9\" value=\"\" style=\"endArrow=classic;html=1;rounded=0;strokeWidth=2;fontFamily=Roboto;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DRoboto;\" parent=\"1\" source=\"BWhVouGPxx9xCM-iD3RN-32\" target=\"BWhVouGPxx9xCM-iD3RN-6\" edge=\"1\">\n          <mxGeometry width=\"50\" height=\"50\" relative=\"1\" as=\"geometry\">\n            <mxPoint x=\"19\" y=\"409\" as=\"sourcePoint\" />\n            <mxPoint x=\"90\" y=\"600\" as=\"targetPoint\" />\n          </mxGeometry>\n        </mxCell>\n        <mxCell id=\"BWhVouGPxx9xCM-iD3RN-10\" value=\"\" style=\"endArrow=classic;html=1;rounded=0;strokeWidth=2;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontFamily=Roboto;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DRoboto;\" parent=\"1\" source=\"BWhVouGPxx9xCM-iD3RN-32\" target=\"BWhVouGPxx9xCM-iD3RN-5\" edge=\"1\">\n          <mxGeometry width=\"50\" height=\"50\" relative=\"1\" as=\"geometry\">\n            <mxPoint x=\"19\" y=\"432.39906103286376\" as=\"sourcePoint\" />\n            <mxPoint x=\"80\" y=\"440\" as=\"targetPoint\" />\n          </mxGeometry>\n        </mxCell>\n        <mxCell id=\"BWhVouGPxx9xCM-iD3RN-14\" value=\"\" style=\"endArrow=classic;html=1;rounded=0;strokeWidth=2;exitX=1;exitY=0.5;exitDx=0;exitDy=0;fontFamily=Tahoma;\" parent=\"1\" source=\"BWhVouGPxx9xCM-iD3RN-7\" target=\"BWhVouGPxx9xCM-iD3RN-2\" edge=\"1\">\n          <mxGeometry width=\"50\" height=\"50\" relative=\"1\" as=\"geometry\">\n            <mxPoint x=\"170\" y=\"500\" as=\"sourcePoint\" />\n            <mxPoint x=\"220\" y=\"450\" as=\"targetPoint\" />\n          </mxGeometry>\n        </mxCell>\n        <mxCell id=\"BWhVouGPxx9xCM-iD3RN-17\" value=\"Key/Value\" style=\"edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontFamily=Tahoma;fontSize=12;labelBackgroundColor=none;\" parent=\"BWhVouGPxx9xCM-iD3RN-14\" vertex=\"1\" connectable=\"0\">\n          <mxGeometry x=\"-0.6437\" y=\"2\" relative=\"1\" as=\"geometry\">\n            <mxPoint x=\"19\" y=\"39\" as=\"offset\" />\n          </mxGeometry>\n        </mxCell>\n        <mxCell id=\"BWhVouGPxx9xCM-iD3RN-15\" value=\"\" style=\"endArrow=classic;html=1;rounded=0;strokeWidth=2;fontFamily=Roboto;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DRoboto;\" parent=\"1\" target=\"BWhVouGPxx9xCM-iD3RN-2\" edge=\"1\">\n          <mxGeometry width=\"50\" height=\"50\" relative=\"1\" as=\"geometry\">\n            <mxPoint x=\"200\" y=\"409\" as=\"sourcePoint\" />\n            <mxPoint x=\"281\" y=\"424\" as=\"targetPoint\" />\n          </mxGeometry>\n        </mxCell>\n        <mxCell id=\"BWhVouGPxx9xCM-iD3RN-16\" value=\"\" style=\"endArrow=classic;html=1;rounded=0;strokeWidth=2;exitX=1;exitY=0.5;exitDx=0;exitDy=0;fontFamily=Roboto;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DRoboto;\" parent=\"1\" source=\"BWhVouGPxx9xCM-iD3RN-5\" target=\"BWhVouGPxx9xCM-iD3RN-2\" edge=\"1\">\n          <mxGeometry width=\"50\" height=\"50\" relative=\"1\" as=\"geometry\">\n            <mxPoint x=\"211\" y=\"419\" as=\"sourcePoint\" />\n            <mxPoint x=\"281\" y=\"424\" as=\"targetPoint\" />\n          </mxGeometry>\n        </mxCell>\n        <mxCell id=\"BWhVouGPxx9xCM-iD3RN-22\" value=\"Writer\" style=\"shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;strokeWidth=2;fontFamily=Tahoma;fillColor=#f0a30a;fontColor=#FFFFFF;strokeColor=#BD7000;\" parent=\"1\" vertex=\"1\">\n          <mxGeometry x=\"421\" y=\"394\" width=\"120\" height=\"30\" as=\"geometry\" />\n        </mxCell>\n        <mxCell id=\"BWhVouGPxx9xCM-iD3RN-23\" value=\"\" style=\"endArrow=classic;html=1;rounded=0;strokeWidth=2;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontFamily=Roboto;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DRoboto;\" parent=\"1\" source=\"BWhVouGPxx9xCM-iD3RN-2\" target=\"BWhVouGPxx9xCM-iD3RN-22\" edge=\"1\">\n          <mxGeometry width=\"50\" height=\"50\" relative=\"1\" as=\"geometry\">\n            <mxPoint x=\"380\" y=\"300\" as=\"sourcePoint\" />\n            <mxPoint x=\"431\" y=\"365\" as=\"targetPoint\" />\n          </mxGeometry>\n        </mxCell>\n        <mxCell id=\"BWhVouGPxx9xCM-iD3RN-32\" value=\"Key&lt;br&gt;Reader\" style=\"shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;strokeWidth=2;fontFamily=Tahoma;fillColor=#1ba1e2;fontColor=#ffffff;strokeColor=#006EAF;\" parent=\"1\" vertex=\"1\">\n          <mxGeometry x=\"-80\" y=\"384\" width=\"90\" height=\"50\" as=\"geometry\" />\n        </mxCell>\n        <mxCell id=\"BWhVouGPxx9xCM-iD3RN-33\" value=\"Source&lt;br&gt;Redis\" style=\"shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;fontSize=12;strokeWidth=2;fontFamily=Tahoma;\" parent=\"1\" vertex=\"1\">\n          <mxGeometry x=\"-201\" y=\"369\" width=\"60\" height=\"80\" as=\"geometry\" />\n        </mxCell>\n        <mxCell id=\"BWhVouGPxx9xCM-iD3RN-34\" value=\"\" style=\"endArrow=classic;html=1;rounded=0;fontSize=12;strokeWidth=2;fontFamily=Roboto;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DRoboto;\" parent=\"1\" source=\"BWhVouGPxx9xCM-iD3RN-33\" target=\"BWhVouGPxx9xCM-iD3RN-32\" edge=\"1\">\n          <mxGeometry width=\"50\" height=\"50\" relative=\"1\" as=\"geometry\">\n            <mxPoint x=\"-90\" y=\"521\" as=\"sourcePoint\" />\n            <mxPoint x=\"-40\" y=\"471\" as=\"targetPoint\" />\n          </mxGeometry>\n        </mxCell>\n        <mxCell id=\"BWhVouGPxx9xCM-iD3RN-35\" value=\"&lt;font color=&quot;#4d4d4d&quot;&gt;Target&lt;br&gt;Redis&lt;/font&gt;\" style=\"shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;fontSize=12;strokeWidth=2;fontFamily=Tahoma;\" parent=\"1\" vertex=\"1\">\n          <mxGeometry x=\"577\" y=\"369\" width=\"60\" height=\"80\" as=\"geometry\" />\n        </mxCell>\n        <mxCell id=\"BWhVouGPxx9xCM-iD3RN-39\" value=\"\" style=\"rounded=0;whiteSpace=wrap;html=1;fontSize=12;fontColor=#FFFFFF;strokeWidth=2;fillColor=none;dashed=1;fontFamily=Tahoma;movable=1;resizable=1;rotatable=1;deletable=1;editable=1;locked=0;connectable=1;\" parent=\"1\" vertex=\"1\">\n          <mxGeometry x=\"-110\" y=\"306\" width=\"500\" height=\"206\" as=\"geometry\" />\n        </mxCell>\n        <mxCell id=\"BWhVouGPxx9xCM-iD3RN-36\" value=\"\" style=\"endArrow=classic;html=1;rounded=0;fontSize=12;strokeWidth=2;exitX=1;exitY=0.5;exitDx=0;exitDy=0;fontFamily=Roboto;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DRoboto;\" parent=\"1\" source=\"BWhVouGPxx9xCM-iD3RN-22\" target=\"BWhVouGPxx9xCM-iD3RN-35\" edge=\"1\">\n          <mxGeometry width=\"50\" height=\"50\" relative=\"1\" as=\"geometry\">\n            <mxPoint x=\"686\" y=\"530\" as=\"sourcePoint\" />\n            <mxPoint x=\"276\" y=\"420\" as=\"targetPoint\" />\n          </mxGeometry>\n        </mxCell>\n        <mxCell id=\"BWhVouGPxx9xCM-iD3RN-40\" value=\"Reader\" style=\"text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;dashed=1;fontSize=12;fontColor=#000000;fontStyle=0;fontFamily=Tahoma;\" parent=\"1\" vertex=\"1\">\n          <mxGeometry x=\"-100\" y=\"305\" width=\"60\" height=\"30\" as=\"geometry\" />\n        </mxCell>\n        <mxCell id=\"BWhVouGPxx9xCM-iD3RN-47\" value=\"1\" style=\"ellipse;aspect=fixed;strokeWidth=2;fontFamily=Tahoma;spacingBottom=0;spacingRight=0;strokeColor=none;fontSize=12;fontColor=#FFFFFF;fillColor=#000000;align=center;spacing=0;\" parent=\"1\" vertex=\"1\">\n          <mxGeometry x=\"-47\" y=\"358\" width=\"20\" height=\"20\" as=\"geometry\" />\n        </mxCell>\n        <mxCell id=\"BWhVouGPxx9xCM-iD3RN-50\" value=\"2\" style=\"ellipse;aspect=fixed;strokeWidth=2;fontFamily=Tahoma;spacingBottom=0;spacingRight=0;strokeColor=none;fontSize=12;fontColor=#FFFFFF;fillColor=#000000;align=center;spacing=0;\" parent=\"1\" vertex=\"1\">\n          <mxGeometry x=\"131\" y=\"311\" width=\"20\" height=\"20\" as=\"geometry\" />\n        </mxCell>\n        <mxCell id=\"BWhVouGPxx9xCM-iD3RN-51\" value=\"3\" style=\"ellipse;aspect=fixed;strokeWidth=2;fontFamily=Tahoma;spacingBottom=0;spacingRight=0;strokeColor=none;fontSize=12;fontColor=#FFFFFF;fillColor=#000000;align=center;spacing=0;\" parent=\"1\" vertex=\"1\">\n          <mxGeometry x=\"305.5\" y=\"358\" width=\"20\" height=\"20\" as=\"geometry\" />\n        </mxCell>\n      </root>\n    </mxGraphModel>\n  </diagram>\n  <diagram name=\"architecture\" id=\"ODR4dkZ7I7xwBjQUQf57\">\n    <mxGraphModel dx=\"2092\" dy=\"878\" grid=\"1\" gridSize=\"10\" guides=\"1\" tooltips=\"1\" connect=\"1\" arrows=\"1\" fold=\"1\" page=\"1\" pageScale=\"1\" pageWidth=\"850\" pageHeight=\"1100\" math=\"0\" shadow=\"0\">\n      <root>\n        <mxCell id=\"uztSmSV46VeNbiqf2ovN-0\" />\n        <mxCell id=\"uztSmSV46VeNbiqf2ovN-1\" parent=\"uztSmSV46VeNbiqf2ovN-0\" />\n        <mxCell id=\"8OvxNgvBWE0soaQgyxwU-19\" value=\"Source\" style=\"shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;fontSize=12;strokeWidth=2;fontFamily=Tahoma;\" parent=\"uztSmSV46VeNbiqf2ovN-1\" vertex=\"1\">\n          <mxGeometry x=\"-150\" y=\"371.63\" width=\"60\" height=\"80\" as=\"geometry\" />\n        </mxCell>\n        <mxCell id=\"8OvxNgvBWE0soaQgyxwU-21\" value=\"&lt;font color=&quot;#4d4d4d&quot;&gt;Target&lt;/font&gt;\" style=\"shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;fontSize=12;strokeWidth=2;fontFamily=Tahoma;\" parent=\"uztSmSV46VeNbiqf2ovN-1\" vertex=\"1\">\n          <mxGeometry x=\"650\" y=\"371.63\" width=\"60\" height=\"80\" as=\"geometry\" />\n        </mxCell>\n        <mxCell id=\"8OvxNgvBWE0soaQgyxwU-83\" value=\"\" style=\"endArrow=none;html=1;rounded=0;fontFamily=Roboto;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DRoboto;fontSize=12;fontColor=#000000;strokeWidth=2;\" parent=\"uztSmSV46VeNbiqf2ovN-1\" source=\"8OvxNgvBWE0soaQgyxwU-19\" target=\"8OvxNgvBWE0soaQgyxwU-64\" edge=\"1\">\n          <mxGeometry width=\"50\" height=\"50\" relative=\"1\" as=\"geometry\">\n            <mxPoint x=\"-160\" y=\"398.695652173913\" as=\"sourcePoint\" />\n            <mxPoint x=\"-20\" y=\"350.608695652174\" as=\"targetPoint\" />\n          </mxGeometry>\n        </mxCell>\n        <mxCell id=\"8OvxNgvBWE0soaQgyxwU-89\" value=\"\" style=\"group;fontFamily=Tahoma;\" parent=\"uztSmSV46VeNbiqf2ovN-1\" vertex=\"1\" connectable=\"0\">\n          <mxGeometry x=\"-73.00000000000003\" y=\"337\" width=\"60\" height=\"48\" as=\"geometry\" />\n        </mxCell>\n        <mxCell id=\"8OvxNgvBWE0soaQgyxwU-66\" value=\"Batch\" style=\"text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;labelBackgroundColor=none;fontFamily=Tahoma;fontSize=12;fontColor=#000000;\" parent=\"8OvxNgvBWE0soaQgyxwU-89\" vertex=\"1\">\n          <mxGeometry y=\"18\" width=\"60\" height=\"30\" as=\"geometry\" />\n        </mxCell>\n        <mxCell id=\"8OvxNgvBWE0soaQgyxwU-64\" value=\"\" style=\"sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#4D4D4D;strokeColor=none;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.iot_analytics_data_store;fontFamily=Roboto;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DRoboto;rotation=90;\" parent=\"8OvxNgvBWE0soaQgyxwU-89\" vertex=\"1\">\n          <mxGeometry x=\"17.32000000000002\" y=\"-5.634999999999991\" width=\"25.36\" height=\"36.63\" as=\"geometry\" />\n        </mxCell>\n        <mxCell id=\"8OvxNgvBWE0soaQgyxwU-108\" value=\"\" style=\"group\" parent=\"uztSmSV46VeNbiqf2ovN-1\" vertex=\"1\" connectable=\"0\">\n          <mxGeometry x=\"562\" y=\"331\" width=\"60\" height=\"48\" as=\"geometry\" />\n        </mxCell>\n        <mxCell id=\"8OvxNgvBWE0soaQgyxwU-109\" value=\"\" style=\"sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#4D4D4D;strokeColor=none;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.iot_analytics_data_store;fontFamily=Roboto;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DRoboto;rotation=90;\" parent=\"8OvxNgvBWE0soaQgyxwU-108\" vertex=\"1\">\n          <mxGeometry x=\"17.32000000000002\" y=\"-5.634999999999991\" width=\"25.36\" height=\"36.63\" as=\"geometry\" />\n        </mxCell>\n        <mxCell id=\"8OvxNgvBWE0soaQgyxwU-110\" value=\"\" style=\"endArrow=classic;html=1;rounded=0;fontFamily=Roboto;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DRoboto;fontSize=12;fontColor=#000000;strokeWidth=2;startArrow=none;\" parent=\"uztSmSV46VeNbiqf2ovN-1\" source=\"8OvxNgvBWE0soaQgyxwU-109\" target=\"8OvxNgvBWE0soaQgyxwU-21\" edge=\"1\">\n          <mxGeometry width=\"50\" height=\"50\" relative=\"1\" as=\"geometry\">\n            <mxPoint x=\"1175.3200000000002\" y=\"342.11\" as=\"sourcePoint\" />\n            <mxPoint x=\"580\" y=\"460\" as=\"targetPoint\" />\n          </mxGeometry>\n        </mxCell>\n        <mxCell id=\"8OvxNgvBWE0soaQgyxwU-134\" value=\"\" style=\"group;fillColor=none;container=0;strokeColor=default;dashed=1;strokeWidth=2;\" parent=\"uztSmSV46VeNbiqf2ovN-1\" vertex=\"1\" connectable=\"0\">\n          <mxGeometry y=\"259\" width=\"560\" height=\"81.63\" as=\"geometry\" />\n        </mxCell>\n        <mxCell id=\"8OvxNgvBWE0soaQgyxwU-137\" value=\"&lt;font color=&quot;#4d4d4d&quot;&gt;Thread&lt;/font&gt;\" style=\"text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=bottom;whiteSpace=wrap;rounded=0;dashed=1;labelBackgroundColor=none;fontFamily=Tahoma;fontSize=12;fontColor=#FFFFFF;\" parent=\"uztSmSV46VeNbiqf2ovN-1\" vertex=\"1\">\n          <mxGeometry y=\"229\" width=\"60\" height=\"30\" as=\"geometry\" />\n        </mxCell>\n        <mxCell id=\"8OvxNgvBWE0soaQgyxwU-33\" value=\"Reader\" style=\"shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;fontFamily=Tahoma;fontSize=12;fontColor=#ffffff;strokeWidth=2;fillColor=#1ba1e2;strokeColor=#006EAF;\" parent=\"uztSmSV46VeNbiqf2ovN-1\" vertex=\"1\">\n          <mxGeometry x=\"19\" y=\"271\" width=\"120\" height=\"60\" as=\"geometry\" />\n        </mxCell>\n        <mxCell id=\"8OvxNgvBWE0soaQgyxwU-68\" value=\"Processor\" style=\"shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;fontFamily=Tahoma;fontSize=12;fontColor=#ffffff;strokeWidth=2;fillColor=#647687;strokeColor=#314354;\" parent=\"uztSmSV46VeNbiqf2ovN-1\" vertex=\"1\">\n          <mxGeometry x=\"223\" y=\"271\" width=\"120\" height=\"60\" as=\"geometry\" />\n        </mxCell>\n        <mxCell id=\"8OvxNgvBWE0soaQgyxwU-70\" value=\"Writer\" style=\"shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;fontFamily=Tahoma;fontSize=12;fontColor=#FFFFFF;strokeWidth=2;fillColor=#f0a30a;strokeColor=#BD7000;\" parent=\"uztSmSV46VeNbiqf2ovN-1\" vertex=\"1\">\n          <mxGeometry x=\"419\" y=\"271\" width=\"120\" height=\"60\" as=\"geometry\" />\n        </mxCell>\n        <mxCell id=\"8OvxNgvBWE0soaQgyxwU-93\" value=\"\" style=\"endArrow=none;html=1;rounded=0;fontFamily=Roboto;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DRoboto;fontSize=12;fontColor=#000000;strokeWidth=2;\" parent=\"uztSmSV46VeNbiqf2ovN-1\" source=\"8OvxNgvBWE0soaQgyxwU-33\" target=\"8OvxNgvBWE0soaQgyxwU-96\" edge=\"1\">\n          <mxGeometry width=\"50\" height=\"50\" relative=\"1\" as=\"geometry\">\n            <mxPoint x=\"89\" y=\"488.98411487018086\" as=\"sourcePoint\" />\n            <mxPoint x=\"229\" y=\"440.718695652174\" as=\"targetPoint\" />\n          </mxGeometry>\n        </mxCell>\n        <mxCell id=\"8OvxNgvBWE0soaQgyxwU-94\" value=\"\" style=\"group\" parent=\"uztSmSV46VeNbiqf2ovN-1\" vertex=\"1\" connectable=\"0\">\n          <mxGeometry x=\"148.99999999999997\" y=\"288\" width=\"60\" height=\"48\" as=\"geometry\" />\n        </mxCell>\n        <mxCell id=\"8OvxNgvBWE0soaQgyxwU-96\" value=\"\" style=\"sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#4D4D4D;strokeColor=none;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.iot_analytics_data_store;fontFamily=Roboto;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DRoboto;rotation=90;\" parent=\"8OvxNgvBWE0soaQgyxwU-94\" vertex=\"1\">\n          <mxGeometry x=\"17.32000000000002\" y=\"-5.634999999999991\" width=\"25.36\" height=\"36.63\" as=\"geometry\" />\n        </mxCell>\n        <mxCell id=\"8OvxNgvBWE0soaQgyxwU-97\" value=\"\" style=\"endArrow=classic;html=1;rounded=0;fontFamily=Roboto;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DRoboto;fontSize=12;fontColor=#000000;strokeWidth=2;startArrow=none;\" parent=\"uztSmSV46VeNbiqf2ovN-1\" source=\"8OvxNgvBWE0soaQgyxwU-96\" target=\"8OvxNgvBWE0soaQgyxwU-68\" edge=\"1\">\n          <mxGeometry width=\"50\" height=\"50\" relative=\"1\" as=\"geometry\">\n            <mxPoint x=\"767.32\" y=\"178.11\" as=\"sourcePoint\" />\n            <mxPoint x=\"229\" y=\"441.0015211970075\" as=\"targetPoint\" />\n          </mxGeometry>\n        </mxCell>\n        <mxCell id=\"8OvxNgvBWE0soaQgyxwU-102\" value=\"\" style=\"endArrow=none;html=1;rounded=0;fontFamily=Roboto;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DRoboto;fontSize=12;fontColor=#000000;strokeWidth=2;\" parent=\"uztSmSV46VeNbiqf2ovN-1\" source=\"8OvxNgvBWE0soaQgyxwU-68\" target=\"8OvxNgvBWE0soaQgyxwU-104\" edge=\"1\">\n          <mxGeometry width=\"50\" height=\"50\" relative=\"1\" as=\"geometry\">\n            <mxPoint x=\"380\" y=\"367.2080000000003\" as=\"sourcePoint\" />\n            <mxPoint x=\"470\" y=\"504.718695652174\" as=\"targetPoint\" />\n          </mxGeometry>\n        </mxCell>\n        <mxCell id=\"8OvxNgvBWE0soaQgyxwU-103\" value=\"\" style=\"group\" parent=\"uztSmSV46VeNbiqf2ovN-1\" vertex=\"1\" connectable=\"0\">\n          <mxGeometry x=\"349\" y=\"288\" width=\"60\" height=\"48\" as=\"geometry\" />\n        </mxCell>\n        <mxCell id=\"8OvxNgvBWE0soaQgyxwU-104\" value=\"\" style=\"sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#4D4D4D;strokeColor=none;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.iot_analytics_data_store;fontFamily=Roboto;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DRoboto;rotation=90;\" parent=\"8OvxNgvBWE0soaQgyxwU-103\" vertex=\"1\">\n          <mxGeometry x=\"17.32000000000002\" y=\"-5.634999999999991\" width=\"25.36\" height=\"36.63\" as=\"geometry\" />\n        </mxCell>\n        <mxCell id=\"8OvxNgvBWE0soaQgyxwU-105\" value=\"\" style=\"endArrow=classic;html=1;rounded=0;fontFamily=Roboto;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DRoboto;fontSize=12;fontColor=#000000;strokeWidth=2;startArrow=none;\" parent=\"uztSmSV46VeNbiqf2ovN-1\" source=\"8OvxNgvBWE0soaQgyxwU-104\" target=\"8OvxNgvBWE0soaQgyxwU-70\" edge=\"1\">\n          <mxGeometry width=\"50\" height=\"50\" relative=\"1\" as=\"geometry\">\n            <mxPoint x=\"1008.32\" y=\"242.11\" as=\"sourcePoint\" />\n            <mxPoint x=\"464\" y=\"367.12307692307695\" as=\"targetPoint\" />\n          </mxGeometry>\n        </mxCell>\n        <mxCell id=\"8OvxNgvBWE0soaQgyxwU-67\" value=\"\" style=\"endArrow=classic;html=1;rounded=0;fontFamily=Roboto;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DRoboto;fontSize=12;fontColor=#000000;strokeWidth=2;startArrow=none;entryX=0;entryY=0.5;entryDx=0;entryDy=0;\" parent=\"uztSmSV46VeNbiqf2ovN-1\" source=\"8OvxNgvBWE0soaQgyxwU-64\" target=\"8OvxNgvBWE0soaQgyxwU-33\" edge=\"1\">\n          <mxGeometry width=\"50\" height=\"50\" relative=\"1\" as=\"geometry\">\n            <mxPoint x=\"-51.684999999999945\" y=\"328.70931599999994\" as=\"sourcePoint\" />\n            <mxPoint x=\"568.32\" y=\"16\" as=\"targetPoint\" />\n          </mxGeometry>\n        </mxCell>\n        <mxCell id=\"8OvxNgvBWE0soaQgyxwU-107\" value=\"\" style=\"endArrow=none;html=1;rounded=0;fontFamily=Roboto;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DRoboto;fontSize=12;fontColor=#000000;strokeWidth=2;exitX=1;exitY=0.5;exitDx=0;exitDy=0;\" parent=\"uztSmSV46VeNbiqf2ovN-1\" source=\"8OvxNgvBWE0soaQgyxwU-70\" target=\"8OvxNgvBWE0soaQgyxwU-109\" edge=\"1\">\n          <mxGeometry width=\"50\" height=\"50\" relative=\"1\" as=\"geometry\">\n            <mxPoint x=\"510\" y=\"400.8000000000002\" as=\"sourcePoint\" />\n            <mxPoint x=\"637\" y=\"604.718695652174\" as=\"targetPoint\" />\n          </mxGeometry>\n        </mxCell>\n        <mxCell id=\"szU9DxH52JEA61ozMafs-32\" value=\"\" style=\"group\" parent=\"uztSmSV46VeNbiqf2ovN-1\" vertex=\"1\" connectable=\"0\">\n          <mxGeometry y=\"340\" width=\"560\" height=\"112.37\" as=\"geometry\" />\n        </mxCell>\n        <mxCell id=\"szU9DxH52JEA61ozMafs-17\" value=\"&lt;font color=&quot;#4d4d4d&quot;&gt;Thread&lt;/font&gt;\" style=\"text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=bottom;whiteSpace=wrap;rounded=0;dashed=1;labelBackgroundColor=none;fontFamily=Tahoma;fontSize=12;fontColor=#FFFFFF;\" parent=\"szU9DxH52JEA61ozMafs-32\" vertex=\"1\">\n          <mxGeometry width=\"60\" height=\"30\" as=\"geometry\" />\n        </mxCell>\n        <mxCell id=\"szU9DxH52JEA61ozMafs-31\" value=\"\" style=\"group\" parent=\"szU9DxH52JEA61ozMafs-32\" vertex=\"1\" connectable=\"0\">\n          <mxGeometry y=\"32.370000000000005\" width=\"560\" height=\"80\" as=\"geometry\" />\n        </mxCell>\n        <mxCell id=\"szU9DxH52JEA61ozMafs-15\" value=\"\" style=\"rounded=0;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontFamily=Roboto;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DRoboto;fontSize=12;fontColor=#FFFFFF;strokeWidth=2;fillColor=none;dashed=1;\" parent=\"szU9DxH52JEA61ozMafs-31\" vertex=\"1\">\n          <mxGeometry width=\"560\" height=\"80\" as=\"geometry\" />\n        </mxCell>\n        <mxCell id=\"szU9DxH52JEA61ozMafs-19\" value=\"Reader\" style=\"shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;fontFamily=Tahoma;fontSize=12;strokeWidth=2;dashed=1;\" parent=\"szU9DxH52JEA61ozMafs-31\" vertex=\"1\">\n          <mxGeometry x=\"19\" y=\"10\" width=\"120\" height=\"60\" as=\"geometry\" />\n        </mxCell>\n        <mxCell id=\"szU9DxH52JEA61ozMafs-20\" value=\"Processor\" style=\"shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;fontFamily=Tahoma;fontSize=12;strokeWidth=2;dashed=1;\" parent=\"szU9DxH52JEA61ozMafs-31\" vertex=\"1\">\n          <mxGeometry x=\"223\" y=\"10\" width=\"120\" height=\"60\" as=\"geometry\" />\n        </mxCell>\n        <mxCell id=\"szU9DxH52JEA61ozMafs-23\" style=\"edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fontFamily=Roboto;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DRoboto;fontSize=12;fontColor=#4D4D4D;strokeWidth=2;dashed=1;\" parent=\"szU9DxH52JEA61ozMafs-31\" source=\"szU9DxH52JEA61ozMafs-19\" target=\"szU9DxH52JEA61ozMafs-20\" edge=\"1\">\n          <mxGeometry relative=\"1\" as=\"geometry\" />\n        </mxCell>\n        <mxCell id=\"szU9DxH52JEA61ozMafs-21\" value=\"Writer\" style=\"shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;fontFamily=Tahoma;fontSize=12;strokeWidth=2;dashed=1;\" parent=\"szU9DxH52JEA61ozMafs-31\" vertex=\"1\">\n          <mxGeometry x=\"419\" y=\"10\" width=\"120\" height=\"60\" as=\"geometry\" />\n        </mxCell>\n        <mxCell id=\"szU9DxH52JEA61ozMafs-24\" style=\"edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;fontFamily=Roboto;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DRoboto;fontSize=12;fontColor=#4D4D4D;strokeWidth=2;\" parent=\"szU9DxH52JEA61ozMafs-31\" source=\"szU9DxH52JEA61ozMafs-20\" target=\"szU9DxH52JEA61ozMafs-21\" edge=\"1\">\n          <mxGeometry relative=\"1\" as=\"geometry\" />\n        </mxCell>\n        <mxCell id=\"szU9DxH52JEA61ozMafs-33\" value=\"\" style=\"group\" parent=\"uztSmSV46VeNbiqf2ovN-1\" vertex=\"1\" connectable=\"0\">\n          <mxGeometry y=\"452.37\" width=\"560\" height=\"110\" as=\"geometry\" />\n        </mxCell>\n        <mxCell id=\"szU9DxH52JEA61ozMafs-18\" value=\"&lt;font color=&quot;#4d4d4d&quot;&gt;Thread&lt;/font&gt;\" style=\"text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=bottom;whiteSpace=wrap;rounded=0;dashed=1;labelBackgroundColor=none;fontFamily=Tahoma;fontSize=12;fontColor=#FFFFFF;\" parent=\"szU9DxH52JEA61ozMafs-33\" vertex=\"1\">\n          <mxGeometry width=\"60\" height=\"30\" as=\"geometry\" />\n        </mxCell>\n        <mxCell id=\"szU9DxH52JEA61ozMafs-30\" value=\"\" style=\"group\" parent=\"szU9DxH52JEA61ozMafs-33\" vertex=\"1\" connectable=\"0\">\n          <mxGeometry y=\"30\" width=\"560\" height=\"80\" as=\"geometry\" />\n        </mxCell>\n        <mxCell id=\"szU9DxH52JEA61ozMafs-13\" value=\"\" style=\"rounded=0;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontFamily=Roboto;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DRoboto;fontSize=12;fontColor=#FFFFFF;strokeWidth=2;fillColor=none;dashed=1;\" parent=\"szU9DxH52JEA61ozMafs-30\" vertex=\"1\">\n          <mxGeometry width=\"560\" height=\"80\" as=\"geometry\" />\n        </mxCell>\n        <mxCell id=\"szU9DxH52JEA61ozMafs-26\" value=\"Reader\" style=\"shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;fontFamily=Tahoma;fontSize=12;strokeWidth=2;dashed=1;\" parent=\"szU9DxH52JEA61ozMafs-30\" vertex=\"1\">\n          <mxGeometry x=\"19\" y=\"10\" width=\"120\" height=\"60\" as=\"geometry\" />\n        </mxCell>\n        <mxCell id=\"szU9DxH52JEA61ozMafs-28\" value=\"Processor\" style=\"shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;fontFamily=Tahoma;fontSize=12;strokeWidth=2;dashed=1;\" parent=\"szU9DxH52JEA61ozMafs-30\" vertex=\"1\">\n          <mxGeometry x=\"223\" y=\"10\" width=\"120\" height=\"60\" as=\"geometry\" />\n        </mxCell>\n        <mxCell id=\"szU9DxH52JEA61ozMafs-25\" style=\"edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fontFamily=Roboto;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DRoboto;fontSize=12;fontColor=#4D4D4D;strokeWidth=2;dashed=1;\" parent=\"szU9DxH52JEA61ozMafs-30\" source=\"szU9DxH52JEA61ozMafs-26\" target=\"szU9DxH52JEA61ozMafs-28\" edge=\"1\">\n          <mxGeometry relative=\"1\" as=\"geometry\" />\n        </mxCell>\n        <mxCell id=\"szU9DxH52JEA61ozMafs-29\" value=\"Writer\" style=\"shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;fontFamily=Tahoma;fontSize=12;strokeWidth=2;dashed=1;\" parent=\"szU9DxH52JEA61ozMafs-30\" vertex=\"1\">\n          <mxGeometry x=\"419\" y=\"10\" width=\"120\" height=\"60\" as=\"geometry\" />\n        </mxCell>\n        <mxCell id=\"szU9DxH52JEA61ozMafs-27\" style=\"edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;fontFamily=Roboto;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DRoboto;fontSize=12;fontColor=#4D4D4D;strokeWidth=2;\" parent=\"szU9DxH52JEA61ozMafs-30\" source=\"szU9DxH52JEA61ozMafs-28\" target=\"szU9DxH52JEA61ozMafs-29\" edge=\"1\">\n          <mxGeometry relative=\"1\" as=\"geometry\" />\n        </mxCell>\n        <mxCell id=\"8OvxNgvBWE0soaQgyxwU-122\" value=\"\" style=\"endArrow=classic;html=1;rounded=0;fontFamily=Roboto;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DRoboto;fontSize=12;fontColor=#FFFFFF;strokeWidth=2;entryX=0;entryY=0.5;entryDx=0;entryDy=0;\" parent=\"uztSmSV46VeNbiqf2ovN-1\" source=\"8OvxNgvBWE0soaQgyxwU-19\" target=\"szU9DxH52JEA61ozMafs-19\" edge=\"1\">\n          <mxGeometry width=\"50\" height=\"50\" relative=\"1\" as=\"geometry\">\n            <mxPoint x=\"300\" y=\"460\" as=\"sourcePoint\" />\n            <mxPoint x=\"-31\" y=\"402\" as=\"targetPoint\" />\n          </mxGeometry>\n        </mxCell>\n        <mxCell id=\"8OvxNgvBWE0soaQgyxwU-129\" value=\"\" style=\"endArrow=classic;html=1;rounded=0;fontFamily=Roboto;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DRoboto;fontSize=12;fontColor=#FFFFFF;strokeWidth=2;entryX=0;entryY=0.5;entryDx=0;entryDy=0;\" parent=\"uztSmSV46VeNbiqf2ovN-1\" source=\"8OvxNgvBWE0soaQgyxwU-19\" target=\"szU9DxH52JEA61ozMafs-26\" edge=\"1\">\n          <mxGeometry width=\"50\" height=\"50\" relative=\"1\" as=\"geometry\">\n            <mxPoint x=\"-110\" y=\"428.5\" as=\"sourcePoint\" />\n            <mxPoint x=\"-21\" y=\"525\" as=\"targetPoint\" />\n          </mxGeometry>\n        </mxCell>\n        <mxCell id=\"8OvxNgvBWE0soaQgyxwU-130\" value=\"\" style=\"endArrow=classic;html=1;rounded=0;fontFamily=Roboto;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DRoboto;fontSize=12;fontColor=#000000;strokeWidth=2;startArrow=none;exitX=1;exitY=0.5;exitDx=0;exitDy=0;\" parent=\"uztSmSV46VeNbiqf2ovN-1\" source=\"szU9DxH52JEA61ozMafs-29\" target=\"8OvxNgvBWE0soaQgyxwU-21\" edge=\"1\">\n          <mxGeometry width=\"50\" height=\"50\" relative=\"1\" as=\"geometry\">\n            <mxPoint x=\"499\" y=\"525\" as=\"sourcePoint\" />\n            <mxPoint x=\"600\" y=\"430.58333333333326\" as=\"targetPoint\" />\n          </mxGeometry>\n        </mxCell>\n        <mxCell id=\"8OvxNgvBWE0soaQgyxwU-123\" value=\"\" style=\"endArrow=classic;html=1;rounded=0;fontFamily=Roboto;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DRoboto;fontSize=12;fontColor=#000000;strokeWidth=2;startArrow=none;exitX=1;exitY=0.5;exitDx=0;exitDy=0;\" parent=\"uztSmSV46VeNbiqf2ovN-1\" source=\"szU9DxH52JEA61ozMafs-21\" target=\"8OvxNgvBWE0soaQgyxwU-21\" edge=\"1\">\n          <mxGeometry width=\"50\" height=\"50\" relative=\"1\" as=\"geometry\">\n            <mxPoint x=\"509\" y=\"432\" as=\"sourcePoint\" />\n            <mxPoint x=\"606\" y=\"480\" as=\"targetPoint\" />\n          </mxGeometry>\n        </mxCell>\n      </root>\n    </mxGraphModel>\n  </diagram>\n</mxfile>\n"
  },
  {
    "path": "docs/guide/src/docs/resources/order.json",
    "content": "{\n  \"order_id\": 10248,\n  \"customer_id\": \"VINET\",\n  \"employee_id\": 5,\n  \"order_date\": \"1996-07-04\",\n  \"required_date\": \"1996-08-01\",\n  \"shipped_date\": \"1996-07-16\",\n  \"ship_via\": 3,\n  \"freight\": 32.38,\n  \"ship_name\": \"Vins et alcools Chevalier\",\n  \"ship_address\": \"59 rue de l'Abbaye\",\n  \"ship_city\": \"Reims\",\n  \"ship_postal_code\": \"51100\",\n  \"ship_country\": \"France\"\n}"
  },
  {
    "path": "docs/guide/src/docs/resources/redis-dump.json",
    "content": "[\n  {\n    \"key\": \"string:615\",\n    \"ttl\": -1,\n    \"value\": \"value:615\",\n    \"type\": \"STRING\"\n  },\n  {\n    \"key\": \"hash:511\",\n    \"ttl\": -1,\n    \"value\": {\n      \"field1\": \"value511\",\n      \"field2\": \"value511\"\n    },\n    \"type\": \"HASH\"\n  },\n  {\n    \"key\": \"list:1\",\n    \"ttl\": -1,\n    \"value\": [\n      \"member:991\",\n      \"member:981\"\n    ],\n    \"type\": \"LIST\"\n  },\n  {\n    \"key\": \"set:2\",\n    \"ttl\": -1,\n    \"value\": [\n      \"member:2\",\n      \"member:3\"\n    ],\n    \"type\": \"SET\"\n  },\n  {\n    \"key\": \"zset:0\",\n    \"ttl\": -1,\n    \"value\": [\n      {\n        \"value\": \"member:1\",\n        \"score\": 1.0\n      }\n    ],\n    \"type\": \"ZSET\"\n  },\n  {\n    \"key\": \"stream:0\",\n    \"ttl\": -1,\n    \"value\": [\n      {\n        \"stream\": \"stream:0\",\n        \"id\": \"1602190921109-0\",\n        \"body\": {\n          \"field1\": \"value0\",\n          \"field2\": \"value0\"\n        }\n      }\n    ],\n    \"type\": \"STREAM\"\n  }\n]"
  },
  {
    "path": "gradle/wrapper/gradle-wrapper.properties",
    "content": "distributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\ndistributionUrl=https\\://services.gradle.org/distributions/gradle-8.12.1-bin.zip\nnetworkTimeout=10000\nvalidateDistributionUrl=true\nzipStoreBase=GRADLE_USER_HOME\nzipStorePath=wrapper/dists\n"
  },
  {
    "path": "gradle.properties",
    "content": "#\n# SPDX-License-Identifier: Apache-2.0\n#\n# Copyright 2022-2023 The RIOT authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\ngroup                       = com.redis\nsourceCompatibility         = 17\ntargetCompatibility         = 17\ntestSourceCompatibility     = 17\ntestTargetCompatibility     = 17\nreproducibleBuild           = true\n\nbootPluginVersion           = 3.4.3\ndependencyPluginVersion     = 1.1.6\ngitPluginVersion            = 3.0.0\njacocoPluginVersion         = 0.8.12\njdksPluginVersion           = 1.15.0\nkordampBuildVersion         = 3.4.0\nkordampPluginVersion        = 0.54.0\n\nawsVersion                  = 3.3.0\ndatafakerVersion            = 2.4.2\ngcpVersion                  = 5.6.1\nlatencyUtilsVersion         = 2.0.3\nlettuceVersion              = 6.5.2.RELEASE\npicocliVersion              = 4.7.6\nprogressbarVersion          = 0.10.1\nprotobufVersion             = 4.29.1\nspringBatchRedisVersion     = 4.8.0\ntestcontainersRedisVersion  = 2.2.4\n\norg.gradle.daemon           = true\norg.gradle.caching          = true\norg.gradle.parallel         = false\nsystemProp.file.encoding    = utf-8\norg.gradle.jvmargs          = -Dfile.encoding=UTF-8\nsystemProp.javax.xml.parsers.SAXParserFactory       = com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl\nsystemProp.javax.xml.transform.TransformerFactory   = com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl\nsystemProp.javax.xml.parsers.DocumentBuilderFactory = com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl\n"
  },
  {
    "path": "gradlew",
    "content": "#!/bin/sh\n\n#\n# Copyright © 2015-2021 the original authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\n# SPDX-License-Identifier: Apache-2.0\n#\n\n##############################################################################\n#\n#   Gradle start up script for POSIX generated by Gradle.\n#\n#   Important for running:\n#\n#   (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is\n#       noncompliant, but you have some other compliant shell such as ksh or\n#       bash, then to run this script, type that shell name before the whole\n#       command line, like:\n#\n#           ksh Gradle\n#\n#       Busybox and similar reduced shells will NOT work, because this script\n#       requires all of these POSIX shell features:\n#         * functions;\n#         * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,\n#           «${var#prefix}», «${var%suffix}», and «$( cmd )»;\n#         * compound commands having a testable exit status, especially «case»;\n#         * various built-in commands including «command», «set», and «ulimit».\n#\n#   Important for patching:\n#\n#   (2) This script targets any POSIX shell, so it avoids extensions provided\n#       by Bash, Ksh, etc; in particular arrays are avoided.\n#\n#       The \"traditional\" practice of packing multiple parameters into a\n#       space-separated string is a well documented source of bugs and security\n#       problems, so this is (mostly) avoided, by progressively accumulating\n#       options in \"$@\", and eventually passing that to Java.\n#\n#       Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,\n#       and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;\n#       see the in-line comments for details.\n#\n#       There are tweaks for specific operating systems such as AIX, CygWin,\n#       Darwin, MinGW, and NonStop.\n#\n#   (3) This script is generated from the Groovy template\n#       https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt\n#       within the Gradle project.\n#\n#       You can find Gradle at https://github.com/gradle/gradle/.\n#\n##############################################################################\n\n# Attempt to set APP_HOME\n\n# Resolve links: $0 may be a link\napp_path=$0\n\n# Need this for daisy-chained symlinks.\nwhile\n    APP_HOME=${app_path%\"${app_path##*/}\"}  # leaves a trailing /; empty if no leading path\n    [ -h \"$app_path\" ]\ndo\n    ls=$( ls -ld \"$app_path\" )\n    link=${ls#*' -> '}\n    case $link in             #(\n      /*)   app_path=$link ;; #(\n      *)    app_path=$APP_HOME$link ;;\n    esac\ndone\n\n# This is normally unused\n# shellcheck disable=SC2034\nAPP_BASE_NAME=${0##*/}\n# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)\nAPP_HOME=$( cd -P \"${APP_HOME:-./}\" > /dev/null && printf '%s\\n' \"$PWD\" ) || exit\n\n# Use the maximum available, or set MAX_FD != -1 to use that value.\nMAX_FD=maximum\n\nwarn () {\n    echo \"$*\"\n} >&2\n\ndie () {\n    echo\n    echo \"$*\"\n    echo\n    exit 1\n} >&2\n\n# OS specific support (must be 'true' or 'false').\ncygwin=false\nmsys=false\ndarwin=false\nnonstop=false\ncase \"$( uname )\" in                #(\n  CYGWIN* )         cygwin=true  ;; #(\n  Darwin* )         darwin=true  ;; #(\n  MSYS* | MINGW* )  msys=true    ;; #(\n  NONSTOP* )        nonstop=true ;;\nesac\n\nCLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar\n\n\n# Determine the Java command to use to start the JVM.\nif [ -n \"$JAVA_HOME\" ] ; then\n    if [ -x \"$JAVA_HOME/jre/sh/java\" ] ; then\n        # IBM's JDK on AIX uses strange locations for the executables\n        JAVACMD=$JAVA_HOME/jre/sh/java\n    else\n        JAVACMD=$JAVA_HOME/bin/java\n    fi\n    if [ ! -x \"$JAVACMD\" ] ; then\n        die \"ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME\n\nPlease set the JAVA_HOME variable in your environment to match the\nlocation of your Java installation.\"\n    fi\nelse\n    JAVACMD=java\n    if ! command -v java >/dev/null 2>&1\n    then\n        die \"ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.\n\nPlease set the JAVA_HOME variable in your environment to match the\nlocation of your Java installation.\"\n    fi\nfi\n\n# Increase the maximum file descriptors if we can.\nif ! \"$cygwin\" && ! \"$darwin\" && ! \"$nonstop\" ; then\n    case $MAX_FD in #(\n      max*)\n        # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.\n        # shellcheck disable=SC2039,SC3045\n        MAX_FD=$( ulimit -H -n ) ||\n            warn \"Could not query maximum file descriptor limit\"\n    esac\n    case $MAX_FD in  #(\n      '' | soft) :;; #(\n      *)\n        # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.\n        # shellcheck disable=SC2039,SC3045\n        ulimit -n \"$MAX_FD\" ||\n            warn \"Could not set maximum file descriptor limit to $MAX_FD\"\n    esac\nfi\n\n# Collect all arguments for the java command, stacking in reverse order:\n#   * args from the command line\n#   * the main class name\n#   * -classpath\n#   * -D...appname settings\n#   * --module-path (only if needed)\n#   * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.\n\n# For Cygwin or MSYS, switch paths to Windows format before running java\nif \"$cygwin\" || \"$msys\" ; then\n    APP_HOME=$( cygpath --path --mixed \"$APP_HOME\" )\n    CLASSPATH=$( cygpath --path --mixed \"$CLASSPATH\" )\n\n    JAVACMD=$( cygpath --unix \"$JAVACMD\" )\n\n    # Now convert the arguments - kludge to limit ourselves to /bin/sh\n    for arg do\n        if\n            case $arg in                                #(\n              -*)   false ;;                            # don't mess with options #(\n              /?*)  t=${arg#/} t=/${t%%/*}              # looks like a POSIX filepath\n                    [ -e \"$t\" ] ;;                      #(\n              *)    false ;;\n            esac\n        then\n            arg=$( cygpath --path --ignore --mixed \"$arg\" )\n        fi\n        # Roll the args list around exactly as many times as the number of\n        # args, so each arg winds up back in the position where it started, but\n        # possibly modified.\n        #\n        # NB: a `for` loop captures its iteration list before it begins, so\n        # changing the positional parameters here affects neither the number of\n        # iterations, nor the values presented in `arg`.\n        shift                   # remove old arg\n        set -- \"$@\" \"$arg\"      # push replacement arg\n    done\nfi\n\n\n# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.\nDEFAULT_JVM_OPTS='\"-Xmx64m\" \"-Xms64m\"'\n\n# Collect all arguments for the java command:\n#   * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,\n#     and any embedded shellness will be escaped.\n#   * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be\n#     treated as '${Hostname}' itself on the command line.\n\nset -- \\\n        \"-Dorg.gradle.appname=$APP_BASE_NAME\" \\\n        -classpath \"$CLASSPATH\" \\\n        org.gradle.wrapper.GradleWrapperMain \\\n        \"$@\"\n\n# Stop when \"xargs\" is not available.\nif ! command -v xargs >/dev/null 2>&1\nthen\n    die \"xargs is not available\"\nfi\n\n# Use \"xargs\" to parse quoted args.\n#\n# With -n1 it outputs one arg per line, with the quotes and backslashes removed.\n#\n# In Bash we could simply go:\n#\n#   readarray ARGS < <( xargs -n1 <<<\"$var\" ) &&\n#   set -- \"${ARGS[@]}\" \"$@\"\n#\n# but POSIX shell has neither arrays nor command substitution, so instead we\n# post-process each arg (as a line of input to sed) to backslash-escape any\n# character that might be a shell metacharacter, then use eval to reverse\n# that process (while maintaining the separation between arguments), and wrap\n# the whole thing up as a single \"set\" statement.\n#\n# This will of course break if any of these variables contains a newline or\n# an unmatched quote.\n#\n\neval \"set -- $(\n        printf '%s\\n' \"$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS\" |\n        xargs -n1 |\n        sed ' s~[^-[:alnum:]+,./:=@_]~\\\\&~g; ' |\n        tr '\\n' ' '\n    )\" '\"$@\"'\n\nexec \"$JAVACMD\" \"$@\"\n"
  },
  {
    "path": "gradlew.bat",
    "content": "@rem\r\n@rem Copyright 2015 the original author or authors.\r\n@rem\r\n@rem Licensed under the Apache License, Version 2.0 (the \"License\");\r\n@rem you may not use this file except in compliance with the License.\r\n@rem You may obtain a copy of the License at\r\n@rem\r\n@rem      https://www.apache.org/licenses/LICENSE-2.0\r\n@rem\r\n@rem Unless required by applicable law or agreed to in writing, software\r\n@rem distributed under the License is distributed on an \"AS IS\" BASIS,\r\n@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n@rem See the License for the specific language governing permissions and\r\n@rem limitations under the License.\r\n@rem\r\n@rem SPDX-License-Identifier: Apache-2.0\r\n@rem\r\n\r\n@if \"%DEBUG%\"==\"\" @echo off\r\n@rem ##########################################################################\r\n@rem\r\n@rem  Gradle startup script for Windows\r\n@rem\r\n@rem ##########################################################################\r\n\r\n@rem Set local scope for the variables with windows NT shell\r\nif \"%OS%\"==\"Windows_NT\" setlocal\r\n\r\nset DIRNAME=%~dp0\r\nif \"%DIRNAME%\"==\"\" set DIRNAME=.\r\n@rem This is normally unused\r\nset APP_BASE_NAME=%~n0\r\nset APP_HOME=%DIRNAME%\r\n\r\n@rem Resolve any \".\" and \"..\" in APP_HOME to make it shorter.\r\nfor %%i in (\"%APP_HOME%\") do set APP_HOME=%%~fi\r\n\r\n@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.\r\nset DEFAULT_JVM_OPTS=\"-Xmx64m\" \"-Xms64m\"\r\n\r\n@rem Find java.exe\r\nif defined JAVA_HOME goto findJavaFromJavaHome\r\n\r\nset JAVA_EXE=java.exe\r\n%JAVA_EXE% -version >NUL 2>&1\r\nif %ERRORLEVEL% equ 0 goto execute\r\n\r\necho. 1>&2\r\necho ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2\r\necho. 1>&2\r\necho Please set the JAVA_HOME variable in your environment to match the 1>&2\r\necho location of your Java installation. 1>&2\r\n\r\ngoto fail\r\n\r\n:findJavaFromJavaHome\r\nset JAVA_HOME=%JAVA_HOME:\"=%\r\nset JAVA_EXE=%JAVA_HOME%/bin/java.exe\r\n\r\nif exist \"%JAVA_EXE%\" goto execute\r\n\r\necho. 1>&2\r\necho ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2\r\necho. 1>&2\r\necho Please set the JAVA_HOME variable in your environment to match the 1>&2\r\necho location of your Java installation. 1>&2\r\n\r\ngoto fail\r\n\r\n:execute\r\n@rem Setup the command line\r\n\r\nset CLASSPATH=%APP_HOME%\\gradle\\wrapper\\gradle-wrapper.jar\r\n\r\n\r\n@rem Execute Gradle\r\n\"%JAVA_EXE%\" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% \"-Dorg.gradle.appname=%APP_BASE_NAME%\" -classpath \"%CLASSPATH%\" org.gradle.wrapper.GradleWrapperMain %*\r\n\r\n:end\r\n@rem End local scope for the variables with windows NT shell\r\nif %ERRORLEVEL% equ 0 goto mainEnd\r\n\r\n:fail\r\nrem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of\r\nrem the _cmd.exe /c_ return code!\r\nset EXIT_CODE=%ERRORLEVEL%\r\nif %EXIT_CODE% equ 0 set EXIT_CODE=1\r\nif not \"\"==\"%GRADLE_EXIT_CONSOLE%\" exit %EXIT_CODE%\r\nexit /b %EXIT_CODE%\r\n\r\n:mainEnd\r\nif \"%OS%\"==\"Windows_NT\" endlocal\r\n\r\n:omega\r\n"
  },
  {
    "path": "jreleaser.yml",
    "content": "environment:\n  properties:\n    jdkPathPrefix: 'plugins/riot/build/jdks'\n    jdkFilePrefix: 'zulu21.38.21-ca-jdk21.0.5'\n\nproject:\n  name: riot\n  description: Get data in and out of Redis with RIOT\n  longDescription: |\n    RIOT is a series of command-line utilities designed to help you get data in and out of Redis.\n\n    It supports many different sources and targets:\n     - Relational databases\n     - Files (CSV, JSON, XML)\n     - Data generators (Redis data structures, Faker)\n     - and Redis itself with live and/or snapshot replication.\n  links:\n    homepage: https://github.com/redis/riot\n    documentation: https://redis.github.io/riot\n  authors:\n    - Julien Ruaux\n  license: Apache-2.0\n  inceptionYear: 2020\n  stereotype: CLI\n  vendor: Redis\n  icons:\n    - url: https://raw.githubusercontent.com/redis/riot/main/src/media/icon_256x256.png\n      width: 256\n      height: 256\n  languages:\n    java:\n      groupId: com.redis\n      version: 21\n      multiProject: true\n      mainClass: com.redis.riot.Riot\n  tags: ['riot', 'redis', 'input', 'output', 'tool', 'data', 'import', 'export']\n\nplatform:\n  replacements:\n    aarch_64: aarch64\n\nrelease:\n  github:\n    overwrite: true\n    sign: true\n    issues:\n      enabled: true\n    changelog:\n      formatted: ALWAYS\n      preset: conventional-commits\n      contributors:\n        format: '- {{contributorName}}{{#contributorUsernameAsLink}} ({{.}}){{/contributorUsernameAsLink}}'\n      contentTemplate: 'src/jreleaser/changelog.tpl'\n      extraProperties:\n        categorizeScopes: true\n      labelers:\n        - label: 'i18n'\n          title: 'regex:^(?:i18n(?:\\(.*\\))?!?):\\s.*'\n          order: 120\n        - label: 'dependencies'\n          title: 'regex:^(?:deps(?:\\(.*\\))?!?):\\s.*'\n          order: 130\n        - label: 'allcontributors1'\n          title: 'regex:^docs: update .all-contributorsrc.*'\n          order: -1\n        - label: 'allcontributors2'\n          title: 'regex:^docs: update CONTRIBUTORS.md.*'\n          order: -2\n      categories:\n        - title: '🌐 Translation'\n          key: 'i18n'\n          order: 70\n          labels:\n            - 'i18n'\n        - title: '⚙️  Dependencies'\n          key: 'dependencies'\n          order: 80\n          labels:\n            - 'dependencies'\n        - title: 'allcontributors'\n          order: 59\n          labels:\n            - 'allcontributors1'\n            - 'allcontributors2'\n      hide:\n        categories:\n          - 'merge'\n          - 'allcontributors'\n        contributors:\n          - 'GitHub'\n          - 'allcontributors'\n          - 'dependabot'\n      replacers:\n        - search: 'i18n: '\n        - search: 'deps: '\n\nsigning:\n  active: ALWAYS\n  armored: true\n\ndeploy:\n  maven:\n    nexus2:\n      maven-central:\n        active: ALWAYS\n        url: https://s01.oss.sonatype.org/service/local\n        snapshotUrl: https://s01.oss.sonatype.org/content/repositories/snapshots\n        closeRepository: true\n        releaseRepository: true\n        stagingRepositories:\n          - build/repos/local/release\n\nannounce:\n  slack:\n    active: RELEASE\n    channel: '#field-engineering-announcements'\n    message: '🧨 RIOT {{projectVersion}} has been released! {{releaseNotesUrl}}'\n\nassemble:\n  jlink:\n    riot-standalone:\n      active: ALWAYS\n      java:\n        version: 21\n      imageName: '{{distributionName}}-{{projectEffectiveVersion}}'\n      executable: riot\n      fileSets:\n        - input: '.'\n          includes:\n            - LICENSE\n      jdeps:\n        multiRelease: base\n        ignoreMissingDeps: true\n        targets:\n          - 'plugins/riot/build/libs/riot-{{projectVersion}}.jar'\n      additionalModuleNames:\n        - 'java.security.sasl'\n        - 'java.security.jgss'\n        - 'jdk.crypto.cryptoki'\n        - 'jdk.crypto.ec'\n        - 'jdk.localedata'\n        - 'jdk.net'\n        - 'jdk.security.auth'\n        - 'jdk.security.jgss'\n      targetJdks:\n        - path: '{{jdkPathPrefix}}/zulu21Osx/{{jdkFilePrefix}}-macosx_x64/zulu-21.jdk/Contents/Home'\n          platform: 'osx-x86_64'\n        - path: '{{jdkPathPrefix}}/zulu21OsxArm/{{jdkFilePrefix}}-macosx_aarch64/zulu-21.jdk/Contents/Home'\n          platform: 'osx-aarch_64'\n        - path: '{{jdkPathPrefix}}/zulu21Linux/{{jdkFilePrefix}}-linux_x64'\n          platform: 'linux-x86_64'\n        - path: '{{jdkPathPrefix}}/zulu21LinuxArm/{{jdkFilePrefix}}-linux_aarch64'\n          platform: 'linux-aarch_64'\n        - path: '{{jdkPathPrefix}}/zulu21LinuxMusl/{{jdkFilePrefix}}-linux_musl_x64'\n          platform: 'linux_musl-x86_64'\n        - path: '{{jdkPathPrefix}}/zulu21LinuxMuslArm/{{jdkFilePrefix}}-linux_musl_aarch64'\n          platform: 'linux_musl-aarch_64'\n        - path: '{{jdkPathPrefix}}/zulu21Windows/{{jdkFilePrefix}}-win_x64'\n          platform: 'windows-x86_64'\n        - path: '{{jdkPathPrefix}}/zulu21WindowsArm/{{jdkFilePrefix}}-win_aarch64'\n          platform: 'windows-aarch_64'\n      mainJar:\n        path: 'plugins/riot/build/libs/riot-{{projectVersion}}.jar'\n      jars:\n        - pattern: 'plugins/riot/build/dependencies/flat/*.jar'\n\ndistributions:\n  riot:\n    docker:\n      active: ALWAYS\n      continueOnError: true\n      repository:\n        active: ALWAYS\n        commitMessage: 'riot {{tagName}}'\n      registries:\n        - serverName: DEFAULT\n          repositoryName: riotx\n      labels:\n        'org.opencontainers.image.title': 'riot'\n      imageNames:\n        - 'riotx/{{distributionName}}:{{tagName}}'\n        - 'riotx/{{distributionName}}:latest'\n      buildx:\n        enabled: true\n        platforms:\n          - 'linux/amd64'\n          - 'linux/arm64'\n    scoop:\n      active: ALWAYS\n      continueOnError: true\n      repository:\n        active: RELEASE\n        name: 'scoop'\n        commitMessage: 'riot {{tagName}}'\n    artifacts:\n      - path: plugins/{{distributionName}}/build/distributions/{{distributionName}}-{{projectVersion}}.zip\n        transform: '{{distributionName}}/{{distributionName}}-{{projectEffectiveVersion}}.zip'\n        extraProperties:\n          skipSpec: true\n      - path: plugins/{{distributionName}}/build/distributions/{{distributionName}}-{{projectVersion}}.tar\n        transform: '{{distributionName}}/{{distributionName}}-{{projectEffectiveVersion}}.tar'\n        extraProperties:\n          skipFlatpak: true\n\n  riot-standalone:\n    brew:\n      active: ALWAYS\n      continueOnError: true\n      formulaName: riot\n      multiPlatform: true\n      repository:\n        active: RELEASE\n        commitMessage: 'riot {{tagName}}'\n\nfiles:\n  artifacts:\n    - path: VERSION\n      extraProperties:\n        skipChecksum: true\n        skipSigning: true\n        skipSbom: true\n"
  },
  {
    "path": "plugins/LICENSE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n"
  },
  {
    "path": "plugins/riot/gradle.properties",
    "content": "#\n# SPDX-License-Identifier: Apache-2.0\n#\n# Copyright 2020-2023 The RIOT authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\nproject_description = RIOT\nautomatic.module.name = com.redis.riot\n"
  },
  {
    "path": "plugins/riot/riot.gradle",
    "content": "/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * Copyright 2020-2023 The RIOT authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nplugins {\n    id 'application'\n    id 'org.jreleaser.jdks'\n}\n\napplication {\n    applicationName = 'riot'\n    mainClass       = 'com.redis.riot.Riot'\n}\n\njar {\n    manifest {\n        attributes([\n            'Main-Class': 'com.redis.riot.Riot',\n            'Automatic-Module-Name': project.findProperty('automatic.module.name')\n        ])\n    }\n}\n\nstartScripts {\n    classpath = files('$APP_HOME/lib/*')\n}\n\ndependencies {\n    api(project(':riot-core')) {\n        exclude group: 'commons-logging', module: 'commons-logging'\n    }\n    api project(':riot-file')\n    api project(':riot-faker')\n    api group: 'com.redis', name: 'spring-batch-redis-core', version: springBatchRedisVersion\n    implementation group: 'org.latencyutils', name: 'LatencyUtils', version: latencyUtilsVersion\n    implementation 'org.springframework.batch:spring-batch-infrastructure'\n    implementation 'org.springframework.boot:spring-boot-autoconfigure'\n    implementation 'org.springframework:spring-jdbc'\n    implementation 'com.zaxxer:HikariCP'\n    implementation 'com.microsoft.sqlserver:mssql-jdbc'\n    implementation 'com.mysql:mysql-connector-j'\n    implementation 'com.oracle.database.jdbc:ojdbc11'\n    implementation 'org.postgresql:postgresql'\n    testImplementation(project(':riot-test'))\n    testImplementation group: 'com.redis', name: 'spring-batch-redis-test', version: springBatchRedisVersion\n    testImplementation 'org.springframework.boot:spring-boot-starter-jdbc'\n    testImplementation 'org.awaitility:awaitility'\n    testImplementation 'org.testcontainers:postgresql'\n    testImplementation 'org.testcontainers:oracle-xe'\n    testImplementation 'org.hsqldb:hsqldb'\n}\n\ndistributions {\n    main {\n        contents {\n            from('../..') {\n                include 'LICENSE'\n                include 'VERSION'\n            }\n        }\n    }\n}\n\njdks {\n    zulu21Linux {\n        platform = 'linux-x86_64'\n        url = 'https://cdn.azul.com/zulu/bin/zulu21.38.21-ca-jdk21.0.5-linux_x64.tar.gz'\n        checksum = '5320a33714f58c0104191d244759daa6a6d46819d447347ba9003132e5489d92'\n    }\n    zulu21LinuxArm {\n        platform = 'linux-aarch64'\n        url = 'https://cdn.azul.com/zulu/bin/zulu21.38.21-ca-jdk21.0.5-linux_aarch64.tar.gz'\n        checksum = '8bd387315620bb66a84945a51bcebb9016354b557c747e94d4837e68ea4077ec'\n    }\n    zulu21LinuxMusl {\n        platform = 'linux_musl-x86_64'\n        url = 'https://cdn.azul.com/zulu/bin/zulu21.38.21-ca-jdk21.0.5-linux_musl_x64.tar.gz'\n        checksum = '8d383d47238b44361761edc9e169a215560009b15a0f8f56090583fc4b4709b6'\n    }\n    zulu21LinuxMuslArm {\n        platform = 'linux_musl-aarch64'\n        url = 'https://cdn.azul.com/zulu/bin/zulu21.38.21-ca-jdk21.0.5-linux_musl_aarch64.tar.gz'\n        checksum = 'b4725425f48138c59e1ee53b59aa5217c5e4571b63d6a801af6809f1e74e95b9'\n    }\n    zulu21Windows {\n        platform = 'windows-x86_64'\n        url = 'https://cdn.azul.com/zulu/bin/zulu21.38.21-ca-jdk21.0.5-win_x64.zip'\n        checksum = '8dea44fd3a6f7ad0f42f38abc1371075710b58bed9bd8f093c2ef2d450dd2672'\n    }\n    zulu21WindowsArm {\n        platform = 'windows-aarch64'\n        url = 'https://cdn.azul.com/zulu/bin/zulu21.38.21-ca-jdk21.0.5-win_aarch64.zip'\n        checksum = 'f5ad7f539f74d12b6248c0fd9f4b416455dcf6803900b28e8d19054f3dcc6e98'\n    }\n    zulu21Osx {\n        platform = 'osx-x86_64'\n        url = 'https://cdn.azul.com/zulu/bin/zulu21.38.21-ca-jdk21.0.5-macosx_x64.zip'\n        checksum = 'a77a9c67d8f9a2341674bcea7056d9d70f69ff0850dd3874303641cc9cec2dfc'\n    }\n    zulu21OsxArm {\n        platform = 'osx-aarch64'\n        url = 'https://cdn.azul.com/zulu/bin/zulu21.38.21-ca-jdk21.0.5-macosx_aarch64.zip'\n        checksum = 'd5c289ce2c8c67f414ede3b170dea72ca9a1322520498325a51d83bbaa94d1f0'\n    }\n}\n\n\nbootStartScripts.dependsOn jar\n\nafterEvaluate {\n    def copyJdksToCache = project.tasks.findByName('copyJdksToCache')\n    ['zulu21Linux', 'zulu21LinuxArm', 'zulu21LinuxMusl', 'zulu21LinuxMuslArm',\n     'zulu21Windows', 'zulu21WindowsArm', 'zulu21Osx', 'zulu21OsxArm'].each { jdk ->\n        def copyTask = project.tasks.findByName('copyJdkFromCache' + jdk.capitalize())\n        if (copyJdksToCache && copyTask) copyTask.dependsOn(copyJdksToCache)\n    }\n}\n\nmainClassName = \"com.redis.riot.Riot\"\n\ntask copyRuntimeDependencies(type: Copy) {\n    into \"$buildDir/dependencies/flat\"\n    from configurations.runtimeClasspath\n}\n\nassemble.dependsOn(copyRuntimeDependencies)"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/AbstractCompareCommand.java",
    "content": "package com.redis.riot;\n\nimport java.time.temporal.ChronoUnit;\nimport java.util.stream.Collectors;\n\nimport org.springframework.batch.item.ItemProcessor;\nimport org.springframework.batch.item.ItemWriter;\nimport org.springframework.batch.item.function.FunctionItemProcessor;\nimport org.springframework.expression.spel.support.StandardEvaluationContext;\nimport org.springframework.util.Assert;\n\nimport com.redis.riot.core.ProcessingItemWriter;\nimport com.redis.riot.core.RiotDuration;\nimport com.redis.riot.core.RiotUtils;\nimport com.redis.riot.core.Step;\nimport com.redis.riot.function.StringKeyValue;\nimport com.redis.riot.function.ToStringKeyValue;\nimport com.redis.spring.batch.item.redis.RedisItemReader;\nimport com.redis.spring.batch.item.redis.common.KeyValue;\nimport com.redis.spring.batch.item.redis.reader.DefaultKeyComparator;\nimport com.redis.spring.batch.item.redis.reader.KeyComparator;\nimport com.redis.spring.batch.item.redis.reader.KeyComparisonItemWriter;\nimport com.redis.spring.batch.item.redis.reader.KeyComparisonStat;\nimport com.redis.spring.batch.item.redis.reader.KeyComparisonStats;\nimport com.redis.spring.batch.item.redis.reader.RedisScanSizeEstimator;\n\nimport io.lettuce.core.codec.ByteArrayCodec;\nimport picocli.CommandLine.ArgGroup;\nimport picocli.CommandLine.Option;\n\npublic abstract class AbstractCompareCommand extends AbstractRedisTargetExportCommand {\n\n\tpublic static final RiotDuration DEFAULT_TTL_TOLERANCE = RiotDuration.of(DefaultKeyComparator.DEFAULT_TTL_TOLERANCE,\n\t\t\tChronoUnit.SECONDS);\n\tpublic static final boolean DEFAULT_COMPARE_STREAM_MESSAGE_ID = true;\n\n\tprivate static final String COMPARE_TASK_NAME = \"Comparing\";\n\n\t@Option(names = \"--show-diffs\", description = \"Print details of key mismatches during dataset verification. Disables progress reporting.\")\n\tprivate boolean showDiffs;\n\n\t@Option(names = \"--ttl-tolerance\", description = \"Max TTL delta to consider keys equal (default: ${DEFAULT-VALUE}).\", paramLabel = \"<dur>\")\n\tprivate RiotDuration ttlTolerance = DEFAULT_TTL_TOLERANCE;\n\n\t@ArgGroup(exclusive = false)\n\tprivate EvaluationContextArgs evaluationContextArgs = new EvaluationContextArgs();\n\n\t@ArgGroup(exclusive = false, heading = \"Processor options%n\")\n\tprivate KeyValueProcessorArgs processorArgs = new KeyValueProcessorArgs();\n\n\tprotected abstract boolean isStruct();\n\n\tprotected ItemProcessor<KeyValue<byte[]>, KeyValue<byte[]>> filter() {\n\t\treturn new KeyValueFilter<>(ByteArrayCodec.INSTANCE);\n\t}\n\n\tprotected ItemWriter<KeyValue<byte[]>> processingWriter(ItemWriter<KeyValue<byte[]>> writer) {\n\t\tif (isIgnoreStreamMessageId()) {\n\t\t\tAssert.isTrue(isStruct(), \"--no-stream-id can only be used with --struct\");\n\t\t}\n\t\tStandardEvaluationContext evaluationContext = evaluationContext();\n\t\tlog.info(\"Creating processor with {}\", processorArgs);\n\t\tItemProcessor<KeyValue<String>, KeyValue<String>> processor = processorArgs.processor(evaluationContext);\n\t\tif (processor == null) {\n\t\t\treturn writer;\n\t\t}\n\t\tToStringKeyValue<byte[]> code = new ToStringKeyValue<>(ByteArrayCodec.INSTANCE);\n\t\tStringKeyValue<byte[]> decode = new StringKeyValue<>(ByteArrayCodec.INSTANCE);\n\t\tItemProcessor<KeyValue<byte[]>, KeyValue<byte[]>> finalProcessor = RiotUtils\n\t\t\t\t.processor(new FunctionItemProcessor<>(code), processor, new FunctionItemProcessor<>(decode));\n\t\treturn new ProcessingItemWriter<>(finalProcessor, writer);\n\t}\n\n\tprivate StandardEvaluationContext evaluationContext() {\n\t\tlog.info(\"Creating SpEL evaluation context with {}\", evaluationContextArgs);\n\t\tStandardEvaluationContext evaluationContext = evaluationContextArgs.evaluationContext();\n\t\tconfigure(evaluationContext);\n\t\treturn evaluationContext;\n\t}\n\n\tprivate String compareMessage(KeyComparisonStats stats) {\n\t\treturn CompareStepListener.statsByStatus(stats).stream()\n\t\t\t\t.map(e -> String.format(\"%s %d\", e.getKey(),\n\t\t\t\t\t\te.getValue().stream().collect(Collectors.summingLong(KeyComparisonStat::getCount))))\n\t\t\t\t.collect(Collectors.joining(\" | \"));\n\t}\n\n\tprotected Step<KeyValue<byte[]>, KeyValue<byte[]>> compareStep() {\n\t\tRedisItemReader<byte[], byte[]> sourceReader = compareSourceReader();\n\t\tRedisItemReader<byte[], byte[]> targetReader = compareTargetReader();\n\t\tKeyComparisonItemWriter<byte[], byte[]> writer = new KeyComparisonItemWriter<>(targetReader, keyComparator());\n\t\tif (showDiffs) {\n\t\t\tlog.info(\"Adding key diff logger\");\n\t\t\twriter.addListener(new CompareLoggingWriteListener<>(ByteArrayCodec.INSTANCE));\n\t\t}\n\t\tStep<KeyValue<byte[]>, KeyValue<byte[]>> step = new Step<>(sourceReader, processingWriter(writer));\n\t\tstep.processor(filter());\n\t\tstep.taskName(COMPARE_TASK_NAME);\n\t\tstep.statusMessageSupplier(() -> compareMessage(writer.getStats()));\n\t\tstep.maxItemCountSupplier(RedisScanSizeEstimator.from(sourceReader));\n\t\tstep.executionListener(new CompareStepListener(writer.getStats()));\n\t\treturn step;\n\t}\n\n\tprivate RedisItemReader<byte[], byte[]> compareRedisReader() {\n\t\tif (isQuickCompare()) {\n\t\t\tlog.info(\"Creating Redis quick compare reader\");\n\t\t\treturn RedisItemReader.type(ByteArrayCodec.INSTANCE);\n\t\t}\n\t\tlog.info(\"Creating Redis full compare reader\");\n\t\treturn RedisItemReader.struct(ByteArrayCodec.INSTANCE);\n\t}\n\n\tprotected abstract boolean isQuickCompare();\n\n\tprivate KeyComparator<byte[]> keyComparator() {\n\t\tboolean ignoreStreamId = isIgnoreStreamMessageId();\n\t\tlog.info(\"Creating KeyComparator with ttlTolerance={} ignoreStreamMessageId={}\", ttlTolerance, ignoreStreamId);\n\t\tDefaultKeyComparator<byte[], byte[]> comparator = new DefaultKeyComparator<>(ByteArrayCodec.INSTANCE);\n\t\tcomparator.setIgnoreStreamMessageId(ignoreStreamId);\n\t\tcomparator.setTtlTolerance(ttlTolerance.getValue());\n\t\treturn comparator;\n\t}\n\n\tprotected boolean isIgnoreStreamMessageId() {\n\t\treturn processorArgs.isNoStreamIds();\n\t}\n\n\tprivate RedisItemReader<byte[], byte[]> compareSourceReader() {\n\t\tRedisItemReader<byte[], byte[]> reader = compareRedisReader();\n\t\tconfigureSourceRedisReader(reader);\n\t\treturn reader;\n\t}\n\n\tprivate RedisItemReader<byte[], byte[]> compareTargetReader() {\n\t\tRedisItemReader<byte[], byte[]> reader = compareRedisReader();\n\t\tconfigureTargetRedisReader(reader);\n\t\treturn reader;\n\t}\n\n\tpublic boolean isShowDiffs() {\n\t\treturn showDiffs;\n\t}\n\n\tpublic void setShowDiffs(boolean showDiffs) {\n\t\tthis.showDiffs = showDiffs;\n\t}\n\n\tpublic RiotDuration getTtlTolerance() {\n\t\treturn ttlTolerance;\n\t}\n\n\tpublic void setTtlTolerance(RiotDuration tolerance) {\n\t\tthis.ttlTolerance = tolerance;\n\t}\n\n\tpublic KeyValueProcessorArgs getProcessorArgs() {\n\t\treturn processorArgs;\n\t}\n\n\tpublic void setProcessorArgs(KeyValueProcessorArgs args) {\n\t\tthis.processorArgs = args;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/AbstractExportCommand.java",
    "content": "package com.redis.riot;\n\nimport org.springframework.batch.item.ItemWriter;\nimport org.springframework.expression.spel.support.StandardEvaluationContext;\n\nimport com.redis.riot.core.AbstractJobCommand;\nimport com.redis.riot.core.Step;\nimport com.redis.spring.batch.item.redis.RedisItemReader;\nimport com.redis.spring.batch.item.redis.RedisItemReader.ReaderMode;\nimport com.redis.spring.batch.item.redis.RedisItemWriter;\nimport com.redis.spring.batch.item.redis.common.KeyValue;\nimport com.redis.spring.batch.item.redis.reader.KeyValueRead;\n\nimport picocli.CommandLine.ArgGroup;\nimport picocli.CommandLine.Option;\n\npublic abstract class AbstractExportCommand extends AbstractJobCommand {\n\n\tpublic static final ReaderMode DEFAULT_MODE = RedisItemReader.DEFAULT_MODE;\n\n\tprivate static final String TASK_NAME = \"Exporting\";\n\tprivate static final String VAR_SOURCE = \"source\";\n\n\t@Option(names = \"--mode\", description = \"Source for keys: ${COMPLETION-CANDIDATES} (default: ${DEFAULT-VALUE})\", paramLabel = \"<name>\")\n\tprivate ReaderMode mode = DEFAULT_MODE;\n\n\t@ArgGroup(exclusive = false)\n\tprivate RedisReaderArgs readerArgs = new RedisReaderArgs();\n\n\t@ArgGroup(exclusive = false)\n\tprivate RedisReaderLiveArgs readerLiveArgs = new RedisReaderLiveArgs();\n\n\t@ArgGroup(exclusive = false)\n\tprivate MemoryUsageArgs readerMemoryUsageArgs = new MemoryUsageArgs();\n\n\tprivate RedisContext sourceRedisContext;\n\n\t@Override\n\tprotected void initialize() {\n\t\tsuper.initialize();\n\t\tsourceRedisContext = sourceRedisContext();\n\t\tsourceRedisContext.afterPropertiesSet();\n\t}\n\n\t@Override\n\tprotected void teardown() {\n\t\tif (sourceRedisContext != null) {\n\t\t\tsourceRedisContext.close();\n\t\t}\n\t\tsuper.teardown();\n\t}\n\n\tprotected void configure(StandardEvaluationContext context) {\n\t\tcontext.setVariable(VAR_SOURCE, sourceRedisContext.getConnection().sync());\n\t}\n\n\tprotected void configureSourceRedisReader(RedisItemReader<?, ?> reader) {\n\t\tconfigureAsyncStreamSupport(reader);\n\t\tsourceRedisContext.configure(reader);\n\t\tlog.info(\"Configuring {} in {} mode\", reader.getName(), mode);\n\t\treader.setMode(mode);\n\t\tlog.info(\"Configuring {} with {}\", reader.getName(), readerArgs);\n\t\treaderArgs.configure(reader);\n\t\tif (mode != ReaderMode.SCAN) {\n\t\t\tlog.info(\"Configuring {} with {}\", reader.getName(), readerLiveArgs);\n\t\t\treaderLiveArgs.configure(reader);\n\t\t}\n\t\tif (readerMemoryUsageArgs.getLimit() != null && reader.getOperation() instanceof KeyValueRead) {\n\t\t\tlog.info(\"Configuring {} with {}\", reader.getName(), readerMemoryUsageArgs);\n\t\t\treaderMemoryUsageArgs.configure(reader);\n\t\t}\n\t}\n\n\tprotected void configureSourceRedisWriter(RedisItemWriter<?, ?, ?> writer) {\n\t\tlog.info(\"Configuring source writer with Redis context\");\n\t\tsourceRedisContext.configure(writer);\n\t}\n\n\tprotected abstract RedisContext sourceRedisContext();\n\n\tprotected <O> Step<KeyValue<String>, O> step(ItemWriter<O> writer) {\n\t\tRedisItemReader<String, String> reader = RedisItemReader.struct();\n\t\tconfigureSourceRedisReader(reader);\n\t\tStep<KeyValue<String>, O> step = new ExportStepHelper(log).step(reader, writer);\n\t\tstep.taskName(TASK_NAME);\n\t\treturn step;\n\t}\n\n\tpublic ReaderMode getMode() {\n\t\treturn mode;\n\t}\n\n\tpublic void setMode(ReaderMode mode) {\n\t\tthis.mode = mode;\n\t}\n\n\tpublic RedisReaderArgs getReaderArgs() {\n\t\treturn readerArgs;\n\t}\n\n\tpublic void setReaderArgs(RedisReaderArgs args) {\n\t\tthis.readerArgs = args;\n\t}\n\n\tpublic RedisReaderLiveArgs getReaderLiveArgs() {\n\t\treturn readerLiveArgs;\n\t}\n\n\tpublic void setReaderLiveArgs(RedisReaderLiveArgs args) {\n\t\tthis.readerLiveArgs = args;\n\t}\n\n\tpublic MemoryUsageArgs getReaderMemoryUsageArgs() {\n\t\treturn readerMemoryUsageArgs;\n\t}\n\n\tpublic void setReaderMemoryUsageArgs(MemoryUsageArgs args) {\n\t\tthis.readerMemoryUsageArgs = args;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/AbstractFileExport.java",
    "content": "package com.redis.riot;\n\nimport java.io.IOException;\nimport java.util.Collections;\nimport java.util.Map;\n\nimport org.springframework.batch.core.Job;\nimport org.springframework.batch.item.ExecutionContext;\nimport org.springframework.batch.item.ItemProcessor;\nimport org.springframework.batch.item.ItemStreamException;\nimport org.springframework.batch.item.ItemWriter;\nimport org.springframework.core.io.WritableResource;\nimport org.springframework.util.Assert;\nimport org.springframework.util.MimeType;\n\nimport com.redis.riot.core.RiotException;\nimport com.redis.riot.core.Step;\nimport com.redis.riot.file.FileWriterRegistry;\nimport com.redis.riot.file.ResourceFactory;\nimport com.redis.riot.file.ResourceMap;\nimport com.redis.riot.file.RiotResourceMap;\nimport com.redis.riot.file.StdOutProtocolResolver;\nimport com.redis.riot.file.WriteOptions;\nimport com.redis.riot.file.WriterFactory;\nimport com.redis.spring.batch.item.redis.RedisItemReader;\nimport com.redis.spring.batch.item.redis.common.KeyValue;\n\nimport picocli.CommandLine.ArgGroup;\nimport picocli.CommandLine.Option;\nimport picocli.CommandLine.Parameters;\n\npublic abstract class AbstractFileExport extends AbstractRedisExportCommand {\n\n\t@Parameters(arity = \"0..1\", description = \"File path or URL. If omitted, export is written to stdout.\", paramLabel = \"FILE\")\n\tprivate String file = StdOutProtocolResolver.DEFAULT_FILENAME;\n\n\t@ArgGroup(exclusive = false)\n\tprivate FileWriterArgs fileWriterArgs = new FileWriterArgs();\n\n\t@Option(names = \"--content-type\", description = \"Type of exported content: ${COMPLETION-CANDIDATES}.\", paramLabel = \"<type>\")\n\tprivate ContentType contentType = ContentType.STRUCT;\n\n\tprivate FileWriterRegistry writerRegistry;\n\tprivate ResourceFactory resourceFactory;\n\tprivate ResourceMap resourceMap;\n\tprivate WriteOptions writeOptions;\n\n\t@Override\n\tprotected void initialize() {\n\t\tsuper.initialize();\n\t\twriterRegistry = writerRegistry();\n\t\tresourceFactory = resourceFactory();\n\t\tresourceMap = resourceMap();\n\t\twriteOptions = writeOptions();\n\t}\n\n\tprotected RiotResourceMap resourceMap() {\n\t\treturn RiotResourceMap.defaultResourceMap();\n\t}\n\n\tprotected FileWriterRegistry writerRegistry() {\n\t\treturn FileWriterRegistry.defaultWriterRegistry();\n\t}\n\n\tprotected ResourceFactory resourceFactory() {\n\t\tResourceFactory factory = new ResourceFactory();\n\t\tfactory.addProtocolResolver(new StdOutProtocolResolver());\n\t\treturn factory;\n\t}\n\n\tprivate WriteOptions writeOptions() {\n\t\tWriteOptions writeOptions = fileWriterArgs.fileWriterOptions();\n\t\twriteOptions.setContentType(getFileType());\n\t\twriteOptions.setHeaderSupplier(this::headerRecord);\n\t\treturn writeOptions;\n\t}\n\n\t@Override\n\tprotected Job job() {\n\t\treturn job(step());\n\t}\n\n\tprotected abstract MimeType getFileType();\n\n\t@SuppressWarnings(\"unchecked\")\n\tprivate Step<?, ?> step() {\n\t\tWritableResource resource;\n\t\ttry {\n\t\t\tresource = resourceFactory.writableResource(file, writeOptions);\n\t\t} catch (IOException e) {\n\t\t\tthrow new RiotException(String.format(\"Could not create resource from file %s\", file), e);\n\t\t}\n\t\tMimeType type = writeOptions.getContentType() == null ? resourceMap.getContentTypeFor(resource)\n\t\t\t\t: writeOptions.getContentType();\n\t\tWriterFactory writerFactory = writerRegistry.getWriterFactory(type);\n\t\tAssert.notNull(writerFactory, String.format(\"No writer found for file %s\", file));\n\t\tItemWriter<?> writer = writerFactory.create(resource, writeOptions);\n\t\treturn step(writer).processor(processor(type));\n\t}\n\n\t@Override\n\tprotected boolean shouldShowProgress() {\n\t\treturn super.shouldShowProgress() && file != null;\n\t}\n\n\tprotected boolean isFlatFile(MimeType type) {\n\t\treturn ResourceMap.CSV.equals(type) || ResourceMap.PSV.equals(type) || ResourceMap.TSV.equals(type)\n\t\t\t\t|| ResourceMap.TEXT.equals(type);\n\t}\n\n\t@SuppressWarnings(\"rawtypes\")\n\tprivate ItemProcessor processor(MimeType type) {\n\t\tif (isFlatFile(type) || contentType == ContentType.MAP) {\n\t\t\treturn mapProcessor();\n\t\t}\n\t\treturn null;\n\t}\n\n\tprivate Map<String, Object> headerRecord() {\n\t\tRedisItemReader<String, String> reader = RedisItemReader.struct();\n\t\tconfigureSourceRedisReader(reader);\n\t\ttry {\n\t\t\treader.open(new ExecutionContext());\n\t\t\ttry {\n\t\t\t\tKeyValue<String> keyValue = reader.read();\n\t\t\t\tif (keyValue == null) {\n\t\t\t\t\treturn Collections.emptyMap();\n\t\t\t\t}\n\t\t\t\treturn ((ItemProcessor<KeyValue<String>, Map<String, Object>>) mapProcessor()).process(keyValue);\n\t\t\t} catch (Exception e) {\n\t\t\t\tthrow new ItemStreamException(\"Could not read header record\", e);\n\t\t\t}\n\t\t} finally {\n\t\t\treader.close();\n\t\t}\n\t}\n\n\tpublic String getFile() {\n\t\treturn file;\n\t}\n\n\tpublic void setFile(String file) {\n\t\tthis.file = file;\n\t}\n\n\tpublic FileWriterArgs getFileWriterArgs() {\n\t\treturn fileWriterArgs;\n\t}\n\n\tpublic void setFileWriterArgs(FileWriterArgs fileWriterArgs) {\n\t\tthis.fileWriterArgs = fileWriterArgs;\n\t}\n\n\tpublic ContentType getContentType() {\n\t\treturn contentType;\n\t}\n\n\tpublic void setContentType(ContentType contentType) {\n\t\tthis.contentType = contentType;\n\t}\n\n\tpublic void setWriterRegistry(FileWriterRegistry registry) {\n\t\tthis.writerRegistry = registry;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/AbstractFileImport.java",
    "content": "package com.redis.riot;\n\nimport java.io.IOException;\nimport java.text.ParseException;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.HashSet;\nimport java.util.LinkedHashMap;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Set;\nimport java.util.function.Function;\nimport java.util.regex.Pattern;\nimport java.util.stream.Collectors;\n\nimport org.springframework.batch.core.Job;\nimport org.springframework.batch.item.ItemProcessor;\nimport org.springframework.batch.item.ItemReader;\nimport org.springframework.batch.item.function.FunctionItemProcessor;\nimport org.springframework.core.io.Resource;\nimport org.springframework.util.Assert;\nimport org.springframework.util.CollectionUtils;\nimport org.springframework.util.MimeType;\n\nimport com.redis.riot.core.RiotException;\nimport com.redis.riot.core.RiotUtils;\nimport com.redis.riot.core.Step;\nimport com.redis.riot.core.processor.RegexNamedGroupFunction;\nimport com.redis.riot.file.FileReaderRegistry;\nimport com.redis.riot.file.ReadOptions;\nimport com.redis.riot.file.ReaderFactory;\nimport com.redis.riot.file.ResourceFactory;\nimport com.redis.riot.file.ResourceMap;\nimport com.redis.riot.file.RiotResourceMap;\nimport com.redis.riot.file.StdInProtocolResolver;\nimport com.redis.riot.function.MapToFieldFunction;\nimport com.redis.spring.batch.item.redis.RedisItemWriter;\nimport com.redis.spring.batch.item.redis.common.KeyValue;\n\nimport picocli.CommandLine.ArgGroup;\nimport picocli.CommandLine.Option;\nimport picocli.CommandLine.Parameters;\n\npublic abstract class AbstractFileImport extends AbstractRedisImportCommand {\n\n\tpublic static final String STDIN_FILENAME = \"-\";\n\tprivate static final Set<MimeType> keyValueTypes = new HashSet<>(\n\t\t\tArrays.asList(ResourceMap.JSON, ResourceMap.JSON_LINES, ResourceMap.XML));\n\n\t@Parameters(arity = \"1..*\", description = \"Files or URLs to import. Use '-' to read from stdin.\", paramLabel = \"FILE\")\n\tprivate List<String> files;\n\n\t@ArgGroup(exclusive = false)\n\tprivate FileReaderArgs fileReaderArgs = new FileReaderArgs();\n\n\t@Option(arity = \"1..*\", names = \"--regex\", description = \"Regular expressions used to extract values from fields in the form field1=\\\"regex\\\" field2=\\\"regex\\\"...\", paramLabel = \"<f=rex>\")\n\tprivate Map<String, Pattern> regexes = new LinkedHashMap<>();\n\n\tprivate FileReaderRegistry readerRegistry;\n\tprivate RiotResourceMap resourceMap;\n\tprivate ResourceFactory resourceFactory;\n\tprivate ReadOptions readOptions;\n\n\t@Override\n\tprotected void initialize() {\n\t\tsuper.initialize();\n\t\tAssert.notEmpty(files, \"No file specified\");\n\t\treaderRegistry = readerRegistry();\n\t\tresourceFactory = resourceFactory();\n\t\tresourceMap = resourceMap();\n\t\treadOptions = readOptions();\n\t}\n\n\tprotected RiotResourceMap resourceMap() {\n\t\treturn RiotResourceMap.defaultResourceMap();\n\t}\n\n\tprotected FileReaderRegistry readerRegistry() {\n\t\treturn FileReaderRegistry.defaultReaderRegistry();\n\t}\n\n\tprotected ResourceFactory resourceFactory() {\n\t\tResourceFactory resourceFactory = new ResourceFactory();\n\t\tStdInProtocolResolver stdInProtocolResolver = new StdInProtocolResolver();\n\t\tstdInProtocolResolver.setFilename(STDIN_FILENAME);\n\t\tresourceFactory.addProtocolResolver(stdInProtocolResolver);\n\t\treturn resourceFactory;\n\t}\n\n\t@Override\n\tprotected Job job() {\n\t\treturn job(files.stream().map(this::step).collect(Collectors.toList()));\n\t}\n\n\tprivate Step<?, ?> step(String location) {\n\t\tResource resource;\n\t\ttry {\n\t\t\tresource = resourceFactory.resource(location, readOptions);\n\t\t} catch (IOException e) {\n\t\t\tthrow new RiotException(String.format(\"Could not create resource from %s\", location), e);\n\t\t}\n\t\tMimeType type = readOptions.getContentType() == null ? resourceMap.getContentTypeFor(resource)\n\t\t\t\t: readOptions.getContentType();\n\t\tReaderFactory readerFactory = readerRegistry.getReaderFactory(type);\n\t\tAssert.notNull(readerFactory, () -> String.format(\"No reader found for file %s\", location));\n\t\tItemReader<?> reader = readerFactory.create(resource, readOptions);\n\t\tRedisItemWriter<?, ?, ?> writer = writer();\n\t\tconfigureTargetRedisWriter(writer);\n\t\tStep<?, ?> step = new Step<>(reader, writer);\n\t\tstep.name(location);\n\t\tif (hasOperations()) {\n\t\t\tstep.processor(RiotUtils.processor(processor(), regexProcessor()));\n\t\t} else {\n\t\t\tAssert.isTrue(keyValueTypes.contains(type), \"No Redis operation specified\");\n\t\t}\n\t\tstep.skip(ParseException.class);\n\t\tstep.skip(org.springframework.batch.item.ParseException.class);\n\t\tstep.noRetry(ParseException.class);\n\t\tstep.noRetry(org.springframework.batch.item.ParseException.class);\n\t\tstep.taskName(String.format(\"Importing %s\", resource.getFilename()));\n\t\treturn step;\n\t}\n\n\tprivate ReadOptions readOptions() {\n\t\tReadOptions options = fileReaderArgs.readOptions();\n\t\toptions.setContentType(getFileType());\n\t\toptions.setItemType(itemType());\n\t\toptions.addDeserializer(KeyValue.class, new KeyValueDeserializer());\n\t\treturn options;\n\t}\n\n\tprivate Class<?> itemType() {\n\t\tif (hasOperations()) {\n\t\t\treturn Map.class;\n\t\t}\n\t\treturn KeyValue.class;\n\t}\n\n\tprivate RedisItemWriter<?, ?, ?> writer() {\n\t\tif (hasOperations()) {\n\t\t\treturn operationWriter();\n\t\t}\n\t\treturn RedisItemWriter.struct();\n\t}\n\n\tprotected abstract MimeType getFileType();\n\n\tprivate ItemProcessor<Map<String, Object>, Map<String, Object>> regexProcessor() {\n\t\tif (CollectionUtils.isEmpty(regexes)) {\n\t\t\treturn null;\n\t\t}\n\t\tList<Function<Map<String, Object>, Map<String, Object>>> functions = new ArrayList<>();\n\t\tfunctions.add(Function.identity());\n\t\tregexes.entrySet().stream().map(e -> toFieldFunction(e.getKey(), e.getValue())).forEach(functions::add);\n\t\treturn new FunctionItemProcessor<>(new ToMapFunction<>(functions));\n\t}\n\n\t@SuppressWarnings({ \"unchecked\", \"rawtypes\" })\n\tprivate Function<Map<String, Object>, Map<String, Object>> toFieldFunction(String key, Pattern regex) {\n\t\treturn new MapToFieldFunction(key).andThen((Function) new RegexNamedGroupFunction(regex));\n\t}\n\n\tpublic List<String> getFiles() {\n\t\treturn files;\n\t}\n\n\tpublic void setFiles(String... files) {\n\t\tsetFiles(Arrays.asList(files));\n\t}\n\n\tpublic void setFiles(List<String> files) {\n\t\tthis.files = files;\n\t}\n\n\tpublic FileReaderArgs getFileReaderArgs() {\n\t\treturn fileReaderArgs;\n\t}\n\n\tpublic void setFileReaderArgs(FileReaderArgs args) {\n\t\tthis.fileReaderArgs = args;\n\t}\n\n\tpublic Map<String, Pattern> getRegexes() {\n\t\treturn regexes;\n\t}\n\n\tpublic void setRegexes(Map<String, Pattern> regexes) {\n\t\tthis.regexes = regexes;\n\t}\n\n\tpublic FileReaderRegistry getReaderRegistry() {\n\t\treturn readerRegistry;\n\t}\n\n\tpublic void setReaderRegistry(FileReaderRegistry registry) {\n\t\tthis.readerRegistry = registry;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/AbstractImportCommand.java",
    "content": "package com.redis.riot;\n\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.stream.Collectors;\n\nimport org.springframework.batch.item.ItemProcessor;\nimport org.springframework.batch.item.ItemReader;\nimport org.springframework.batch.item.function.FunctionItemProcessor;\nimport org.springframework.expression.EvaluationContext;\nimport org.springframework.expression.spel.support.StandardEvaluationContext;\nimport org.springframework.util.Assert;\nimport org.springframework.util.CollectionUtils;\n\nimport com.redis.riot.core.AbstractJobCommand;\nimport com.redis.riot.core.QuietMapAccessor;\nimport com.redis.riot.core.RiotUtils;\nimport com.redis.riot.core.Step;\nimport com.redis.riot.core.processor.PredicateOperator;\nimport com.redis.riot.operation.DelCommand;\nimport com.redis.riot.operation.ExpireCommand;\nimport com.redis.riot.operation.GeoaddCommand;\nimport com.redis.riot.operation.HsetCommand;\nimport com.redis.riot.operation.JsonSetCommand;\nimport com.redis.riot.operation.LpushCommand;\nimport com.redis.riot.operation.OperationCommand;\nimport com.redis.riot.operation.RpushCommand;\nimport com.redis.riot.operation.SaddCommand;\nimport com.redis.riot.operation.SetCommand;\nimport com.redis.riot.operation.SugaddCommand;\nimport com.redis.riot.operation.TsAddCommand;\nimport com.redis.riot.operation.XaddCommand;\nimport com.redis.riot.operation.ZaddCommand;\nimport com.redis.spring.batch.item.redis.RedisItemWriter;\nimport com.redis.spring.batch.item.redis.common.MultiOperation;\nimport com.redis.spring.batch.item.redis.common.Operation;\n\nimport picocli.CommandLine.ArgGroup;\nimport picocli.CommandLine.Command;\n\n@Command(subcommands = { ExpireCommand.class, DelCommand.class, GeoaddCommand.class, HsetCommand.class,\n\t\tLpushCommand.class, RpushCommand.class, SaddCommand.class, SetCommand.class, XaddCommand.class,\n\t\tZaddCommand.class, SugaddCommand.class, JsonSetCommand.class,\n\t\tTsAddCommand.class }, subcommandsRepeatable = true, synopsisSubcommandLabel = \"[REDIS COMMAND...]\", commandListHeading = \"Redis commands:%n\")\npublic abstract class AbstractImportCommand extends AbstractJobCommand {\n\n\tprivate static final String TASK_NAME = \"Importing\";\n\tpublic static final String VAR_REDIS = \"redis\";\n\n\t@ArgGroup(exclusive = false)\n\tprivate RedisWriterArgs targetRedisWriterArgs = new RedisWriterArgs();\n\n\t@ArgGroup(exclusive = false)\n\tprivate EvaluationContextArgs evaluationContextArgs = new EvaluationContextArgs();\n\n\t@ArgGroup(exclusive = false)\n\tprivate ImportProcessorArgs processorArgs = new ImportProcessorArgs();\n\n\tprivate RedisContext targetRedisContext;\n\n\t/**\n\t * Initialized manually during command parsing\n\t */\n\tprivate List<OperationCommand> importOperationCommands = new ArrayList<>();\n\n\t@Override\n\tprotected void initialize() {\n\t\tsuper.initialize();\n\t\ttargetRedisContext = targetRedisContext();\n\t\ttargetRedisContext.afterPropertiesSet();\n\t}\n\n\t@Override\n\tprotected void teardown() {\n\t\tif (targetRedisContext != null) {\n\t\t\ttargetRedisContext.close();\n\t\t}\n\t\tsuper.teardown();\n\t}\n\n\tprotected List<Operation<String, String, Map<String, Object>, Object>> operations() {\n\t\treturn importOperationCommands.stream().map(OperationCommand::operation).collect(Collectors.toList());\n\t}\n\n\tprotected boolean hasOperations() {\n\t\treturn !CollectionUtils.isEmpty(importOperationCommands);\n\t}\n\n\tprotected Step<Map<String, Object>, Map<String, Object>> step(ItemReader<Map<String, Object>> reader) {\n\t\tAssert.isTrue(hasOperations(), \"No Redis command specified\");\n\t\tRedisItemWriter<String, String, Map<String, Object>> writer = operationWriter();\n\t\tconfigureTargetRedisWriter(writer);\n\t\tStep<Map<String, Object>, Map<String, Object>> step = new Step<>(reader, writer);\n\t\tstep.processor(processor());\n\t\tstep.taskName(TASK_NAME);\n\t\treturn step;\n\t}\n\n\tprotected ItemProcessor<Map<String, Object>, Map<String, Object>> processor() {\n\t\tlog.info(\"Creating SpEL evaluation context with {}\", evaluationContextArgs);\n\t\tStandardEvaluationContext evaluationContext = evaluationContextArgs.evaluationContext();\n\t\tevaluationContext.setVariable(VAR_REDIS, targetRedisContext.getConnection().sync());\n\t\tevaluationContext.addPropertyAccessor(new QuietMapAccessor());\n\t\treturn processor(evaluationContext, processorArgs);\n\t}\n\n\tprotected abstract RedisContext targetRedisContext();\n\n\tpublic static ItemProcessor<Map<String, Object>, Map<String, Object>> processor(EvaluationContext evaluationContext,\n\t\t\tImportProcessorArgs args) {\n\t\tList<ItemProcessor<Map<String, Object>, Map<String, Object>>> processors = new ArrayList<>();\n\t\tif (args.getFilter() != null) {\n\t\t\tprocessors.add(new FunctionItemProcessor<>(\n\t\t\t\t\tnew PredicateOperator<>(args.getFilter().predicate(evaluationContext))));\n\t\t}\n\t\tif (!CollectionUtils.isEmpty(args.getExpressions())) {\n\t\t\tprocessors.add(new ExpressionProcessor(evaluationContext, args.getExpressions()));\n\t\t}\n\t\treturn RiotUtils.processor(processors);\n\t}\n\n\tprotected RedisItemWriter<String, String, Map<String, Object>> operationWriter() {\n\t\treturn RedisItemWriter.operation(new MultiOperation<>(operations()));\n\t}\n\n\tprotected void configureTargetRedisWriter(RedisItemWriter<?, ?, ?> writer) {\n\t\ttargetRedisContext.configure(writer);\n\t\tlog.info(\"Configuring target Redis writer with {}\", targetRedisWriterArgs);\n\t\ttargetRedisWriterArgs.configure(writer);\n\t}\n\n\tpublic RedisWriterArgs getTargetRedisWriterArgs() {\n\t\treturn targetRedisWriterArgs;\n\t}\n\n\tpublic void setTargetRedisWriterArgs(RedisWriterArgs args) {\n\t\tthis.targetRedisWriterArgs = args;\n\t}\n\n\tpublic List<OperationCommand> getImportOperationCommands() {\n\t\treturn importOperationCommands;\n\t}\n\n\tpublic void setImportOperationCommands(OperationCommand... commands) {\n\t\tsetImportOperationCommands(Arrays.asList(commands));\n\t}\n\n\tpublic void setImportOperationCommands(List<OperationCommand> commands) {\n\t\tthis.importOperationCommands = commands;\n\t}\n\n\tpublic ImportProcessorArgs getProcessorArgs() {\n\t\treturn processorArgs;\n\t}\n\n\tpublic void setProcessorArgs(ImportProcessorArgs args) {\n\t\tthis.processorArgs = args;\n\t}\n\n\tpublic EvaluationContextArgs getEvaluationContextArgs() {\n\t\treturn evaluationContextArgs;\n\t}\n\n\tpublic void setEvaluationContextArgs(EvaluationContextArgs evaluationContextArgs) {\n\t\tthis.evaluationContextArgs = evaluationContextArgs;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/AbstractRedisCommand.java",
    "content": "package com.redis.riot;\n\nimport com.redis.lettucemod.api.sync.RedisModulesCommands;\nimport com.redis.riot.core.AbstractJobCommand;\nimport com.redis.spring.batch.item.redis.RedisItemReader;\nimport com.redis.spring.batch.item.redis.RedisItemWriter;\n\nimport picocli.CommandLine.ArgGroup;\n\npublic abstract class AbstractRedisCommand extends AbstractJobCommand {\n\n\t@ArgGroup(exclusive = false, heading = \"Redis options%n\")\n\tprivate RedisArgs redisArgs = new RedisArgs();\n\n\tprivate RedisContext redisContext;\n\n\t@Override\n\tprotected void initialize() {\n\t\tsuper.initialize();\n\t\tredisContext = RedisContext.of(redisArgs);\n\t\tredisContext.afterPropertiesSet();\n\t}\n\n\t@Override\n\tprotected void teardown() {\n\t\tif (redisContext != null) {\n\t\t\tredisContext.close();\n\t\t}\n\t\tsuper.teardown();\n\t}\n\n\tprotected RedisModulesCommands<String, String> commands() {\n\t\treturn redisContext.getConnection().sync();\n\t}\n\n\tprotected void configure(RedisItemReader<?, ?> reader) {\n\t\tconfigureAsyncStreamSupport(reader);\n\t\tredisContext.configure(reader);\n\t}\n\n\tprotected void configure(RedisItemWriter<?, ?, ?> writer) {\n\t\tredisContext.configure(writer);\n\t}\n\n\tpublic RedisArgs getRedisArgs() {\n\t\treturn redisArgs;\n\t}\n\n\tpublic void setRedisArgs(RedisArgs clientArgs) {\n\t\tthis.redisArgs = clientArgs;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/AbstractRedisExportCommand.java",
    "content": "package com.redis.riot;\n\nimport java.util.Map;\nimport java.util.regex.Pattern;\n\nimport org.springframework.batch.item.ItemProcessor;\nimport org.springframework.batch.item.function.FunctionItemProcessor;\n\nimport com.redis.riot.core.processor.RegexNamedGroupFunction;\nimport com.redis.riot.function.KeyValueMap;\nimport com.redis.spring.batch.item.redis.common.KeyValue;\n\nimport picocli.CommandLine.ArgGroup;\nimport picocli.CommandLine.Option;\n\npublic abstract class AbstractRedisExportCommand extends AbstractExportCommand {\n\n\t@ArgGroup(exclusive = false, heading = \"Redis options%n\")\n\tprivate RedisArgs redisArgs = new RedisArgs();\n\n\t@Option(names = \"--key-regex\", description = \"Regex for key-field extraction, e.g. '\\\\w+:(?<id>.+)' extracts an id field from the key\", paramLabel = \"<rex>\")\n\tprivate Pattern keyRegex;\n\n\t@Override\n\tprotected RedisContext sourceRedisContext() {\n\t\treturn RedisContext.of(redisArgs);\n\t}\n\n\tprotected ItemProcessor<KeyValue<String>, Map<String, Object>> mapProcessor() {\n\t\tKeyValueMap mapFunction = new KeyValueMap();\n\t\tif (keyRegex != null) {\n\t\t\tmapFunction.setKey(new RegexNamedGroupFunction(keyRegex));\n\t\t}\n\t\treturn new FunctionItemProcessor<>(mapFunction);\n\t}\n\n\tpublic RedisArgs getRedisArgs() {\n\t\treturn redisArgs;\n\t}\n\n\tpublic void setRedisArgs(RedisArgs clientArgs) {\n\t\tthis.redisArgs = clientArgs;\n\t}\n\n\tpublic Pattern getKeyRegex() {\n\t\treturn keyRegex;\n\t}\n\n\tpublic void setKeyRegex(Pattern regex) {\n\t\tthis.keyRegex = regex;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/AbstractRedisImportCommand.java",
    "content": "package com.redis.riot;\n\nimport picocli.CommandLine.ArgGroup;\n\npublic abstract class AbstractRedisImportCommand extends AbstractImportCommand {\n\n\t@ArgGroup(exclusive = false, heading = \"Redis options%n\")\n\tprivate RedisArgs redisArgs = new RedisArgs();\n\n\t@Override\n\tprotected RedisContext targetRedisContext() {\n\t\treturn RedisContext.of(redisArgs);\n\t}\n\n\tpublic RedisArgs getRedisArgs() {\n\t\treturn redisArgs;\n\t}\n\n\tpublic void setRedisArgs(RedisArgs clientArgs) {\n\t\tthis.redisArgs = clientArgs;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/AbstractRedisTargetExportCommand.java",
    "content": "package com.redis.riot;\n\nimport org.springframework.expression.spel.support.StandardEvaluationContext;\n\nimport com.redis.spring.batch.item.redis.RedisItemReader;\nimport com.redis.spring.batch.item.redis.RedisItemWriter;\n\nimport io.lettuce.core.RedisURI;\nimport picocli.CommandLine.ArgGroup;\nimport picocli.CommandLine.Parameters;\n\npublic abstract class AbstractRedisTargetExportCommand extends AbstractExportCommand {\n\n\tpublic static final int DEFAULT_TARGET_POOL_SIZE = RedisItemReader.DEFAULT_POOL_SIZE;\n\tprivate static final String VAR_TARGET = \"target\";\n\n\t@Parameters(arity = \"1\", index = \"0\", description = \"Source server URI or endpoint in the form host:port.\", paramLabel = \"SOURCE\")\n\tprivate RedisURI sourceRedisUri;\n\n\t@ArgGroup(exclusive = false)\n\tprivate SourceRedisArgs sourceRedisArgs = new SourceRedisArgs();\n\n\t@Parameters(arity = \"1\", index = \"1\", description = \"Target server URI or endpoint in the form host:port.\", paramLabel = \"TARGET\")\n\tprivate RedisURI targetRedisUri;\n\n\t@ArgGroup(exclusive = false)\n\tprivate TargetRedisArgs targetRedisArgs = new TargetRedisArgs();\n\n\tprivate RedisContext targetRedisContext;\n\n\t@Override\n\tprotected void initialize() {\n\t\tsuper.initialize();\n\t\ttargetRedisContext = targetRedisContext();\n\t\ttargetRedisContext.afterPropertiesSet();\n\t}\n\n\t@Override\n\tprotected void teardown() {\n\t\tif (targetRedisContext != null) {\n\t\t\ttargetRedisContext.close();\n\t\t}\n\t\tsuper.teardown();\n\t}\n\n\t@Override\n\tprotected RedisContext sourceRedisContext() {\n\t\tlog.info(\"Creating source Redis context with {} {} {}\", sourceRedisUri, sourceRedisArgs);\n\t\treturn RedisContext.of(sourceRedisUri, sourceRedisArgs);\n\t}\n\n\tprotected RedisContext targetRedisContext() {\n\t\tlog.info(\"Creating target Redis context with {} {} {}\", targetRedisUri, targetRedisArgs);\n\t\treturn RedisContext.of(targetRedisUri, targetRedisArgs);\n\t}\n\n\t@Override\n\tprotected void configure(StandardEvaluationContext context) {\n\t\tsuper.configure(context);\n\t\tcontext.setVariable(VAR_TARGET, targetRedisContext.getConnection().sync());\n\t}\n\n\tprotected void configureTargetRedisReader(RedisItemReader<?, ?> reader) {\n\t\tconfigureAsyncStreamSupport(reader);\n\t\ttargetRedisContext.configure(reader);\n\t}\n\n\tprotected void configureTargetRedisWriter(RedisItemWriter<?, ?, ?> writer) {\n\t\ttargetRedisContext.configure(writer);\n\t}\n\n\tpublic RedisURI getSourceRedisUri() {\n\t\treturn sourceRedisUri;\n\t}\n\n\tpublic void setSourceRedisUri(RedisURI sourceRedisUri) {\n\t\tthis.sourceRedisUri = sourceRedisUri;\n\t}\n\n\tpublic SourceRedisArgs getSourceRedisArgs() {\n\t\treturn sourceRedisArgs;\n\t}\n\n\tpublic void setSourceRedisArgs(SourceRedisArgs sourceRedisArgs) {\n\t\tthis.sourceRedisArgs = sourceRedisArgs;\n\t}\n\n\tpublic RedisURI getTargetRedisUri() {\n\t\treturn targetRedisUri;\n\t}\n\n\tpublic void setTargetRedisUri(RedisURI targetRedisUri) {\n\t\tthis.targetRedisUri = targetRedisUri;\n\t}\n\n\tpublic TargetRedisArgs getTargetRedisArgs() {\n\t\treturn targetRedisArgs;\n\t}\n\n\tpublic void setTargetRedisArgs(TargetRedisArgs targetRedisArgs) {\n\t\tthis.targetRedisArgs = targetRedisArgs;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/Compare.java",
    "content": "package com.redis.riot;\n\nimport org.springframework.batch.core.Job;\n\nimport picocli.CommandLine.Command;\nimport picocli.CommandLine.Option;\n\n@Command(name = \"compare\", description = \"Compare two Redis databases.\")\npublic class Compare extends AbstractCompareCommand {\n\n\t@Option(names = \"--stream-msg-id\", description = \"Compare stream message ids. True by default.\", negatable = true, defaultValue = \"true\", fallbackValue = \"true\")\n\tprivate boolean compareStreamMessageId = DEFAULT_COMPARE_STREAM_MESSAGE_ID;\n\n\t@Option(names = \"--quick\", description = \"Skip value comparison.\")\n\tprivate boolean quick;\n\n\t@Override\n\tprotected boolean isStruct() {\n\t\treturn true;\n\t}\n\n\t@Override\n\tprotected boolean isQuickCompare() {\n\t\treturn quick;\n\t}\n\n\t@Override\n\tprotected boolean isIgnoreStreamMessageId() {\n\t\treturn !compareStreamMessageId;\n\t}\n\n\t@Override\n\tprotected Job job() {\n\t\treturn job(compareStep());\n\t}\n\n\tpublic boolean isCompareStreamMessageId() {\n\t\treturn compareStreamMessageId;\n\t}\n\n\tpublic void setCompareStreamMessageId(boolean streamMessageId) {\n\t\tthis.compareStreamMessageId = streamMessageId;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/CompareLoggingWriteListener.java",
    "content": "package com.redis.riot;\n\nimport java.util.function.Function;\n\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\nimport com.redis.spring.batch.item.redis.common.BatchUtils;\nimport com.redis.spring.batch.item.redis.reader.KeyComparison;\nimport com.redis.spring.batch.item.redis.reader.KeyComparisonListener;\n\nimport io.lettuce.core.codec.RedisCodec;\n\npublic class CompareLoggingWriteListener<K> implements KeyComparisonListener<K> {\n\n\tprivate final Logger log = LoggerFactory.getLogger(getClass());\n\n\tprivate final Function<K, String> toStringKeyFunction;\n\n\tpublic CompareLoggingWriteListener(RedisCodec<K, ?> codec) {\n\t\ttoStringKeyFunction = BatchUtils.toStringKeyFunction(codec);\n\t}\n\n\t@Override\n\tpublic void comparison(KeyComparison<K> comparison) {\n\t\tswitch (comparison.getStatus()) {\n\t\tcase MISSING:\n\t\t\tlog.error(\"Missing {} {}\", comparison.getSource().getType(), key(comparison));\n\t\t\tbreak;\n\t\tcase TYPE:\n\t\t\tlog.error(\"Type mismatch on key {}. Expected {} but was {}\", key(comparison),\n\t\t\t\t\tcomparison.getSource().getType(), comparison.getTarget().getType());\n\t\t\tbreak;\n\t\tcase VALUE:\n\t\t\tlog.error(\"Value mismatch on {} {}\", comparison.getSource().getType(), key(comparison));\n\t\t\tbreak;\n\t\tcase TTL:\n\t\t\tlog.error(\"TTL mismatch on key {}. Expected {} but was {}\", key(comparison),\n\t\t\t\t\tcomparison.getSource().getTtl(), comparison.getTarget().getTtl());\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tprivate String key(KeyComparison<K> comparison) {\n\t\treturn toStringKeyFunction.apply(comparison.getSource().getKey());\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/CompareMode.java",
    "content": "package com.redis.riot;\n\npublic enum CompareMode {\n\tFULL, QUICK, NONE\n}"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/CompareStepListener.java",
    "content": "package com.redis.riot;\n\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.LinkedHashMap;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Map.Entry;\nimport java.util.Set;\nimport java.util.stream.Collectors;\n\nimport org.springframework.batch.core.ExitStatus;\nimport org.springframework.batch.core.StepExecution;\nimport org.springframework.batch.core.StepExecutionListener;\n\nimport com.redis.spring.batch.item.redis.reader.KeyComparison.Status;\nimport com.redis.spring.batch.item.redis.reader.KeyComparisonStat;\nimport com.redis.spring.batch.item.redis.reader.KeyComparisonStats;\n\npublic class CompareStepListener implements StepExecutionListener {\n\n\tprivate static final String STATUS_COUNT = \"%s %d\";\n\n\tprivate final KeyComparisonStats stats;\n\n\tpublic CompareStepListener(KeyComparisonStats stats) {\n\t\tthis.stats = stats;\n\t}\n\n\t@Override\n\tpublic ExitStatus afterStep(StepExecution stepExecution) {\n\t\tif (stepExecution.getStatus().isUnsuccessful()) {\n\t\t\treturn null;\n\t\t}\n\t\tList<KeyComparisonStat> mismatches = stats.allStats().stream()\n\t\t\t\t.filter(s -> s.getStatus() != Status.OK && s.getCount() > 0).collect(Collectors.toList());\n\t\tif (mismatches.isEmpty()) {\n\t\t\treturn ExitStatus.COMPLETED;\n\t\t}\n\t\treturn new ExitStatus(ExitStatus.FAILED.getExitCode(), verificationFailedExitDescription());\n\t}\n\n\tprotected String verificationFailedExitDescription() {\n\t\tStringBuilder builder = new StringBuilder();\n\t\tbuilder.append(\"Verification failed:\");\n\t\tfor (Entry<Status, List<KeyComparisonStat>> entry : statsByStatus(stats)) {\n\t\t\tLong count = entry.getValue().stream().collect(Collectors.summingLong(KeyComparisonStat::getCount));\n\t\t\tbuilder.append(System.lineSeparator());\n\t\t\tbuilder.append(String.format(STATUS_COUNT, entry.getKey(), count));\n\t\t}\n\t\treturn builder.toString();\n\t}\n\n\tpublic static Set<Entry<Status, List<KeyComparisonStat>>> statsByStatus(KeyComparisonStats stats) {\n\t\tMap<Status, List<KeyComparisonStat>> map = stats.allStats().stream()\n\t\t\t\t.collect(Collectors.groupingBy(KeyComparisonStat::getStatus));\n\t\tList<Status> statuses = new ArrayList<>(map.keySet());\n\t\tstatuses.sort(CompareStepListener::compareStatus);\n\t\tMap<Status, List<KeyComparisonStat>> orderedMap = new LinkedHashMap<>();\n\t\tstatuses.forEach(s -> orderedMap.put(s, map.get(s)));\n\t\treturn orderedMap.entrySet();\n\t}\n\n\tprivate static int compareStatus(Status status1, Status status2) {\n\t\treturn Arrays.binarySearch(Status.values(), status1) - Arrays.binarySearch(Status.values(), status2);\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/ContentType.java",
    "content": "package com.redis.riot;\n\npublic enum ContentType {\n\tSTRUCT, MAP\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/DataSourceArgs.java",
    "content": "package com.redis.riot;\n\nimport javax.sql.DataSource;\n\nimport org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;\nimport org.springframework.boot.jdbc.EmbeddedDatabaseConnection;\n\nimport lombok.ToString;\nimport picocli.CommandLine.Option;\n\n@ToString\npublic class DataSourceArgs {\n\n\t@Option(names = \"--jdbc-driver\", description = \"Fully qualified name of the JDBC driver (e.g. oracle.jdbc.OracleDriver).\", paramLabel = \"<class>\")\n\tprivate String driver;\n\n\t@Option(names = \"--jdbc-url\", required = true, description = \"JDBC URL to connect to the database.\", paramLabel = \"<string>\")\n\tprivate String url;\n\n\t@Option(names = \"--jdbc-user\", description = \"Login username of the database.\", paramLabel = \"<string>\")\n\tprivate String username;\n\n\t@Option(names = \"--jdbc-pass\", arity = \"0..1\", interactive = true, description = \"Login password of the database.\", paramLabel = \"<pwd>\")\n\tprivate String password;\n\n\tpublic DataSource dataSource() throws Exception {\n\t\tDataSourceProperties properties = new DataSourceProperties();\n\t\tproperties.setUrl(url);\n\t\tproperties.setDriverClassName(driver);\n\t\tproperties.setUsername(username);\n\t\tproperties.setPassword(password);\n\t\tproperties.setEmbeddedDatabaseConnection(EmbeddedDatabaseConnection.NONE);\n\t\tproperties.afterPropertiesSet();\n\t\treturn properties.initializeDataSourceBuilder().build();\n\t}\n\n\tpublic String getDriver() {\n\t\treturn driver;\n\t}\n\n\tpublic void setDriver(String driver) {\n\t\tthis.driver = driver;\n\t}\n\n\tpublic String getUrl() {\n\t\treturn url;\n\t}\n\n\tpublic void setUrl(String url) {\n\t\tthis.url = url;\n\t}\n\n\tpublic String getUsername() {\n\t\treturn username;\n\t}\n\n\tpublic void setUsername(String username) {\n\t\tthis.username = username;\n\t}\n\n\tpublic String getPassword() {\n\t\treturn password;\n\t}\n\n\tpublic void setPassword(String password) {\n\t\tthis.password = password;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/DatabaseExport.java",
    "content": "package com.redis.riot;\n\nimport java.util.Map;\n\nimport javax.sql.DataSource;\n\nimport org.springframework.batch.core.Job;\nimport org.springframework.batch.item.database.JdbcBatchItemWriter;\nimport org.springframework.batch.item.database.builder.JdbcBatchItemWriterBuilder;\nimport org.springframework.jdbc.core.namedparam.MapSqlParameterSource;\nimport org.springframework.lang.Nullable;\nimport org.springframework.util.Assert;\n\nimport com.redis.riot.core.RiotException;\n\nimport picocli.CommandLine.ArgGroup;\nimport picocli.CommandLine.Command;\nimport picocli.CommandLine.Option;\nimport picocli.CommandLine.Parameters;\n\n@Command(name = \"db-export\", description = \"Export Redis data to a relational database.\")\npublic class DatabaseExport extends AbstractRedisExportCommand {\n\n\tpublic static final boolean DEFAULT_ASSERT_UPDATES = true;\n\n\t@ArgGroup(exclusive = false)\n\tprivate DataSourceArgs dataSourceArgs = new DataSourceArgs();\n\n\t@Parameters(arity = \"1\", description = \"SQL INSERT statement.\", paramLabel = \"SQL\")\n\tprivate String sql;\n\n\t@Option(names = \"--assert-updates\", description = \"Confirm every insert results in update of at least one row. True by default.\", negatable = true, defaultValue = \"true\", fallbackValue = \"true\")\n\tprivate boolean assertUpdates = DEFAULT_ASSERT_UPDATES;\n\n\t@Override\n\tprotected Job job() {\n\t\treturn job(step(writer()).processor(mapProcessor()));\n\t}\n\n\tprivate JdbcBatchItemWriter<Map<String, Object>> writer() {\n\t\tAssert.hasLength(sql, \"No SQL statement specified\");\n\t\tlog.info(\"Creating data source with {}\", dataSourceArgs);\n\t\tDataSource dataSource;\n\t\ttry {\n\t\t\tdataSource = dataSourceArgs.dataSource();\n\t\t} catch (Exception e) {\n\t\t\tthrow new RiotException(e);\n\t\t}\n\t\tlog.info(\"Creating JDBC writer with sql=\\\"{}\\\" assertUpdates={}\", sql, assertUpdates);\n\t\tJdbcBatchItemWriterBuilder<Map<String, Object>> builder = new JdbcBatchItemWriterBuilder<>();\n\t\tbuilder.itemSqlParameterSourceProvider(NullableSqlParameterSource::new);\n\t\tbuilder.dataSource(dataSource);\n\t\tbuilder.sql(sql);\n\t\tbuilder.assertUpdates(assertUpdates);\n\t\tJdbcBatchItemWriter<Map<String, Object>> writer = builder.build();\n\t\twriter.afterPropertiesSet();\n\t\treturn writer;\n\t}\n\n\tprivate static class NullableSqlParameterSource extends MapSqlParameterSource {\n\n\t\tpublic NullableSqlParameterSource(@Nullable Map<String, ?> values) {\n\t\t\tsuper(values);\n\t\t}\n\n\t\t@Override\n\t\t@Nullable\n\t\tpublic Object getValue(String paramName) {\n\t\t\tif (!hasValue(paramName)) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn super.getValue(paramName);\n\t\t}\n\n\t}\n\n\tpublic String getSql() {\n\t\treturn sql;\n\t}\n\n\tpublic void setSql(String sql) {\n\t\tthis.sql = sql;\n\t}\n\n\tpublic boolean isAssertUpdates() {\n\t\treturn assertUpdates;\n\t}\n\n\tpublic void setAssertUpdates(boolean assertUpdates) {\n\t\tthis.assertUpdates = assertUpdates;\n\t}\n\n\tpublic DataSourceArgs getDataSourceArgs() {\n\t\treturn dataSourceArgs;\n\t}\n\n\tpublic void setDataSourceArgs(DataSourceArgs dataSourceArgs) {\n\t\tthis.dataSourceArgs = dataSourceArgs;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/DatabaseImport.java",
    "content": "package com.redis.riot;\n\nimport java.util.Map;\n\nimport org.springframework.batch.core.Job;\nimport org.springframework.batch.item.database.JdbcCursorItemReader;\n\nimport picocli.CommandLine.ArgGroup;\nimport picocli.CommandLine.Command;\nimport picocli.CommandLine.Parameters;\n\n@Command(name = \"db-import\", description = \"Import from a relational database.\")\npublic class DatabaseImport extends AbstractRedisImportCommand {\n\n\t@ArgGroup(exclusive = false)\n\tprivate DataSourceArgs dataSourceArgs = new DataSourceArgs();\n\n\t@Parameters(arity = \"1\", description = \"SQL SELECT statement\", paramLabel = \"SQL\")\n\tprotected String sql;\n\n\t@ArgGroup(exclusive = false)\n\tprivate DatabaseReaderArgs readerArgs = new DatabaseReaderArgs();\n\n\t@Override\n\tprotected Job job() {\n\t\treturn job(step(reader()));\n\t}\n\n\tprotected JdbcCursorItemReader<Map<String, Object>> reader() {\n\t\tlog.info(\"Creating JDBC reader with sql=\\\"{}\\\" {} {}\", sql, dataSourceArgs, readerArgs);\n\t\treturn JdbcCursorItemReaderFactory.create(sql, dataSourceArgs, readerArgs).build();\n\t}\n\n\tpublic String getSql() {\n\t\treturn sql;\n\t}\n\n\tpublic void setSql(String sql) {\n\t\tthis.sql = sql;\n\t}\n\n\tpublic DatabaseReaderArgs getReaderArgs() {\n\t\treturn readerArgs;\n\t}\n\n\tpublic void setReaderArgs(DatabaseReaderArgs args) {\n\t\tthis.readerArgs = args;\n\t}\n\n\tpublic DataSourceArgs getDataSourceArgs() {\n\t\treturn dataSourceArgs;\n\t}\n\n\tpublic void setDataSourceArgs(DataSourceArgs args) {\n\t\tthis.dataSourceArgs = args;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/DatabaseReaderArgs.java",
    "content": "package com.redis.riot;\n\nimport org.springframework.batch.item.database.AbstractCursorItemReader;\n\nimport com.redis.riot.core.RiotDuration;\n\nimport lombok.ToString;\nimport picocli.CommandLine.Option;\n\n@ToString\npublic class DatabaseReaderArgs {\n\n\tpublic static final int DEFAULT_FETCH_SIZE = AbstractCursorItemReader.VALUE_NOT_SET;\n\tpublic static final int DEFAULT_MAX_RESULT_SET_ROWS = AbstractCursorItemReader.VALUE_NOT_SET;\n\tpublic static final RiotDuration DEFAULT_QUERY_TIMEOUT = RiotDuration\n\t\t\t.ofMillis(AbstractCursorItemReader.VALUE_NOT_SET);\n\n\t@Option(names = \"--max\", description = \"Max number of rows to import.\", paramLabel = \"<count>\")\n\tprivate int maxItemCount;\n\n\t@Option(names = \"--fetch\", description = \"Number of rows to return with each fetch.\", paramLabel = \"<size>\")\n\tprivate int fetchSize = DEFAULT_FETCH_SIZE;\n\n\t@Option(names = \"--rows\", description = \"Max number of rows the ResultSet can contain.\", paramLabel = \"<count>\")\n\tprivate int maxRows = DEFAULT_MAX_RESULT_SET_ROWS;\n\n\t@Option(names = \"--query-timeout\", description = \"The duration for the query to timeout.\", paramLabel = \"<dur>\")\n\tprivate RiotDuration queryTimeout = DEFAULT_QUERY_TIMEOUT;\n\n\t@Option(names = \"--shared-connection\", description = \"Use same connection for cursor and other processing.\", hidden = true)\n\tprivate boolean useSharedExtendedConnection;\n\n\t@Option(names = \"--verify\", description = \"Verify position of result set after row mapper.\", hidden = true)\n\tprivate boolean verifyCursorPosition;\n\n\tpublic int getMaxItemCount() {\n\t\treturn maxItemCount;\n\t}\n\n\tpublic void setMaxItemCount(int maxItemCount) {\n\t\tthis.maxItemCount = maxItemCount;\n\t}\n\n\tpublic int getFetchSize() {\n\t\treturn fetchSize;\n\t}\n\n\tpublic void setFetchSize(int fetchSize) {\n\t\tthis.fetchSize = fetchSize;\n\t}\n\n\t/**\n\t * The max number of rows the {@link java.sql.ResultSet} can contain\n\t * \n\t * @return\n\t */\n\tpublic int getMaxRows() {\n\t\treturn maxRows;\n\t}\n\n\tpublic void setMaxRows(int maxResultSetRows) {\n\t\tthis.maxRows = maxResultSetRows;\n\t}\n\n\tpublic RiotDuration getQueryTimeout() {\n\t\treturn queryTimeout;\n\t}\n\n\tpublic void setQueryTimeout(RiotDuration queryTimeout) {\n\t\tthis.queryTimeout = queryTimeout;\n\t}\n\n\tpublic boolean isUseSharedExtendedConnection() {\n\t\treturn useSharedExtendedConnection;\n\t}\n\n\tpublic void setUseSharedExtendedConnection(boolean useSharedExtendedConnection) {\n\t\tthis.useSharedExtendedConnection = useSharedExtendedConnection;\n\t}\n\n\tpublic boolean isVerifyCursorPosition() {\n\t\treturn verifyCursorPosition;\n\t}\n\n\tpublic void setVerifyCursorPosition(boolean verifyCursorPosition) {\n\t\tthis.verifyCursorPosition = verifyCursorPosition;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/EvaluationContextArgs.java",
    "content": "package com.redis.riot;\n\nimport java.text.DecimalFormat;\nimport java.text.SimpleDateFormat;\nimport java.util.LinkedHashMap;\nimport java.util.Map;\n\nimport org.springframework.expression.spel.support.StandardEvaluationContext;\nimport org.springframework.util.CollectionUtils;\n\nimport com.redis.lettucemod.search.GeoLocation;\nimport com.redis.riot.core.Expression;\nimport com.redis.riot.core.RiotUtils;\n\nimport lombok.ToString;\nimport net.datafaker.Faker;\nimport picocli.CommandLine.Option;\n\n@ToString\npublic class EvaluationContextArgs {\n\n\tpublic static final String DEFAULT_DATE_FORMAT = \"yyyy-MM-dd'T'HH:mm:ss.SSSZ\";\n\tpublic static final String DEFAULT_NUMBER_FORMAT = \"#,###.##\";\n\tpublic static final String VAR_DATE = \"date\";\n\tpublic static final String VAR_NUMBER = \"number\";\n\tpublic static final String VAR_FAKER = \"faker\";\n\n\t@Option(arity = \"1..*\", names = \"--var\", description = \"SpEL expressions for context variables, in the form var=\\\"exp\\\". For details see https://docs.spring.io/spring-framework/reference/core/expressions.html\", paramLabel = \"<v=exp>\")\n\tprivate Map<String, Expression> varExpressions = new LinkedHashMap<>();\n\n\t@Option(names = \"--date-format\", description = \"Date/time format (default: ${DEFAULT-VALUE}). For details see https://www.baeldung.com/java-simple-date-format#date_time_patterns\", paramLabel = \"<fmt>\")\n\tprivate String dateFormat = DEFAULT_DATE_FORMAT;\n\n\t@Option(names = \"--number-format\", description = \"Number format (default: ${DEFAULT-VALUE}). For details see https://www.baeldung.com/java-decimalformat\", paramLabel = \"<fmt>\")\n\tprivate String numberFormat = DEFAULT_NUMBER_FORMAT;\n\n\tprivate Map<String, Object> vars = new LinkedHashMap<>();\n\n\tpublic StandardEvaluationContext evaluationContext() {\n\t\tStandardEvaluationContext context = new StandardEvaluationContext();\n\t\tRiotUtils.registerFunction(context, \"geo\", GeoLocation.class, \"toString\", String.class, String.class);\n\t\tcontext.setVariable(VAR_DATE, new SimpleDateFormat(dateFormat));\n\t\tcontext.setVariable(VAR_NUMBER, new DecimalFormat(numberFormat));\n\t\tcontext.setVariable(VAR_FAKER, new Faker());\n\t\tif (!CollectionUtils.isEmpty(vars)) {\n\t\t\tvars.forEach(context::setVariable);\n\t\t}\n\t\tif (!CollectionUtils.isEmpty(varExpressions)) {\n\t\t\tvarExpressions.forEach((k, v) -> context.setVariable(k, v.getValue(context)));\n\t\t}\n\t\treturn context;\n\t}\n\n\tpublic String getDateFormat() {\n\t\treturn dateFormat;\n\t}\n\n\tpublic void setDateFormat(String format) {\n\t\tthis.dateFormat = format;\n\t}\n\n\tpublic Map<String, Expression> getVarExpressions() {\n\t\treturn varExpressions;\n\t}\n\n\tpublic void setVarExpressions(Map<String, Expression> expressions) {\n\t\tthis.varExpressions = expressions;\n\t}\n\n\tpublic Map<String, Object> getVars() {\n\t\treturn vars;\n\t}\n\n\tpublic void setVars(Map<String, Object> variables) {\n\t\tthis.vars = variables;\n\t}\n\n\tpublic String getNumberFormat() {\n\t\treturn numberFormat;\n\t}\n\n\tpublic void setNumberFormat(String numberFormat) {\n\t\tthis.numberFormat = numberFormat;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/ExportStepHelper.java",
    "content": "package com.redis.riot;\n\nimport java.util.Map;\nimport java.util.Set;\nimport java.util.stream.Collectors;\n\nimport org.slf4j.Logger;\nimport org.springframework.batch.item.ItemWriter;\nimport org.springframework.util.Assert;\n\nimport com.redis.lettucemod.RedisModulesUtils;\nimport com.redis.lettucemod.api.StatefulRedisModulesConnection;\nimport com.redis.riot.core.Step;\nimport com.redis.spring.batch.item.redis.RedisItemReader;\nimport com.redis.spring.batch.item.redis.RedisItemReader.ReaderMode;\nimport com.redis.spring.batch.item.redis.common.KeyValue;\n\nimport io.lettuce.core.AbstractRedisClient;\nimport io.lettuce.core.RedisException;\n\npublic class ExportStepHelper {\n\n\tpublic static final String NOTIFY_CONFIG = \"notify-keyspace-events\";\n\tpublic static final String NOTIFY_CONFIG_VALUE = \"KEA\";\n\n\tprivate final Logger log;\n\n\tpublic ExportStepHelper(Logger log) {\n\t\tthis.log = log;\n\t}\n\n\tpublic <K, V, T, O> Step<KeyValue<K>, O> step(RedisItemReader<K, V> reader, ItemWriter<O> writer) {\n\t\tStep<KeyValue<K>, O> step = new Step<>(reader, writer);\n\t\tif (reader.getMode() == ReaderMode.SCAN) {\n\t\t\tlog.info(\"Configuring step with scan size estimator\");\n\t\t\tstep.maxItemCountSupplier(reader.scanSizeEstimator());\n\t\t} else {\n\t\t\tcheckNotifyConfig(reader.getClient(), log);\n\t\t\tlog.info(\"Configuring export step with live true, flushInterval {}, idleTimeout {}\",\n\t\t\t\t\treader.getFlushInterval(), reader.getIdleTimeout());\n\t\t\tstep.live(true);\n\t\t\tstep.flushInterval(reader.getFlushInterval());\n\t\t\tstep.idleTimeout(reader.getIdleTimeout());\n\t\t}\n\t\treturn step;\n\t}\n\n\tpublic static void checkNotifyConfig(AbstractRedisClient client, Logger log) {\n\t\tMap<String, String> valueMap;\n\t\ttry (StatefulRedisModulesConnection<String, String> conn = RedisModulesUtils.connection(client)) {\n\t\t\ttry {\n\t\t\t\tvalueMap = conn.sync().configGet(NOTIFY_CONFIG);\n\t\t\t} catch (RedisException e) {\n\t\t\t\tlog.info(\"Could not check keyspace notification config\", e);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tString actual = valueMap.getOrDefault(NOTIFY_CONFIG, \"\");\n\t\tlog.info(\"Retrieved config {}: {}\", NOTIFY_CONFIG, actual);\n\t\tSet<Character> expected = characterSet(NOTIFY_CONFIG_VALUE);\n\t\tAssert.isTrue(characterSet(actual).containsAll(expected),\n\t\t\t\tString.format(\"Keyspace notifications not property configured. Expected %s '%s' but was '%s'.\",\n\t\t\t\t\t\tNOTIFY_CONFIG, NOTIFY_CONFIG_VALUE, actual));\n\t}\n\n\tprivate static Set<Character> characterSet(String string) {\n\t\treturn string.codePoints().mapToObj(c -> (char) c).collect(Collectors.toSet());\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/ExpressionProcessor.java",
    "content": "package com.redis.riot;\n\nimport java.util.Map;\n\nimport org.springframework.batch.item.ItemProcessor;\nimport org.springframework.expression.EvaluationContext;\n\nimport com.redis.riot.core.Expression;\n\npublic class ExpressionProcessor implements ItemProcessor<Map<String, Object>, Map<String, Object>> {\n\n\tprivate final EvaluationContext context;\n\tprivate final Map<String, Expression> expressions;\n\n\tpublic ExpressionProcessor(EvaluationContext context, Map<String, Expression> expressions) {\n\t\tthis.context = context;\n\t\tthis.expressions = expressions;\n\t}\n\n\t@Override\n\tpublic Map<String, Object> process(Map<String, Object> item) throws Exception {\n\t\texpressions.forEach((k, v) -> item.put(k, v.getValue(context, item)));\n\t\treturn item;\n\t}\n\n}"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/FakerImport.java",
    "content": "package com.redis.riot;\n\nimport java.util.LinkedHashMap;\nimport java.util.Locale;\nimport java.util.Map;\n\nimport org.springframework.batch.core.Job;\n\nimport com.redis.riot.faker.FakerItemReader;\n\nimport picocli.CommandLine.Command;\nimport picocli.CommandLine.Option;\nimport picocli.CommandLine.Parameters;\n\n@Command(name = \"faker\", description = \"Import Faker data.\")\npublic class FakerImport extends AbstractRedisImportCommand {\n\n\tpublic static final int DEFAULT_COUNT = 1000;\n\tpublic static final Locale DEFAULT_LOCALE = Locale.ENGLISH;\n\n\t@Parameters(arity = \"1..*\", description = \"Faker expressions in the form field1=\\\"exp\\\" field2=\\\"exp\\\" etc. For details see http://www.datafaker.net/documentation/expressions\", paramLabel = \"EXPRESSION\")\n\tprivate Map<String, String> fields = new LinkedHashMap<>();\n\n\t@Option(names = \"--count\", description = \"Number of items to generate (default: ${DEFAULT-VALUE}).\", paramLabel = \"<int>\")\n\tprivate int count = DEFAULT_COUNT;\n\n\t@Option(names = \"--infer\", description = \"Introspect given RediSearch index to infer Faker fields.\", paramLabel = \"<name>\")\n\tprivate String searchIndex;\n\n\t@Option(names = \"--locale\", description = \"Faker locale (default: ${DEFAULT-VALUE}).\", paramLabel = \"<tag>\")\n\tprivate Locale locale = DEFAULT_LOCALE;\n\n\t@Override\n\tprotected Job job() {\n\t\treturn job(step(reader()).maxItemCount(count));\n\t}\n\n\tprivate FakerItemReader reader() {\n\t\tFakerItemReader reader = new FakerItemReader();\n\t\treader.setMaxItemCount(count);\n\t\treader.setLocale(locale);\n\t\treader.setExpressions(fields);\n\t\treturn reader;\n\t}\n\n\tpublic String getSearchIndex() {\n\t\treturn searchIndex;\n\t}\n\n\tpublic void setSearchIndex(String index) {\n\t\tthis.searchIndex = index;\n\t}\n\n\tpublic Locale getLocale() {\n\t\treturn locale;\n\t}\n\n\tpublic void setLocale(Locale locale) {\n\t\tthis.locale = locale;\n\t}\n\n\tpublic Map<String, String> getFields() {\n\t\treturn fields;\n\t}\n\n\tpublic void setFields(Map<String, String> fields) {\n\t\tthis.fields = fields;\n\t}\n\n\tpublic int getCount() {\n\t\treturn count;\n\t}\n\n\tpublic void setCount(int count) {\n\t\tthis.count = count;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/FileArgs.java",
    "content": "package com.redis.riot;\n\nimport com.redis.riot.file.FileOptions;\n\nimport lombok.ToString;\nimport picocli.CommandLine.ArgGroup;\nimport picocli.CommandLine.Option;\n\n@ToString\npublic class FileArgs {\n\n\t@Option(names = { \"-z\", \"--gzip\" }, description = \"File is gzip compressed.\")\n\tprivate boolean gzipped;\n\n\t@ArgGroup(exclusive = false)\n\tprivate S3Args s3Args = new S3Args();\n\n\t@ArgGroup(exclusive = false)\n\tprivate GoogleStorageArgs googleStorageArgs = new GoogleStorageArgs();\n\n\t@Option(names = \"--delimiter\", description = \"Delimiter character.\", paramLabel = \"<string>\")\n\tprivate String delimiter;\n\n\t@Option(names = \"--encoding\", description = \"File encoding (default: ${DEFAULT-VALUE}).\", paramLabel = \"<charset>\")\n\tprivate String encoding = FileOptions.DEFAULT_ENCODING;\n\n\t@Option(names = \"--quote\", description = \"Escape character for CSV files (default: ${DEFAULT-VALUE}).\", paramLabel = \"<char>\")\n\tprivate char quoteCharacter = FileOptions.DEFAULT_QUOTE_CHARACTER;\n\n\tpublic S3Args getS3Args() {\n\t\treturn s3Args;\n\t}\n\n\tpublic void setS3Args(S3Args args) {\n\t\tthis.s3Args = args;\n\t}\n\n\tpublic GoogleStorageArgs getGoogleStorageArgs() {\n\t\treturn googleStorageArgs;\n\t}\n\n\tpublic void setGoogleStorageArgs(GoogleStorageArgs gcpArgs) {\n\t\tthis.googleStorageArgs = gcpArgs;\n\t}\n\n\tpublic boolean isGzipped() {\n\t\treturn gzipped;\n\t}\n\n\tpublic void setGzipped(boolean gzipped) {\n\t\tthis.gzipped = gzipped;\n\t}\n\n\tpublic String getEncoding() {\n\t\treturn encoding;\n\t}\n\n\tpublic void setEncoding(String encoding) {\n\t\tthis.encoding = encoding;\n\t}\n\n\tpublic char getQuoteCharacter() {\n\t\treturn quoteCharacter;\n\t}\n\n\tpublic void setQuoteCharacter(char character) {\n\t\tthis.quoteCharacter = character;\n\t}\n\n\tpublic String getDelimiter() {\n\t\treturn delimiter;\n\t}\n\n\tpublic void setDelimiter(String delimiter) {\n\t\tthis.delimiter = delimiter;\n\t}\n\n\tpublic void apply(FileOptions options) {\n\t\toptions.setDelimiter(delimiter);\n\t\toptions.setEncoding(encoding);\n\t\toptions.setQuoteCharacter(quoteCharacter);\n\t\toptions.setS3Options(s3Args.s3Options());\n\t\toptions.setGoogleStorageOptions(googleStorageArgs.googleStorageOptions());\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/FileExport.java",
    "content": "package com.redis.riot;\n\nimport org.springframework.util.MimeType;\n\nimport picocli.CommandLine.ArgGroup;\nimport picocli.CommandLine.Command;\n\n@Command(name = \"file-export\", description = \"Export Redis data to files.\")\npublic class FileExport extends AbstractFileExport {\n\n\t@ArgGroup(exclusive = false)\n\tprivate FileTypeArgs fileTypeArgs = new FileTypeArgs();\n\n\t@Override\n\tprotected MimeType getFileType() {\n\t\treturn fileTypeArgs.getType();\n\t}\n\n\tpublic FileTypeArgs getFileTypeArgs() {\n\t\treturn fileTypeArgs;\n\t}\n\n\tpublic void setFileTypeArgs(FileTypeArgs fileTypeArgs) {\n\t\tthis.fileTypeArgs = fileTypeArgs;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/FileImport.java",
    "content": "package com.redis.riot;\n\nimport org.springframework.util.MimeType;\n\nimport picocli.CommandLine.ArgGroup;\nimport picocli.CommandLine.Command;\n\n@Command(name = \"file-import\", description = \"Import data from files.\")\npublic class FileImport extends AbstractFileImport {\n\n\t@ArgGroup(exclusive = false)\n\tprivate FileTypeArgs fileTypeArgs = new FileTypeArgs();\n\n\t@Override\n\tpublic MimeType getFileType() {\n\t\treturn fileTypeArgs.getType();\n\t}\n\n\tpublic FileTypeArgs getFileTypeArgs() {\n\t\treturn fileTypeArgs;\n\t}\n\n\tpublic void setFileTypeArgs(FileTypeArgs fileTypeArgs) {\n\t\tthis.fileTypeArgs = fileTypeArgs;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/FileReaderArgs.java",
    "content": "package com.redis.riot;\n\nimport java.util.List;\nimport java.util.Set;\n\nimport com.redis.riot.file.ReadOptions;\n\nimport lombok.ToString;\nimport picocli.CommandLine.Option;\n\n@ToString\npublic class FileReaderArgs extends FileArgs {\n\n\t@Option(names = \"--header\", description = \"Use first line as field names for CSV/fixed-length files\")\n\tprivate boolean header;\n\n\t@Option(names = \"--ranges\", arity = \"1..*\", description = \"Column ranges for fixed-length files.\", paramLabel = \"<string>\")\n\tprivate List<String> columnRanges;\n\n\t@Option(names = \"--cont\", description = \"Line continuation string (default: ${DEFAULT-VALUE}).\", paramLabel = \"<string>\")\n\tprivate String continuationString = ReadOptions.DEFAULT_CONTINUATION_STRING;\n\n\t@Option(names = \"--fields\", arity = \"1..*\", description = \"Delimited/FW field names.\", paramLabel = \"<names>\")\n\tprivate List<String> fields;\n\n\t@Option(names = \"--header-line\", description = \"Index of header line.\", paramLabel = \"<index>\")\n\tprivate Integer headerLine;\n\n\t@Option(names = \"--include\", arity = \"1..*\", description = \"Field indices to include in CSV/fixed-length files (0-based).\", paramLabel = \"<index>\")\n\tprivate Set<Integer> includedFields;\n\n\t@Option(names = \"--skip-lines\", description = \"Lines to skip at start of CSV/fixed-length files.\", paramLabel = \"<count>\")\n\tprivate Integer linesToSkip;\n\n\t@Option(names = \"--max\", description = \"Max number of lines to import.\", paramLabel = \"<count>\")\n\tprivate int maxItemCount;\n\n\tpublic ReadOptions readOptions() {\n\t\tReadOptions options = new ReadOptions();\n\t\tapply(options);\n\t\toptions.setHeader(header);\n\t\toptions.setColumnRanges(columnRanges);\n\t\toptions.setContinuationString(continuationString);\n\t\toptions.setFields(fields);\n\t\toptions.setHeaderLine(headerLine);\n\t\toptions.setIncludedFields(includedFields);\n\t\toptions.setLinesToSkip(linesToSkip);\n\t\toptions.setMaxItemCount(maxItemCount);\n\t\treturn options;\n\t}\n\n\tpublic boolean isHeader() {\n\t\treturn header;\n\t}\n\n\tpublic void setHeader(boolean header) {\n\t\tthis.header = header;\n\t}\n\n\tpublic List<String> getColumnRanges() {\n\t\treturn columnRanges;\n\t}\n\n\tpublic void setColumnRanges(List<String> columnRanges) {\n\t\tthis.columnRanges = columnRanges;\n\t}\n\n\tpublic String getContinuationString() {\n\t\treturn continuationString;\n\t}\n\n\tpublic void setContinuationString(String continuationString) {\n\t\tthis.continuationString = continuationString;\n\t}\n\n\tpublic List<String> getFields() {\n\t\treturn fields;\n\t}\n\n\tpublic void setFields(List<String> fields) {\n\t\tthis.fields = fields;\n\t}\n\n\tpublic Integer getHeaderLine() {\n\t\treturn headerLine;\n\t}\n\n\tpublic void setHeaderLine(Integer headerLine) {\n\t\tthis.headerLine = headerLine;\n\t}\n\n\tpublic Set<Integer> getIncludedFields() {\n\t\treturn includedFields;\n\t}\n\n\tpublic void setIncludedFields(Set<Integer> fields) {\n\t\tthis.includedFields = fields;\n\t}\n\n\tpublic Integer getLinesToSkip() {\n\t\treturn linesToSkip;\n\t}\n\n\tpublic void setLinesToSkip(Integer linesToSkip) {\n\t\tthis.linesToSkip = linesToSkip;\n\t}\n\n\tpublic int getMaxItemCount() {\n\t\treturn maxItemCount;\n\t}\n\n\tpublic void setMaxItemCount(int maxItemCount) {\n\t\tthis.maxItemCount = maxItemCount;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/FileTypeArgs.java",
    "content": "package com.redis.riot;\n\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.springframework.util.MimeType;\n\nimport com.redis.riot.file.ResourceMap;\n\nimport picocli.CommandLine.ITypeConverter;\nimport picocli.CommandLine.Option;\n\npublic class FileTypeArgs {\n\n\t@Option(names = { \"-t\",\n\t\t\t\"--type\" }, description = \"File type: ${COMPLETION-CANDIDATES}.\", paramLabel = \"<type>\", completionCandidates = FileTypeCandidates.class, converter = FileTypeConverter.class)\n\tprivate MimeType type;\n\n\tpublic MimeType getType() {\n\t\treturn type;\n\t}\n\n\tpublic void setType(MimeType type) {\n\t\tthis.type = type;\n\t}\n\n\tprivate static final Map<String, MimeType> typeMap = typeMap();\n\n\tpublic static Map<String, MimeType> typeMap() {\n\t\tMap<String, MimeType> map = new HashMap<>();\n\t\tmap.put(\"csv\", ResourceMap.CSV);\n\t\tmap.put(\"psv\", ResourceMap.PSV);\n\t\tmap.put(\"tsv\", ResourceMap.TSV);\n\t\tmap.put(\"fw\", ResourceMap.TEXT);\n\t\tmap.put(\"json\", ResourceMap.JSON);\n\t\tmap.put(\"jsonl\", ResourceMap.JSON_LINES);\n\t\tmap.put(\"xml\", ResourceMap.XML);\n\t\treturn map;\n\t}\n\n\tstatic class FileTypeConverter implements ITypeConverter<MimeType> {\n\n\t\t@Override\n\t\tpublic MimeType convert(String value) throws Exception {\n\t\t\treturn typeMap.get(value.toLowerCase());\n\t\t}\n\t}\n\n\t@SuppressWarnings(\"serial\")\n\tstatic class FileTypeCandidates extends ArrayList<String> {\n\n\t\tFileTypeCandidates() {\n\t\t\tsuper(typeMap.keySet());\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/FileWriterArgs.java",
    "content": "package com.redis.riot;\n\nimport com.google.cloud.spring.core.GcpScope;\nimport com.redis.riot.file.WriteOptions;\n\nimport lombok.ToString;\nimport picocli.CommandLine.Option;\n\n@ToString\npublic class FileWriterArgs extends FileArgs {\n\n\tpublic static final boolean DEFAULT_HEADER = true;\n\n\t@Option(names = \"--header\", description = \"Write first line with field names for CSV/fixed-length files\")\n\tprivate boolean header = DEFAULT_HEADER;\n\n\t@Option(names = \"--format\", description = \"Format string used to aggregate items.\", hidden = true)\n\tprivate String formatterString;\n\n\t@Option(names = \"--append\", description = \"Append to file if it exists.\")\n\tprivate boolean append;\n\n\t@Option(names = \"--force-sync\", description = \"Force-sync changes to disk on flush.\", hidden = true)\n\tprivate boolean forceSync;\n\n\t@Option(names = \"--root\", description = \"XML root element tag name (default: ${DEFAULT-VALUE}).\", paramLabel = \"<string>\")\n\tprivate String rootName = WriteOptions.DEFAULT_ROOT_NAME;\n\n\t@Option(names = \"--element\", description = \"XML element tag name (default: ${DEFAULT-VALUE}).\", paramLabel = \"<string>\")\n\tprivate String elementName = WriteOptions.DEFAULT_ELEMENT_NAME;\n\n\t@Option(names = \"--line-sep\", description = \"String to separate lines (default: system default).\", paramLabel = \"<string>\")\n\tprivate String lineSeparator = WriteOptions.DEFAULT_LINE_SEPARATOR;\n\n\t@Option(names = \"--delete-empty\", description = \"Delete file if still empty after export.\")\n\tprivate boolean shouldDeleteIfEmpty;\n\n\t@Option(names = \"--delete-exists\", description = \"Delete file if it already exists. True by default.\", negatable = true, defaultValue = \"true\", fallbackValue = \"true\")\n\tprivate boolean shouldDeleteIfExists = WriteOptions.DEFAULT_SHOULD_DELETE_IF_EXISTS;\n\n\t@Option(names = \"--transactional\", description = \"Delay writing to the buffer if a transaction is active. True by default.\", negatable = true, defaultValue = \"true\", fallbackValue = \"true\")\n\tprivate boolean transactional = WriteOptions.DEFAULT_TRANSACTIONAL;\n\n\tpublic WriteOptions fileWriterOptions() {\n\t\tWriteOptions options = new WriteOptions();\n\t\tapply(options);\n\t\toptions.setHeader(header);\n\t\toptions.getGoogleStorageOptions().setScope(GcpScope.STORAGE_READ_WRITE);\n\t\toptions.setAppend(append);\n\t\toptions.setElementName(elementName);\n\t\toptions.setForceSync(forceSync);\n\t\toptions.setFormatterString(formatterString);\n\t\toptions.setLineSeparator(lineSeparator);\n\t\toptions.setRootName(rootName);\n\t\toptions.setShouldDeleteIfEmpty(shouldDeleteIfEmpty);\n\t\toptions.setShouldDeleteIfExists(shouldDeleteIfExists);\n\t\toptions.setTransactional(transactional);\n\t\treturn options;\n\t}\n\n\tpublic boolean isHeader() {\n\t\treturn header;\n\t}\n\n\tpublic void setHeader(boolean header) {\n\t\tthis.header = header;\n\t}\n\n\tpublic String getRootName() {\n\t\treturn rootName;\n\t}\n\n\tpublic void setRootName(String name) {\n\t\tthis.rootName = name;\n\t}\n\n\tpublic String getElementName() {\n\t\treturn elementName;\n\t}\n\n\tpublic void setElementName(String name) {\n\t\tthis.elementName = name;\n\t}\n\n\tpublic boolean isAppend() {\n\t\treturn append;\n\t}\n\n\tpublic void setAppend(boolean append) {\n\t\tthis.append = append;\n\t}\n\n\tpublic boolean isForceSync() {\n\t\treturn forceSync;\n\t}\n\n\tpublic void setForceSync(boolean forceSync) {\n\t\tthis.forceSync = forceSync;\n\t}\n\n\tpublic String getLineSeparator() {\n\t\treturn lineSeparator;\n\t}\n\n\tpublic void setLineSeparator(String separator) {\n\t\tthis.lineSeparator = separator;\n\t}\n\n\tpublic boolean isShouldDeleteIfEmpty() {\n\t\treturn shouldDeleteIfEmpty;\n\t}\n\n\tpublic void setShouldDeleteIfEmpty(boolean delete) {\n\t\tthis.shouldDeleteIfEmpty = delete;\n\t}\n\n\tpublic boolean isShouldDeleteIfExists() {\n\t\treturn shouldDeleteIfExists;\n\t}\n\n\tpublic void setShouldDeleteIfExists(boolean delete) {\n\t\tthis.shouldDeleteIfExists = delete;\n\t}\n\n\tpublic String getFormatterString() {\n\t\treturn formatterString;\n\t}\n\n\tpublic void setFormatterString(String formatterString) {\n\t\tthis.formatterString = formatterString;\n\t}\n\n\tpublic boolean isTransactional() {\n\t\treturn transactional;\n\t}\n\n\tpublic void setTransactional(boolean transactional) {\n\t\tthis.transactional = transactional;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/Generate.java",
    "content": "package com.redis.riot;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport org.springframework.batch.core.Job;\nimport org.springframework.util.StringUtils;\n\nimport com.redis.lettucemod.search.CreateOptions;\nimport com.redis.lettucemod.search.Field;\nimport com.redis.riot.core.Step;\nimport com.redis.spring.batch.item.redis.RedisItemWriter;\nimport com.redis.spring.batch.item.redis.common.KeyValue;\nimport com.redis.spring.batch.item.redis.gen.GeneratorItemReader;\nimport com.redis.spring.batch.item.redis.gen.ItemType;\n\nimport picocli.CommandLine.ArgGroup;\nimport picocli.CommandLine.Command;\n\n@Command(name = \"gen\", aliases = \"generate\", description = \"Generate Redis data structures.\")\npublic class Generate extends AbstractRedisCommand {\n\n\tprivate static final String TASK_NAME = \"Generating\";\n\n\t@ArgGroup(exclusive = false)\n\tprivate GenerateArgs generateArgs = new GenerateArgs();\n\n\t@ArgGroup(exclusive = false, heading = \"Redis writer options%n\")\n\tprivate RedisWriterArgs redisWriterArgs = new RedisWriterArgs();\n\n\t@Override\n\tprotected Job job() {\n\t\tif (StringUtils.hasLength(generateArgs.getIndex())) {\n\t\t\tcommands().ftCreate(generateArgs.getIndex(), indexCreateOptions(), indexFields());\n\t\t}\n\t\tStep<KeyValue<String>, KeyValue<String>> step = new Step<>(reader(), writer());\n\t\tstep.taskName(TASK_NAME);\n\t\tstep.maxItemCount(generateArgs.getCount());\n\t\treturn job(step);\n\t}\n\n\tprivate RedisItemWriter<String, String, KeyValue<String>> writer() {\n\t\tRedisItemWriter<String, String, KeyValue<String>> writer = RedisItemWriter.struct();\n\t\tconfigure(writer);\n\t\tlog.info(\"Configuring Redis writer with {}\", redisWriterArgs);\n\t\tredisWriterArgs.configure(writer);\n\t\treturn writer;\n\t}\n\n\tprivate CreateOptions<String, String> indexCreateOptions() {\n\t\tCreateOptions.Builder<String, String> options = CreateOptions.builder();\n\t\toptions.on(indexOn());\n\t\toptions.prefix(generateArgs.getKeyspace() + generateArgs.getKeySepataror());\n\t\treturn options.build();\n\t}\n\n\tprivate CreateOptions.DataType indexOn() {\n\t\tif (isJson()) {\n\t\t\treturn CreateOptions.DataType.JSON;\n\t\t}\n\t\treturn CreateOptions.DataType.HASH;\n\t}\n\n\tprivate boolean isJson() {\n\t\treturn generateArgs.getTypes().contains(ItemType.JSON);\n\t}\n\n\t@SuppressWarnings(\"unchecked\")\n\tprivate Field<String>[] indexFields() {\n\t\tint fieldCount = indexFieldCount();\n\t\tList<Field<String>> fields = new ArrayList<>();\n\t\tfor (int index = 1; index <= fieldCount; index++) {\n\t\t\tfields.add(indexField(index));\n\t\t}\n\t\treturn fields.toArray(new Field[0]);\n\t}\n\n\tprivate Field<String> indexField(int index) {\n\t\tString name = \"field\" + index;\n\t\tif (isJson()) {\n\t\t\treturn Field.tag(\"$.\" + name).as(name).build();\n\t\t}\n\t\treturn Field.tag(name).build();\n\t}\n\n\tprivate int indexFieldCount() {\n\t\tif (isJson()) {\n\t\t\treturn generateArgs.getJsonFieldCount().getMax();\n\t\t}\n\t\treturn generateArgs.getHashFieldCount().getMax();\n\t}\n\n\tprivate GeneratorItemReader reader() {\n\t\tGeneratorItemReader reader = new GeneratorItemReader();\n\t\treader.setMaxItemCount(generateArgs.getCount());\n\t\tgenerateArgs.configure(reader);\n\t\treturn reader;\n\t}\n\n\tpublic RedisWriterArgs getRedisWriterArgs() {\n\t\treturn redisWriterArgs;\n\t}\n\n\tpublic void setRedisWriterArgs(RedisWriterArgs args) {\n\t\tthis.redisWriterArgs = args;\n\t}\n\n\tpublic GenerateArgs getGenerateArgs() {\n\t\treturn generateArgs;\n\t}\n\n\tpublic void setGenerateArgs(GenerateArgs args) {\n\t\tthis.generateArgs = args;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/GenerateArgs.java",
    "content": "package com.redis.riot;\n\nimport java.time.Instant;\nimport java.util.List;\n\nimport com.redis.spring.batch.item.redis.common.Range;\nimport com.redis.spring.batch.item.redis.gen.CollectionOptions;\nimport com.redis.spring.batch.item.redis.gen.GeneratorItemReader;\nimport com.redis.spring.batch.item.redis.gen.ItemType;\nimport com.redis.spring.batch.item.redis.gen.MapOptions;\nimport com.redis.spring.batch.item.redis.gen.StreamOptions;\nimport com.redis.spring.batch.item.redis.gen.StringOptions;\nimport com.redis.spring.batch.item.redis.gen.TimeSeriesOptions;\nimport com.redis.spring.batch.item.redis.gen.ZsetOptions;\n\nimport lombok.ToString;\nimport picocli.CommandLine.Option;\n\n@ToString\npublic class GenerateArgs {\n\n\tpublic static final int DEFAULT_COUNT = 1000;\n\n\t@Option(names = \"--count\", description = \"Number of items to generate (default: ${DEFAULT-VALUE}).\", paramLabel = \"<int>\")\n\tprivate int count = DEFAULT_COUNT;\n\n\t@Option(names = \"--key-separator\", description = \"Key separator (default: ${DEFAULT-VALUE}).\", paramLabel = \"<str>\")\n\tprivate String keySepataror = GeneratorItemReader.DEFAULT_KEY_SEPARATOR;\n\n\t@Option(names = \"--keyspace\", description = \"Keyspace prefix for generated data structures (default: ${DEFAULT-VALUE}).\", paramLabel = \"<str>\")\n\tprivate String keyspace = GeneratorItemReader.DEFAULT_KEYSPACE;\n\n\t@Option(names = \"--key-range\", description = \"Range of keys to generate in the form 'start-end' (default: ${DEFAULT-VALUE}).\", paramLabel = \"<int>\")\n\tprivate Range keyRange = GeneratorItemReader.DEFAULT_KEY_RANGE;\n\n\t@Option(arity = \"1..*\", names = \"--type\", description = \"Types of data structures to generate: ${COMPLETION-CANDIDATES} (default: ${DEFAULT-VALUE}).\", paramLabel = \"<type>\")\n\tprivate List<ItemType> types = GeneratorItemReader.defaultTypes();\n\n\t@Option(names = \"--index\", description = \"Name of index to create that matches JSON or hash type.\", paramLabel = \"<name>\")\n\tprivate String index;\n\n\t@Option(names = \"--expiration\", description = \"TTL in seconds.\", paramLabel = \"<secs>\")\n\tprivate Range expiration;\n\n\t@Option(names = \"--hash-size\", description = \"Number of fields in hashes (default: ${DEFAULT-VALUE}).\", paramLabel = \"<int>\")\n\tprivate Range hashFieldCount = MapOptions.DEFAULT_FIELD_COUNT;\n\n\t@Option(names = \"--hash-value\", description = \"Value size for hash fields (default: ${DEFAULT-VALUE}).\", paramLabel = \"<int>\")\n\tprivate Range hashFieldLength = MapOptions.DEFAULT_FIELD_LENGTH;\n\n\t@Option(names = \"--json-size\", description = \"Number of fields in JSON docs (default: ${DEFAULT-VALUE}).\", paramLabel = \"<int>\")\n\tprivate Range jsonFieldCount = MapOptions.DEFAULT_FIELD_COUNT;\n\n\t@Option(names = \"--json-value\", description = \"Value size for JSON fields (default: ${DEFAULT-VALUE}).\", paramLabel = \"<int>\")\n\tprivate Range jsonFieldLength = MapOptions.DEFAULT_FIELD_LENGTH;\n\n\t@Option(names = \"--list-size\", description = \"Number of elements in lists (default: ${DEFAULT-VALUE}).\", paramLabel = \"<int>\")\n\tprivate Range listMemberCount = CollectionOptions.DEFAULT_MEMBER_COUNT;\n\n\t@Option(names = \"--list-value\", description = \"Value size for list elements (default: ${DEFAULT-VALUE}).\", paramLabel = \"<int>\")\n\tprivate Range listMemberRange = CollectionOptions.DEFAULT_MEMBER_RANGE;\n\n\t@Option(names = \"--set-size\", description = \"Number of elements in sets (default: ${DEFAULT-VALUE}).\", paramLabel = \"<int>\")\n\tprivate Range setMemberCount = CollectionOptions.DEFAULT_MEMBER_COUNT;\n\n\t@Option(names = \"--set-value\", description = \"Value size for set elements (default: ${DEFAULT-VALUE}).\", paramLabel = \"<int>\")\n\tprivate Range setMemberLength = CollectionOptions.DEFAULT_MEMBER_RANGE;\n\n\t@Option(names = \"--stream-size\", description = \"Number of messages in streams (default: ${DEFAULT-VALUE}).\", paramLabel = \"<int>\")\n\tprivate Range streamMessageCount = StreamOptions.DEFAULT_MESSAGE_COUNT;\n\n\t@Option(names = \"--stream-fields\", description = \"Number of fields in stream messages (default: ${DEFAULT-VALUE}).\", paramLabel = \"<int>\")\n\tprivate Range streamFieldCount = MapOptions.DEFAULT_FIELD_COUNT;\n\n\t@Option(names = \"--stream-value\", description = \"Value size for fields in stream messages (default: ${DEFAULT-VALUE}).\", paramLabel = \"<int>\")\n\tprivate Range streamFieldLength = MapOptions.DEFAULT_FIELD_LENGTH;\n\n\t@Option(names = \"--string-value\", description = \"Length of strings (default: ${DEFAULT-VALUE}).\", paramLabel = \"<int>\")\n\tprivate Range stringLength = StringOptions.DEFAULT_LENGTH;\n\n\t@Option(names = \"--ts-size\", description = \"Number of samples in timeseries (default: ${DEFAULT-VALUE}).\", paramLabel = \"<int>\")\n\tprivate Range timeseriesSampleCount = TimeSeriesOptions.DEFAULT_SAMPLE_COUNT;\n\n\t@Option(names = \"--ts-time\", description = \"Start time for samples in timeseries, e.g. 2007-12-03T10:15:30.00Z (default: now).\", paramLabel = \"<epoch>\")\n\tprivate Instant timeseriesStartTime;\n\n\t@Option(names = \"--zset-size\", description = \"Number of elements in sorted sets (default: ${DEFAULT-VALUE}).\", paramLabel = \"<int>\")\n\tprivate Range zsetMemberCount = CollectionOptions.DEFAULT_MEMBER_COUNT;\n\n\t@Option(names = \"--zset-value\", description = \"Value size for sorted-set elements (default: ${DEFAULT-VALUE}).\", paramLabel = \"<int>\")\n\tprivate Range zsetMemberLength = CollectionOptions.DEFAULT_MEMBER_RANGE;\n\n\t@Option(names = \"--zset-score\", description = \"Score of sorted sets (default: ${DEFAULT-VALUE}).\", paramLabel = \"<int>\")\n\tprivate Range zsetScore = ZsetOptions.DEFAULT_SCORE;\n\n\tprivate ZsetOptions zsetOptions() {\n\t\tZsetOptions options = new ZsetOptions();\n\t\toptions.setMemberCount(zsetMemberCount);\n\t\toptions.setMemberRange(zsetMemberLength);\n\t\toptions.setScore(zsetScore);\n\t\treturn options;\n\t}\n\n\tprivate TimeSeriesOptions timeseriesOptions() {\n\t\tTimeSeriesOptions options = new TimeSeriesOptions();\n\t\toptions.setSampleCount(timeseriesSampleCount);\n\t\tif (timeseriesStartTime != null) {\n\t\t\toptions.setStartTime(timeseriesStartTime);\n\t\t}\n\t\treturn options;\n\t}\n\n\tprivate StringOptions stringOptions() {\n\t\tStringOptions options = new StringOptions();\n\t\toptions.setLength(stringLength);\n\t\treturn options;\n\t}\n\n\tprivate StreamOptions streamOptions() {\n\t\tStreamOptions options = new StreamOptions();\n\t\toptions.setBodyOptions(mapOptions(streamFieldCount, streamFieldLength));\n\t\toptions.setMessageCount(streamMessageCount);\n\t\treturn options;\n\t}\n\n\tprivate CollectionOptions setOptions() {\n\t\treturn collectionOptions(setMemberCount, setMemberLength);\n\t}\n\n\tprivate CollectionOptions listOptions() {\n\t\treturn collectionOptions(listMemberCount, listMemberRange);\n\t}\n\n\tprivate CollectionOptions collectionOptions(Range memberCount, Range memberRange) {\n\t\tCollectionOptions options = new CollectionOptions();\n\t\toptions.setMemberCount(memberCount);\n\t\toptions.setMemberRange(memberRange);\n\t\treturn options;\n\t}\n\n\tprivate MapOptions jsonOptions() {\n\t\treturn mapOptions(jsonFieldCount, jsonFieldLength);\n\t}\n\n\tprivate MapOptions hashOptions() {\n\t\treturn mapOptions(hashFieldCount, hashFieldLength);\n\t}\n\n\tprivate MapOptions mapOptions(Range fieldCount, Range fieldLength) {\n\t\tMapOptions options = new MapOptions();\n\t\toptions.setFieldCount(fieldCount);\n\t\toptions.setFieldLength(fieldLength);\n\t\treturn options;\n\t}\n\n\tpublic void configure(GeneratorItemReader reader) {\n\t\treader.setKeySeparator(keySepataror);\n\t\treader.setExpiration(expiration);\n\t\treader.setHashOptions(hashOptions());\n\t\treader.setJsonOptions(jsonOptions());\n\t\treader.setKeyRange(keyRange);\n\t\treader.setKeyspace(keyspace);\n\t\treader.setListOptions(listOptions());\n\t\treader.setSetOptions(setOptions());\n\t\treader.setStreamOptions(streamOptions());\n\t\treader.setStringOptions(stringOptions());\n\t\treader.setTimeSeriesOptions(timeseriesOptions());\n\t\treader.setTypes(types);\n\t\treader.setZsetOptions(zsetOptions());\n\t}\n\n\tpublic int getCount() {\n\t\treturn count;\n\t}\n\n\tpublic void setCount(int count) {\n\t\tthis.count = count;\n\t}\n\n\tpublic String getKeyspace() {\n\t\treturn keyspace;\n\t}\n\n\tpublic void setKeyspace(String keyspace) {\n\t\tthis.keyspace = keyspace;\n\t}\n\n\tpublic Range getKeyRange() {\n\t\treturn keyRange;\n\t}\n\n\tpublic void setKeyRange(Range keyRange) {\n\t\tthis.keyRange = keyRange;\n\t}\n\n\tpublic List<ItemType> getTypes() {\n\t\treturn types;\n\t}\n\n\tpublic void setTypes(List<ItemType> types) {\n\t\tthis.types = types;\n\t}\n\n\tpublic Range getExpiration() {\n\t\treturn expiration;\n\t}\n\n\tpublic void setExpiration(Range expiration) {\n\t\tthis.expiration = expiration;\n\t}\n\n\tpublic Range getHashFieldCount() {\n\t\treturn hashFieldCount;\n\t}\n\n\tpublic void setHashFieldCount(Range hashFieldCount) {\n\t\tthis.hashFieldCount = hashFieldCount;\n\t}\n\n\tpublic Range getHashFieldLength() {\n\t\treturn hashFieldLength;\n\t}\n\n\tpublic void setHashFieldLength(Range hashFieldLength) {\n\t\tthis.hashFieldLength = hashFieldLength;\n\t}\n\n\tpublic Range getJsonFieldCount() {\n\t\treturn jsonFieldCount;\n\t}\n\n\tpublic void setJsonFieldCount(Range jsonFieldCount) {\n\t\tthis.jsonFieldCount = jsonFieldCount;\n\t}\n\n\tpublic Range getJsonFieldLength() {\n\t\treturn jsonFieldLength;\n\t}\n\n\tpublic void setJsonFieldLength(Range jsonFieldLength) {\n\t\tthis.jsonFieldLength = jsonFieldLength;\n\t}\n\n\tpublic Range getListMemberCount() {\n\t\treturn listMemberCount;\n\t}\n\n\tpublic void setListMemberCount(Range listMemberCount) {\n\t\tthis.listMemberCount = listMemberCount;\n\t}\n\n\tpublic Range getListMemberRange() {\n\t\treturn listMemberRange;\n\t}\n\n\tpublic void setListMemberRange(Range listMemberRange) {\n\t\tthis.listMemberRange = listMemberRange;\n\t}\n\n\tpublic Range getSetMemberCount() {\n\t\treturn setMemberCount;\n\t}\n\n\tpublic void setSetMemberCount(Range setMemberCount) {\n\t\tthis.setMemberCount = setMemberCount;\n\t}\n\n\tpublic Range getSetMemberLength() {\n\t\treturn setMemberLength;\n\t}\n\n\tpublic void setSetMemberLength(Range setMemberLength) {\n\t\tthis.setMemberLength = setMemberLength;\n\t}\n\n\tpublic Range getStreamMessageCount() {\n\t\treturn streamMessageCount;\n\t}\n\n\tpublic void setStreamMessageCount(Range streamMessageCount) {\n\t\tthis.streamMessageCount = streamMessageCount;\n\t}\n\n\tpublic Range getStreamFieldCount() {\n\t\treturn streamFieldCount;\n\t}\n\n\tpublic void setStreamFieldCount(Range streamFieldCount) {\n\t\tthis.streamFieldCount = streamFieldCount;\n\t}\n\n\tpublic Range getStreamFieldLength() {\n\t\treturn streamFieldLength;\n\t}\n\n\tpublic void setStreamFieldLength(Range streamFieldLength) {\n\t\tthis.streamFieldLength = streamFieldLength;\n\t}\n\n\tpublic Range getStringLength() {\n\t\treturn stringLength;\n\t}\n\n\tpublic void setStringLength(Range stringLength) {\n\t\tthis.stringLength = stringLength;\n\t}\n\n\tpublic Range getTimeseriesSampleCount() {\n\t\treturn timeseriesSampleCount;\n\t}\n\n\tpublic void setTimeseriesSampleCount(Range timeseriesSampleCount) {\n\t\tthis.timeseriesSampleCount = timeseriesSampleCount;\n\t}\n\n\tpublic Instant getTimeseriesStartTime() {\n\t\treturn timeseriesStartTime;\n\t}\n\n\tpublic void setTimeseriesStartTime(Instant timeseriesStartTime) {\n\t\tthis.timeseriesStartTime = timeseriesStartTime;\n\t}\n\n\tpublic Range getZsetMemberCount() {\n\t\treturn zsetMemberCount;\n\t}\n\n\tpublic void setZsetMemberCount(Range zsetMemberCount) {\n\t\tthis.zsetMemberCount = zsetMemberCount;\n\t}\n\n\tpublic Range getZsetMemberLength() {\n\t\treturn zsetMemberLength;\n\t}\n\n\tpublic void setZsetMemberLength(Range zsetMemberLength) {\n\t\tthis.zsetMemberLength = zsetMemberLength;\n\t}\n\n\tpublic Range getZsetScore() {\n\t\treturn zsetScore;\n\t}\n\n\tpublic void setZsetScore(Range zsetScore) {\n\t\tthis.zsetScore = zsetScore;\n\t}\n\n\tpublic String getIndex() {\n\t\treturn index;\n\t}\n\n\tpublic void setIndex(String index) {\n\t\tthis.index = index;\n\t}\n\n\tpublic String getKeySepataror() {\n\t\treturn keySepataror;\n\t}\n\n\tpublic void setKeySepataror(String keySepataror) {\n\t\tthis.keySepataror = keySepataror;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/GoogleStorageArgs.java",
    "content": "package com.redis.riot;\n\nimport java.nio.file.Path;\n\nimport com.redis.riot.file.GoogleStorageOptions;\n\nimport lombok.ToString;\nimport picocli.CommandLine.Option;\n\n@ToString\npublic class GoogleStorageArgs {\n\n\t@Option(names = \"--gcs-key-file\", description = \"Google Cloud Storage private key (e.g. /usr/local/key.json).\", paramLabel = \"<file>\")\n\tprivate Path keyFile;\n\n\t@Option(names = \"--gcs-project\", description = \"Google Cloud Storage project id.\", paramLabel = \"<id>\")\n\tprivate String projectId;\n\n\t@Option(names = \"--gcs-key\", arity = \"0..1\", interactive = true, description = \"Google Cloud Storage Base64 encoded key.\", paramLabel = \"<key>\")\n\tprivate String encodedKey;\n\n\tpublic Path getKeyFile() {\n\t\treturn keyFile;\n\t}\n\n\tpublic void setKeyFile(Path file) {\n\t\tthis.keyFile = file;\n\t}\n\n\tpublic String getProjectId() {\n\t\treturn projectId;\n\t}\n\n\tpublic void setProjectId(String id) {\n\t\tthis.projectId = id;\n\t}\n\n\tpublic String getEncodedKey() {\n\t\treturn encodedKey;\n\t}\n\n\tpublic void setEncodedKey(String key) {\n\t\tthis.encodedKey = key;\n\t}\n\n\tpublic GoogleStorageOptions googleStorageOptions() {\n\t\tGoogleStorageOptions options = new GoogleStorageOptions();\n\t\toptions.setEncodedKey(encodedKey);\n\t\toptions.setKeyFile(keyFile);\n\t\toptions.setProjectId(projectId);\n\t\treturn options;\n\t}\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/ImportProcessorArgs.java",
    "content": "package com.redis.riot;\n\nimport java.util.Map;\n\nimport com.redis.riot.core.Expression;\n\nimport lombok.ToString;\nimport picocli.CommandLine.Option;\n\n@ToString\npublic class ImportProcessorArgs {\n\n\t@Option(arity = \"1..*\", names = \"--proc\", description = \"SpEL expressions in the form field1=\\\"exp\\\" field2=\\\"exp\\\" etc. For details see https://docs.spring.io/spring-framework/reference/core/expressions.html\", paramLabel = \"<f=exp>\")\n\tprivate Map<String, Expression> expressions;\n\n\t@Option(names = \"--filter\", description = \"Discard records using a SpEL expression.\", paramLabel = \"<exp>\")\n\tprivate Expression filter;\n\n\tpublic Map<String, Expression> getExpressions() {\n\t\treturn expressions;\n\t}\n\n\tpublic void setExpressions(Map<String, Expression> expressions) {\n\t\tthis.expressions = expressions;\n\t}\n\n\tpublic Expression getFilter() {\n\t\treturn filter;\n\t}\n\n\tpublic void setFilter(Expression filter) {\n\t\tthis.filter = filter;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/JdbcCursorItemReaderFactory.java",
    "content": "package com.redis.riot;\n\nimport java.util.Map;\n\nimport javax.sql.DataSource;\n\nimport org.springframework.batch.item.database.builder.JdbcCursorItemReaderBuilder;\nimport org.springframework.jdbc.core.ColumnMapRowMapper;\nimport org.springframework.util.Assert;\n\nimport com.redis.riot.core.RiotException;\n\npublic class JdbcCursorItemReaderFactory {\n\n\tpublic static JdbcCursorItemReaderBuilder<Map<String, Object>> create(String sql, DataSourceArgs dataSourceArgs,\n\t\t\tDatabaseReaderArgs readerArgs) {\n\t\tAssert.hasLength(sql, \"No SQL statement specified\");\n\t\tDataSource dataSource;\n\t\ttry {\n\t\t\tdataSource = dataSourceArgs.dataSource();\n\t\t} catch (Exception e) {\n\t\t\tthrow new RiotException(e);\n\t\t}\n\n\t\tJdbcCursorItemReaderBuilder<Map<String, Object>> reader = new JdbcCursorItemReaderBuilder<>();\n\t\treader.dataSource(dataSource);\n\t\treader.sql(sql);\n\t\treader.saveState(false);\n\t\treader.rowMapper(new ColumnMapRowMapper());\n\t\treader.fetchSize(readerArgs.getFetchSize());\n\t\treader.maxRows(readerArgs.getMaxRows());\n\t\treader.queryTimeout(Math.toIntExact(readerArgs.getQueryTimeout().getValue().toMillis()));\n\t\treader.useSharedExtendedConnection(readerArgs.isUseSharedExtendedConnection());\n\t\treader.verifyCursorPosition(readerArgs.isVerifyCursorPosition());\n\t\tif (readerArgs.getMaxItemCount() > 0) {\n\t\t\treader.maxItemCount(readerArgs.getMaxItemCount());\n\t\t}\n\t\treader.name(sql);\n\t\treturn reader;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/KeyFilterArgs.java",
    "content": "package com.redis.riot;\n\nimport java.util.List;\nimport java.util.Optional;\nimport java.util.function.Function;\nimport java.util.function.IntPredicate;\nimport java.util.function.Predicate;\n\nimport org.springframework.util.CollectionUtils;\n\nimport com.redis.spring.batch.item.redis.common.BatchUtils;\nimport com.redis.spring.batch.item.redis.common.Range;\n\nimport io.lettuce.core.cluster.SlotHash;\nimport io.lettuce.core.codec.RedisCodec;\nimport lombok.ToString;\nimport picocli.CommandLine.Option;\n\n@ToString\npublic class KeyFilterArgs {\n\n\t@Option(names = \"--key-include\", arity = \"1..*\", description = \"Glob pattern to match keys for inclusion. E.g. 'mykey:*' will only consider keys starting with 'mykey:'.\", paramLabel = \"<exp>\")\n\tprivate List<String> includes;\n\n\t@Option(names = \"--key-exclude\", arity = \"1..*\", description = \"Glob pattern to match keys for exclusion. E.g. 'mykey:*' will exclude keys starting with 'mykey:'.\", paramLabel = \"<exp>\")\n\tprivate List<String> excludes;\n\n\t@Option(names = \"--key-slot\", arity = \"1..*\", description = \"Ranges of key slots to consider for processing. For example '0-8000' will only consider keys that fall within the range 0 to 8000.\", paramLabel = \"<range>\")\n\tprivate List<Range> slots;\n\n\tpublic <K> Optional<Predicate<K>> predicate(RedisCodec<K, ?> codec) {\n\t\tOptional<Predicate<K>> slotsPredicate = slotsPredicate(codec);\n\t\tOptional<Predicate<K>> globPredicate = globPredicate(codec);\n\t\tif (slotsPredicate.isPresent()) {\n\t\t\tif (globPredicate.isPresent()) {\n\t\t\t\treturn Optional.of(slotsPredicate.get().and(globPredicate.get()));\n\t\t\t}\n\t\t\treturn slotsPredicate;\n\t\t}\n\t\treturn globPredicate;\n\t}\n\n\tprivate <K> Optional<Predicate<K>> globPredicate(RedisCodec<K, ?> codec) {\n\t\tOptional<Predicate<String>> stringPredicate = globPredicate();\n\t\tFunction<K, String> toString = BatchUtils.toStringKeyFunction(codec);\n\t\treturn stringPredicate.map(p -> encodePredicate(p, toString));\n\t}\n\n\tprivate <K> Predicate<K> encodePredicate(Predicate<String> predicate, Function<K, String> toString) {\n\t\treturn k -> predicate.test(toString.apply(k));\n\t}\n\n\tprivate Optional<Predicate<String>> globPredicate() {\n\t\tOptional<Predicate<String>> includePredicate = globPredicate(includes);\n\t\tOptional<Predicate<String>> excludePredicate = globPredicate(excludes).map(Predicate::negate);\n\t\tif (includePredicate.isPresent()) {\n\t\t\tif (excludePredicate.isPresent()) {\n\t\t\t\treturn Optional.of(includePredicate.get().and(excludePredicate.get()));\n\t\t\t}\n\t\t\treturn includePredicate;\n\t\t}\n\t\treturn excludePredicate;\n\t}\n\n\tprivate Optional<Predicate<String>> globPredicate(List<String> patterns) {\n\t\tif (CollectionUtils.isEmpty(patterns)) {\n\t\t\treturn Optional.empty();\n\t\t}\n\t\treturn Optional.of(patterns.stream().map(BatchUtils::globPredicate).reduce(k -> false, Predicate::or));\n\t}\n\n\tprivate <K> Optional<Predicate<K>> slotsPredicate(RedisCodec<K, ?> codec) {\n\t\tif (CollectionUtils.isEmpty(slots)) {\n\t\t\treturn Optional.empty();\n\t\t}\n\t\treturn Optional.of(slots.stream().map(r -> slotRangePredicate(codec, r)).reduce(k -> false, Predicate::or));\n\t}\n\n\tpublic static IntPredicate between(int start, int end) {\n\t\treturn i -> i >= start && i <= end;\n\t}\n\n\tprivate <K> int slot(RedisCodec<K, ?> codec, K key) {\n\t\treturn SlotHash.getSlot(codec.encodeKey(key));\n\t}\n\n\tpublic <K> Predicate<K> slotRangePredicate(RedisCodec<K, ?> codec, Range range) {\n\t\tIntPredicate rangePredicate = between(range.getMin(), range.getMax());\n\t\treturn k -> rangePredicate.test(slot(codec, k));\n\t}\n\n\tpublic List<String> getIncludes() {\n\t\treturn includes;\n\t}\n\n\tpublic void setIncludes(List<String> includes) {\n\t\tthis.includes = includes;\n\t}\n\n\tpublic List<String> getExcludes() {\n\t\treturn excludes;\n\t}\n\n\tpublic void setExcludes(List<String> excludes) {\n\t\tthis.excludes = excludes;\n\t}\n\n\tpublic List<Range> getSlots() {\n\t\treturn slots;\n\t}\n\n\tpublic void setSlots(List<Range> slots) {\n\t\tthis.slots = slots;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/KeyValueDeserializer.java",
    "content": "package com.redis.riot;\n\nimport java.io.IOException;\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.HashSet;\nimport java.util.Map;\nimport java.util.Set;\n\nimport com.fasterxml.jackson.core.JsonParser;\nimport com.fasterxml.jackson.databind.DeserializationContext;\nimport com.fasterxml.jackson.databind.JsonNode;\nimport com.fasterxml.jackson.databind.deser.std.StdDeserializer;\nimport com.fasterxml.jackson.databind.exc.InvalidFormatException;\nimport com.fasterxml.jackson.databind.node.ArrayNode;\nimport com.fasterxml.jackson.databind.node.DoubleNode;\nimport com.fasterxml.jackson.databind.node.LongNode;\nimport com.redis.lettucemod.timeseries.Sample;\nimport com.redis.spring.batch.item.redis.common.KeyValue;\n\nimport io.lettuce.core.ScoredValue;\nimport io.lettuce.core.StreamMessage;\n\n@SuppressWarnings(\"rawtypes\")\npublic class KeyValueDeserializer extends StdDeserializer<KeyValue> {\n\n\tprivate static final long serialVersionUID = 1L;\n\n\tpublic static final String KEY = \"key\";\n\tpublic static final String TYPE = \"type\";\n\tpublic static final String VALUE = \"value\";\n\tpublic static final String SCORE = \"score\";\n\tpublic static final String TTL = \"ttl\";\n\tpublic static final String MEMORY_USAGE = \"memoryUsage\";\n\tpublic static final String STREAM = \"stream\";\n\tpublic static final String ID = \"id\";\n\tpublic static final String BODY = \"body\";\n\tpublic static final String TIMESTAMP = \"timestamp\";\n\n\tpublic KeyValueDeserializer() {\n\t\tthis(null);\n\t}\n\n\tpublic KeyValueDeserializer(Class<KeyValue<String>> t) {\n\t\tsuper(t);\n\t}\n\n\t@Override\n\tpublic KeyValue<String> deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {\n\t\tJsonNode node = p.getCodec().readTree(p);\n\t\tif (!node.has(KEY)) {\n\t\t\tthrow new InvalidFormatException(p, \"No key field found\", node, _valueClass);\n\t\t}\n\t\tKeyValue<String> keyValue = new KeyValue<>();\n\t\tkeyValue.setKey(node.get(KEY).asText());\n\t\tJsonNode typeNode = node.get(TYPE);\n\t\tif (typeNode != null) {\n\t\t\tkeyValue.setType(typeNode.asText());\n\t\t}\n\t\tLongNode ttlNode = (LongNode) node.get(TTL);\n\t\tif (ttlNode != null) {\n\t\t\tkeyValue.setTtl(ttlNode.asLong());\n\t\t}\n\t\tLongNode memUsageNode = (LongNode) node.get(MEMORY_USAGE);\n\t\tif (memUsageNode != null) {\n\t\t\tkeyValue.setMemoryUsage(memUsageNode.asLong());\n\t\t}\n\t\tJsonNode valueNode = node.get(VALUE);\n\t\tif (valueNode != null) {\n\t\t\tkeyValue.setValue(value(keyValue.getType(), valueNode, ctxt));\n\t\t}\n\t\treturn keyValue;\n\t}\n\n\tprivate Object value(String type, JsonNode node, DeserializationContext ctxt) throws IOException {\n\t\tif (type == null) {\n\t\t\treturn null;\n\t\t}\n\t\tswitch (type) {\n\t\tcase KeyValue.TYPE_STREAM:\n\t\t\treturn streamMessages((ArrayNode) node, ctxt);\n\t\tcase KeyValue.TYPE_ZSET:\n\t\t\treturn scoredValues((ArrayNode) node);\n\t\tcase KeyValue.TYPE_TIMESERIES:\n\t\t\treturn samples((ArrayNode) node);\n\t\tcase KeyValue.TYPE_HASH:\n\t\t\treturn ctxt.readTreeAsValue(node, Map.class);\n\t\tcase KeyValue.TYPE_STRING:\n\t\tcase KeyValue.TYPE_JSON:\n\t\t\treturn node.asText();\n\t\tcase KeyValue.TYPE_LIST:\n\t\t\treturn ctxt.readTreeAsValue(node, Collection.class);\n\t\tcase KeyValue.TYPE_SET:\n\t\t\treturn ctxt.readTreeAsValue(node, Set.class);\n\t\tdefault:\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tprivate Collection<Sample> samples(ArrayNode node) {\n\t\tCollection<Sample> samples = new ArrayList<>(node.size());\n\t\tfor (int index = 0; index < node.size(); index++) {\n\t\t\tJsonNode sampleNode = node.get(index);\n\t\t\tif (sampleNode != null) {\n\t\t\t\tsamples.add(sample(sampleNode));\n\t\t\t}\n\t\t}\n\t\treturn samples;\n\t}\n\n\tprivate Sample sample(JsonNode node) {\n\t\tLongNode timestampNode = (LongNode) node.get(TIMESTAMP);\n\t\tlong timestamp = timestampNode == null || timestampNode.isNull() ? 0 : timestampNode.asLong();\n\t\tDoubleNode valueNode = (DoubleNode) node.get(VALUE);\n\t\tdouble value = valueNode == null || valueNode.isNull() ? 0 : valueNode.asDouble();\n\t\treturn Sample.of(timestamp, value);\n\t}\n\n\tprivate Set<ScoredValue<String>> scoredValues(ArrayNode node) {\n\t\tSet<ScoredValue<String>> scoredValues = new HashSet<>(node.size());\n\t\tfor (int index = 0; index < node.size(); index++) {\n\t\t\tJsonNode scoredValueNode = node.get(index);\n\t\t\tif (scoredValueNode != null) {\n\t\t\t\tscoredValues.add(scoredValue(scoredValueNode));\n\t\t\t}\n\t\t}\n\t\treturn scoredValues;\n\t}\n\n\tprivate ScoredValue<String> scoredValue(JsonNode scoredValueNode) {\n\t\tJsonNode valueNode = scoredValueNode.get(VALUE);\n\t\tString value = valueNode == null || valueNode.isNull() ? null : valueNode.asText();\n\t\tDoubleNode scoreNode = (DoubleNode) scoredValueNode.get(SCORE);\n\t\tdouble score = scoreNode == null || scoreNode.isNull() ? 0 : scoreNode.asDouble();\n\t\treturn ScoredValue.just(score, value);\n\t}\n\n\tprivate Collection<StreamMessage<String, String>> streamMessages(ArrayNode node, DeserializationContext ctxt)\n\t\t\tthrows IOException {\n\t\tCollection<StreamMessage<String, String>> messages = new ArrayList<>(node.size());\n\t\tfor (int index = 0; index < node.size(); index++) {\n\t\t\tJsonNode messageNode = node.get(index);\n\t\t\tif (messageNode != null) {\n\t\t\t\tmessages.add(streamMessage(messageNode, ctxt));\n\t\t\t}\n\t\t}\n\t\treturn messages;\n\t}\n\n\t@SuppressWarnings(\"unchecked\")\n\tprivate StreamMessage<String, String> streamMessage(JsonNode messageNode, DeserializationContext ctxt)\n\t\t\tthrows IOException {\n\t\tJsonNode streamNode = messageNode.get(STREAM);\n\t\tString stream = streamNode == null || streamNode.isNull() ? null : streamNode.asText();\n\t\tJsonNode bodyNode = messageNode.get(BODY);\n\t\tMap<String, String> body = ctxt.readTreeAsValue(bodyNode, Map.class);\n\t\tJsonNode idNode = messageNode.get(ID);\n\t\tString id = idNode == null || idNode.isNull() ? null : idNode.asText();\n\t\treturn new StreamMessage<>(stream, id, body);\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/KeyValueFilter.java",
    "content": "package com.redis.riot;\n\nimport java.util.function.Function;\n\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.springframework.batch.item.ItemProcessor;\nimport org.springframework.util.unit.DataSize;\n\nimport com.redis.spring.batch.item.redis.common.BatchUtils;\nimport com.redis.spring.batch.item.redis.common.KeyValue;\n\nimport io.lettuce.core.codec.RedisCodec;\n\npublic class KeyValueFilter<K, T extends KeyValue<K>> implements ItemProcessor<T, T> {\n\n\tprivate static final Logger log = LoggerFactory.getLogger(KeyValueFilter.class);\n\n\tprivate final Function<K, String> keyToString;\n\n\tpublic KeyValueFilter(RedisCodec<K, ?> codec) {\n\t\tthis.keyToString = BatchUtils.toStringKeyFunction(codec);\n\t}\n\n\t@Override\n\tpublic T process(T item) throws Exception {\n\t\tif (KeyValue.exists(item) && !KeyValue.hasValue(item) && item.getMemoryUsage() > 0) {\n\t\t\tif (log.isInfoEnabled()) {\n\t\t\t\tDataSize memUsage = DataSize.ofBytes(item.getMemoryUsage());\n\t\t\t\tlog.info(\"Skipping {} {} ({})\", item.getType(), string(item.getKey()), memUsage);\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t\treturn item;\n\t}\n\n\tprivate String string(K key) {\n\t\treturn keyToString.apply(key);\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/KeyValueProcessorArgs.java",
    "content": "package com.redis.riot;\n\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.function.Consumer;\n\nimport org.springframework.batch.item.ItemProcessor;\nimport org.springframework.batch.item.function.FunctionItemProcessor;\nimport org.springframework.expression.EvaluationContext;\n\nimport com.redis.riot.core.Expression;\nimport com.redis.riot.core.RiotUtils;\nimport com.redis.riot.core.TemplateExpression;\nimport com.redis.riot.core.processor.ConsumerUnaryOperator;\nimport com.redis.riot.function.StreamItemProcessor;\nimport com.redis.spring.batch.item.redis.common.KeyValue;\n\nimport lombok.ToString;\nimport picocli.CommandLine.Option;\n\n@ToString\npublic class KeyValueProcessorArgs {\n\n\t@Option(names = \"--key-proc\", description = \"SpEL template expression to transform key names, e.g. \\\"#{#source.database}:#{key}\\\" for 'abc' returns '0:abc'.\", paramLabel = \"<exp>\")\n\tprivate TemplateExpression keyExpression;\n\n\t@Option(names = \"--type-proc\", description = \"SpEL expression to transform key types.\", paramLabel = \"<exp>\")\n\tprivate Expression typeExpression;\n\n\t@Option(names = \"--ttl-proc\", description = \"SpEL expression to transform key expiration times.\", paramLabel = \"<exp>\")\n\tprivate Expression ttlExpression;\n\n\t@Option(names = \"--no-ttl\", description = \"Do not propagate key expiration times.\")\n\tprivate boolean noTtl;\n\n\t@Option(names = \"--no-stream-id\", description = \"Do not propagate stream message IDs.\")\n\tprivate boolean noStreamIds;\n\n\t@Option(names = \"--stream-prune\", description = \"Drop empty streams.\")\n\tprivate boolean prune;\n\n\tpublic ItemProcessor<KeyValue<String>, KeyValue<String>> processor(EvaluationContext context) {\n\t\tList<ItemProcessor<KeyValue<String>, KeyValue<String>>> processors = new ArrayList<>();\n\t\tif (keyExpression != null) {\n\t\t\tprocessors.add(processor(t -> t.setKey(keyExpression.getValue(context, t))));\n\t\t}\n\t\tif (noTtl) {\n\t\t\tprocessors.add(processor(t -> t.setTtl(0)));\n\t\t}\n\t\tif (ttlExpression != null) {\n\t\t\tprocessors.add(processor(t -> t.setTtl(ttlExpression.getLong(context, t))));\n\t\t}\n\t\tif (typeExpression != null) {\n\t\t\tprocessors.add(processor(t -> t.setType(typeExpression.getString(context, t))));\n\t\t}\n\t\tif (noStreamIds || prune) {\n\t\t\tStreamItemProcessor streamProcessor = new StreamItemProcessor();\n\t\t\tstreamProcessor.setDropMessageIds(noStreamIds);\n\t\t\tstreamProcessor.setPrune(prune);\n\t\t\tprocessors.add(streamProcessor);\n\t\t}\n\t\treturn RiotUtils.processor(processors);\n\t}\n\n\tprivate <T> ItemProcessor<T, T> processor(Consumer<T> consumer) {\n\t\treturn new FunctionItemProcessor<>(new ConsumerUnaryOperator<>(consumer));\n\t}\n\n\tpublic TemplateExpression getKeyExpression() {\n\t\treturn keyExpression;\n\t}\n\n\tpublic void setKeyExpression(TemplateExpression expression) {\n\t\tthis.keyExpression = expression;\n\t}\n\n\tpublic Expression getTypeExpression() {\n\t\treturn typeExpression;\n\t}\n\n\tpublic void setTypeExpression(Expression expression) {\n\t\tthis.typeExpression = expression;\n\t}\n\n\tpublic Expression getTtlExpression() {\n\t\treturn ttlExpression;\n\t}\n\n\tpublic void setTtlExpression(Expression expression) {\n\t\tthis.ttlExpression = expression;\n\t}\n\n\tpublic boolean isNoTtl() {\n\t\treturn noTtl;\n\t}\n\n\tpublic void setNoTtl(boolean noTtl) {\n\t\tthis.noTtl = noTtl;\n\t}\n\n\tpublic boolean isNoStreamIds() {\n\t\treturn noStreamIds;\n\t}\n\n\tpublic void setNoStreamIds(boolean noStreamIds) {\n\t\tthis.noStreamIds = noStreamIds;\n\t}\n\n\tpublic boolean isPrune() {\n\t\treturn prune;\n\t}\n\n\tpublic void setPrune(boolean prune) {\n\t\tthis.prune = prune;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/MemoryUsageArgs.java",
    "content": "package com.redis.riot;\n\nimport org.springframework.util.unit.DataSize;\n\nimport com.redis.spring.batch.item.redis.RedisItemReader;\nimport com.redis.spring.batch.item.redis.reader.KeyValueRead;\n\nimport picocli.CommandLine.Option;\n\npublic class MemoryUsageArgs {\n\n\tpublic static final int DEFAULT_SAMPLES = KeyValueRead.DEFAULT_MEM_USAGE_SAMPLES;\n\n\t@Option(names = \"--mem-limit\", description = \"Max mem usage for a key to be read, for example 12KB 5MB. Use 0 for no limit but still read mem usage.\", paramLabel = \"<size>\")\n\tprivate DataSize limit;\n\n\t@Option(names = \"--mem-samples\", description = \"Number of memory usage samples for a key (default: ${DEFAULT-VALUE}).\", paramLabel = \"<int>\")\n\tprivate int samples = DEFAULT_SAMPLES;\n\n\tpublic DataSize getLimit() {\n\t\treturn limit;\n\t}\n\n\tpublic void setLimit(DataSize limit) {\n\t\tthis.limit = limit;\n\t}\n\n\tpublic int getSamples() {\n\t\treturn samples;\n\t}\n\n\tpublic void setSamples(int samples) {\n\t\tthis.samples = samples;\n\t}\n\n\tpublic void configure(RedisItemReader<?, ?> reader) {\n\t\t@SuppressWarnings(\"rawtypes\")\n\t\tKeyValueRead operation = (KeyValueRead) reader.getOperation();\n\t\toperation.setMemUsageLimit(limit.toBytes());\n\t\toperation.setMemUsageSamples(samples);\n\t}\n}"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/Ping.java",
    "content": "package com.redis.riot;\n\nimport java.util.LinkedHashSet;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Set;\nimport java.util.concurrent.TimeUnit;\nimport java.util.function.Function;\nimport java.util.stream.Collectors;\nimport java.util.stream.DoubleStream;\n\nimport org.HdrHistogram.Histogram;\nimport org.LatencyUtils.LatencyStats;\nimport org.springframework.batch.core.Job;\nimport org.springframework.batch.item.Chunk;\nimport org.springframework.batch.item.ItemWriter;\n\nimport com.redis.riot.core.IO;\nimport com.redis.riot.core.Step;\n\nimport io.lettuce.core.metrics.CommandMetrics.CommandLatency;\nimport io.lettuce.core.metrics.DefaultCommandLatencyCollectorOptions;\nimport picocli.CommandLine.Command;\nimport picocli.CommandLine.Option;\nimport picocli.CommandLine.ParentCommand;\n\n@Command(name = \"ping\", description = \"Test connectivity to a Redis server.\")\npublic class Ping extends AbstractRedisCommand {\n\n\tprivate static final String TASK_NAME = \"Pinging\";\n\n\tpublic static final int DEFAULT_COUNT = 1000;\n\tpublic static final TimeUnit DEFAULT_TIME_UNIT = TimeUnit.MILLISECONDS;\n\tprivate static final List<Double> DEFAULT_PERCENTILES = DoubleStream\n\t\t\t.of(DefaultCommandLatencyCollectorOptions.DEFAULT_TARGET_PERCENTILES).boxed().collect(Collectors.toList());\n\n\t@ParentCommand\n\tIO parent;\n\n\t@Option(names = \"--unit\", description = \"Time unit used to display latencies: ${COMPLETION-CANDIDATES} (default: ${DEFAULT-VALUE}).\", paramLabel = \"<unit>\")\n\tprivate TimeUnit timeUnit = DEFAULT_TIME_UNIT;\n\n\t@Option(arity = \"0..*\", names = \"--pcent\", description = \"Latency percentiles to display (default: ${DEFAULT-VALUE}).\", paramLabel = \"<p>\")\n\tprivate Set<Double> percentiles = defaultPercentiles();\n\n\t@Option(names = \"--count\", description = \"Number of pings to execute (default: ${DEFAULT-VALUE}).\", paramLabel = \"<count>\")\n\tprivate int count = DEFAULT_COUNT;\n\n\t@Override\n\tprotected Job job() {\n\t\tPingExecutionItemReader reader = new PingExecutionItemReader(commands());\n\t\treader.setMaxItemCount(count);\n\t\tPingLatencyItemWriter writer = new PingLatencyItemWriter();\n\t\tStep<PingExecution, PingExecution> step = new Step<>(reader, writer);\n\t\tstep.taskName(TASK_NAME);\n\t\tstep.maxItemCount(count);\n\t\treturn job(step);\n\t}\n\n\tpublic static Set<Double> defaultPercentiles() {\n\t\treturn new LinkedHashSet<>(DEFAULT_PERCENTILES);\n\t}\n\n\tclass PingLatencyItemWriter implements ItemWriter<PingExecution> {\n\n\t\t@Override\n\t\tpublic void write(Chunk<? extends PingExecution> chunk) throws Exception {\n\t\t\tLatencyStats stats = new LatencyStats();\n\t\t\tfor (PingExecution execution : chunk) {\n\t\t\t\tif (execution.isSuccess()) {\n\t\t\t\t\tstats.recordLatency(execution.getDuration().toNanos());\n\t\t\t\t} else {\n\t\t\t\t\tlog.error(\"Invalid PING reply received: {}\", execution.getReply());\n\t\t\t\t}\n\t\t\t}\n\t\t\tparent.getOut().println(commandLatency(stats));\n\t\t}\n\n\t\tprivate CommandLatency commandLatency(LatencyStats stats) {\n\t\t\tHistogram histogram = stats.getIntervalHistogram();\n\t\t\tMap<Double, Long> map = percentiles.stream()\n\t\t\t\t\t.collect(Collectors.toMap(Function.identity(), p -> time(histogram.getValueAtPercentile(p))));\n\t\t\treturn new CommandLatency(time(histogram.getMinValue()), time(histogram.getMaxValue()), map);\n\t\t}\n\n\t\tprivate long time(long value) {\n\t\t\treturn timeUnit.convert(value, TimeUnit.NANOSECONDS);\n\t\t}\n\n\t}\n\n\tpublic int getCount() {\n\t\treturn count;\n\t}\n\n\tpublic void setCount(int count) {\n\t\tthis.count = count;\n\t}\n\n\tpublic TimeUnit getTimeUnit() {\n\t\treturn timeUnit;\n\t}\n\n\tpublic void setTimeUnit(TimeUnit timeUnit) {\n\t\tthis.timeUnit = timeUnit;\n\t}\n\n\tpublic Set<Double> getPercentiles() {\n\t\treturn percentiles;\n\t}\n\n\tpublic void setPercentiles(Set<Double> percentiles) {\n\t\tthis.percentiles = percentiles;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/PingExecution.java",
    "content": "package com.redis.riot;\n\nimport java.time.Duration;\n\npublic class PingExecution {\n\n\tprivate static final String PONG = \"pong\";\n\n\tprivate final long startTime = time();\n\tprivate String reply;\n\tprivate long endTime;\n\n\tpublic PingExecution reply(String reply) {\n\t\tthis.reply = reply;\n\t\tthis.endTime = time();\n\t\treturn this;\n\t}\n\n\tpublic boolean isSuccess() {\n\t\treturn PONG.equalsIgnoreCase(reply);\n\t}\n\n\tpublic String getReply() {\n\t\treturn reply;\n\t}\n\n\tpublic Duration getDuration() {\n\t\treturn Duration.ofNanos(endTime - startTime);\n\t}\n\n\tprivate static long time() {\n\t\treturn System.nanoTime();\n\t}\n\n}"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/PingExecutionItemReader.java",
    "content": "package com.redis.riot;\n\nimport org.springframework.batch.item.support.AbstractItemCountingItemStreamItemReader;\nimport org.springframework.util.ClassUtils;\n\nimport io.lettuce.core.api.sync.RedisCommands;\n\npublic class PingExecutionItemReader extends AbstractItemCountingItemStreamItemReader<PingExecution> {\n\n\tprivate final RedisCommands<String, String> redisCommands;\n\n\tpublic PingExecutionItemReader(RedisCommands<String, String> redisCommands) {\n\t\tsetName(ClassUtils.getShortName(getClass()));\n\t\tthis.redisCommands = redisCommands;\n\t}\n\n\t@Override\n\tprotected void doOpen() throws Exception {\n\t\t// do nothing\n\t}\n\n\t@Override\n\tprotected void doClose() throws Exception {\n\t\t// do nothing\n\t}\n\n\t@Override\n\tprotected PingExecution doRead() throws Exception {\n\t\treturn new PingExecution().reply(redisCommands.ping());\n\t}\n\n}"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/RangeConverter.java",
    "content": "package com.redis.riot;\n\nimport org.springframework.util.StringUtils;\n\nimport com.redis.spring.batch.item.redis.common.Range;\n\nimport picocli.CommandLine.ITypeConverter;\n\npublic class RangeConverter implements ITypeConverter<Range> {\n\n\tpublic static final String SEPARATOR = \"-\";\n\n\t@Override\n\tpublic Range convert(String value) {\n\t\tint pos = value.indexOf(SEPARATOR);\n\t\tif (pos == -1) {\n\t\t\tint intValue = Integer.parseInt(value);\n\t\t\treturn new Range(intValue, intValue);\n\t\t}\n\t\tint min = Integer.parseInt(value.substring(0, pos).trim());\n\t\tint max = max(value.substring(pos + 1).trim());\n\t\treturn new Range(min, max);\n\t}\n\n\tprivate static int max(String value) {\n\t\tif (StringUtils.hasLength(value)) {\n\t\t\treturn Integer.parseInt(value);\n\t\t}\n\t\treturn Integer.MAX_VALUE;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/ReadFrom.java",
    "content": "package com.redis.riot;\n\npublic enum ReadFrom {\n\n\tUPSTREAM(io.lettuce.core.ReadFrom.UPSTREAM), UPSTREAM_PREFERRED(io.lettuce.core.ReadFrom.UPSTREAM_PREFERRED),\n\n\tREPLICA_PREFERRED(io.lettuce.core.ReadFrom.REPLICA_PREFERRED), REPLICA(io.lettuce.core.ReadFrom.REPLICA),\n\n\tLOWEST_LATENCY(io.lettuce.core.ReadFrom.LOWEST_LATENCY),\n\n\tANY(io.lettuce.core.ReadFrom.ANY), ANY_REPLICA(io.lettuce.core.ReadFrom.ANY_REPLICA);\n\n\tprivate final io.lettuce.core.ReadFrom readFrom;\n\n\tprivate ReadFrom(io.lettuce.core.ReadFrom readFrom) {\n\t\tthis.readFrom = readFrom;\n\t}\n\n\tpublic io.lettuce.core.ReadFrom getReadFrom() {\n\t\treturn readFrom;\n\t}\n\n}"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/RedisArgs.java",
    "content": "package com.redis.riot;\n\nimport java.io.File;\n\nimport com.redis.riot.core.RiotDuration;\n\nimport io.lettuce.core.RedisURI;\nimport io.lettuce.core.protocol.ProtocolVersion;\nimport lombok.ToString;\nimport picocli.CommandLine.Option;\n\n@ToString\npublic class RedisArgs implements RedisClientArgs {\n\n\t@Option(names = { \"-u\", \"--uri\" }, description = \"Redis server URI.\", paramLabel = \"<uri>\")\n\tprivate RedisURI uri;\n\n\t@Option(names = { \"-h\",\n\t\t\t\"--host\" }, description = \"Redis server hostname (default: ${DEFAULT-VALUE}).\", paramLabel = \"<host>\")\n\tprivate String host = DEFAULT_HOST;\n\n\t@Option(names = { \"-p\",\n\t\t\t\"--port\" }, description = \"Redis server port (default: ${DEFAULT-VALUE}).\", paramLabel = \"<port>\")\n\tprivate int port = DEFAULT_PORT;\n\n\t@Option(names = { \"-s\",\n\t\t\t\"--socket\" }, description = \"Redis server socket (overrides hostname and port).\", paramLabel = \"<socket>\")\n\tprivate String socket;\n\n\t@Option(names = \"--user\", description = \"ACL style 'AUTH username pass'. Needs password.\", paramLabel = \"<name>\")\n\tprivate String username;\n\n\t@Option(names = { \"-a\",\n\t\t\t\"--pass\" }, arity = \"0..1\", interactive = true, description = \"Password to use when connecting to the Redis server.\", paramLabel = \"<password>\")\n\tprivate char[] password;\n\n\t@Option(names = \"--timeout\", description = \"Redis command timeout, e.g. 30s or 5m (default: ${DEFAULT-VALUE}).\", paramLabel = \"<dur>\")\n\tprivate RiotDuration timeout = DEFAULT_TIMEOUT;\n\n\t@Option(names = { \"-n\", \"--db\" }, description = \"Redis database number.\", paramLabel = \"<db>\")\n\tprivate int database = DEFAULT_DATABASE;\n\n\t@Option(names = \"--tls\", description = \"Establish a secure TLS connection.\")\n\tprivate boolean tls;\n\n\t@Option(names = \"--insecure\", description = \"Allow insecure TLS connection by skipping cert validation.\")\n\tprivate boolean insecure;\n\n\t@Option(names = \"--client\", description = \"Client name used to connect to Redis.\", paramLabel = \"<name>\")\n\tprivate String clientName;\n\n\t@Option(names = { \"-c\", \"--cluster\" }, description = \"Enable Redis cluster mode.\")\n\tprivate boolean cluster;\n\n\t@Option(names = \"--resp\", description = \"Redis protocol version used to connect to Redis: ${COMPLETION-CANDIDATES} (default: ${DEFAULT-VALUE}).\", paramLabel = \"<ver>\")\n\tprivate ProtocolVersion protocolVersion = DEFAULT_PROTOCOL_VERSION;\n\n\t@Option(names = \"--pool\", description = \"Max number of Redis connections (default: ${DEFAULT-VALUE}).\", paramLabel = \"<int>\")\n\tprivate int poolSize = DEFAULT_POOL_SIZE;\n\n\t@Option(names = \"--read-from\", description = \"Which Redis cluster nodes to read from: ${COMPLETION-CANDIDATES} (default: ${DEFAULT-VALUE}).\", paramLabel = \"<name>\")\n\tprivate ReadFrom readFrom = DEFAULT_READ_FROM;\n\n\t@Option(names = \"--keystore\", description = \"Path to keystore.\", paramLabel = \"<file>\", hidden = true)\n\tprivate File keystore;\n\n\t@Option(names = \"--keystore-pass\", arity = \"0..1\", interactive = true, description = \"Keystore password.\", paramLabel = \"<password>\", hidden = true)\n\tprivate char[] keystorePassword;\n\n\t@Option(names = \"--trust\", description = \"Path to truststore.\", paramLabel = \"<file>\", hidden = true)\n\tprivate File truststore;\n\n\t@Option(names = \"--trust-pass\", arity = \"0..1\", interactive = true, description = \"Truststore password.\", paramLabel = \"<password>\", hidden = true)\n\tprivate char[] truststorePassword;\n\n\t@Option(names = \"--cert\", description = \"Client certificate to authenticate with (X.509 PEM).\", paramLabel = \"<file>\")\n\tprivate File keyCert;\n\n\t@Option(names = \"--key\", description = \"Private key file to authenticate with (PKCS#8 PEM).\", paramLabel = \"<file>\")\n\tprivate File key;\n\n\t@Option(names = \"--key-pass\", arity = \"0..1\", interactive = true, description = \"Private key password.\", paramLabel = \"<pwd>\")\n\tprivate char[] keyPassword;\n\n\t@Option(names = \"--cacert\", description = \"CA Certificate file to verify with (X.509).\", paramLabel = \"<file>\")\n\tprivate File trustedCerts;\n\n\t@Override\n\tpublic File getKeystore() {\n\t\treturn keystore;\n\t}\n\n\tpublic void setKeystore(File keystore) {\n\t\tthis.keystore = keystore;\n\t}\n\n\t@Override\n\tpublic char[] getKeystorePassword() {\n\t\treturn keystorePassword;\n\t}\n\n\tpublic void setKeystorePassword(char[] keystorePassword) {\n\t\tthis.keystorePassword = keystorePassword;\n\t}\n\n\t@Override\n\tpublic File getTruststore() {\n\t\treturn truststore;\n\t}\n\n\tpublic void setTruststore(File truststore) {\n\t\tthis.truststore = truststore;\n\t}\n\n\t@Override\n\tpublic char[] getTruststorePassword() {\n\t\treturn truststorePassword;\n\t}\n\n\tpublic void setTruststorePassword(char[] truststorePassword) {\n\t\tthis.truststorePassword = truststorePassword;\n\t}\n\n\t@Override\n\tpublic File getKeyCert() {\n\t\treturn keyCert;\n\t}\n\n\tpublic void setKeyCert(File keyCert) {\n\t\tthis.keyCert = keyCert;\n\t}\n\n\t@Override\n\tpublic File getKey() {\n\t\treturn key;\n\t}\n\n\tpublic void setKey(File key) {\n\t\tthis.key = key;\n\t}\n\n\t@Override\n\tpublic char[] getKeyPassword() {\n\t\treturn keyPassword;\n\t}\n\n\tpublic void setKeyPassword(char[] keyPassword) {\n\t\tthis.keyPassword = keyPassword;\n\t}\n\n\t@Override\n\tpublic File getTrustedCerts() {\n\t\treturn trustedCerts;\n\t}\n\n\tpublic void setTrustedCerts(File trustedCerts) {\n\t\tthis.trustedCerts = trustedCerts;\n\t}\n\n\t@Override\n\tpublic boolean isCluster() {\n\t\treturn cluster;\n\t}\n\n\tpublic void setCluster(boolean cluster) {\n\t\tthis.cluster = cluster;\n\t}\n\n\t@Override\n\tpublic ProtocolVersion getProtocolVersion() {\n\t\treturn protocolVersion;\n\t}\n\n\tpublic void setProtocolVersion(ProtocolVersion version) {\n\t\tthis.protocolVersion = version;\n\t}\n\n\tpublic RedisURI getUri() {\n\t\treturn uri;\n\t}\n\n\tpublic void setUri(RedisURI uri) {\n\t\tthis.uri = uri;\n\t}\n\n\t@Override\n\tpublic String getHost() {\n\t\treturn host;\n\t}\n\n\tpublic void setHost(String host) {\n\t\tthis.host = host;\n\t}\n\n\t@Override\n\tpublic int getPort() {\n\t\treturn port;\n\t}\n\n\tpublic void setPort(int port) {\n\t\tthis.port = port;\n\t}\n\n\t@Override\n\tpublic String getSocket() {\n\t\treturn socket;\n\t}\n\n\tpublic void setSocket(String socket) {\n\t\tthis.socket = socket;\n\t}\n\n\t@Override\n\tpublic String getUsername() {\n\t\treturn username;\n\t}\n\n\tpublic void setUsername(String username) {\n\t\tthis.username = username;\n\t}\n\n\t@Override\n\tpublic char[] getPassword() {\n\t\treturn password;\n\t}\n\n\tpublic void setPassword(char[] password) {\n\t\tthis.password = password;\n\t}\n\n\t@Override\n\tpublic RiotDuration getTimeout() {\n\t\treturn timeout;\n\t}\n\n\tpublic void setTimeout(RiotDuration timeout) {\n\t\tthis.timeout = timeout;\n\t}\n\n\t@Override\n\tpublic int getDatabase() {\n\t\treturn database;\n\t}\n\n\tpublic void setDatabase(int database) {\n\t\tthis.database = database;\n\t}\n\n\t@Override\n\tpublic boolean isTls() {\n\t\treturn tls;\n\t}\n\n\tpublic void setTls(boolean tls) {\n\t\tthis.tls = tls;\n\t}\n\n\t@Override\n\tpublic boolean isInsecure() {\n\t\treturn insecure;\n\t}\n\n\tpublic void setInsecure(boolean insecure) {\n\t\tthis.insecure = insecure;\n\t}\n\n\t@Override\n\tpublic String getClientName() {\n\t\treturn clientName;\n\t}\n\n\tpublic void setClientName(String clientName) {\n\t\tthis.clientName = clientName;\n\t}\n\n\t@Override\n\tpublic int getPoolSize() {\n\t\treturn poolSize;\n\t}\n\n\tpublic void setPoolSize(int poolSize) {\n\t\tthis.poolSize = poolSize;\n\t}\n\n\t@Override\n\tpublic ReadFrom getReadFrom() {\n\t\treturn readFrom;\n\t}\n\n\tpublic void setReadFrom(ReadFrom readFrom) {\n\t\tthis.readFrom = readFrom;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/RedisClientArgs.java",
    "content": "package com.redis.riot;\n\nimport java.io.File;\n\nimport com.redis.lettucemod.RedisURIBuilder;\nimport com.redis.riot.core.RiotDuration;\n\nimport io.lettuce.core.RedisURI;\nimport io.lettuce.core.protocol.ProtocolVersion;\n\npublic interface RedisClientArgs {\n\n\tString DEFAULT_HOST = RedisURIBuilder.DEFAULT_HOST;\n\tint DEFAULT_PORT = RedisURIBuilder.DEFAULT_PORT;\n\tRiotDuration DEFAULT_TIMEOUT = RiotDuration.ofSeconds(RedisURI.DEFAULT_TIMEOUT);\n\tint DEFAULT_DATABASE = 0;\n\tProtocolVersion DEFAULT_PROTOCOL_VERSION = ProtocolVersion.RESP2;\n\tint DEFAULT_POOL_SIZE = 8;\n\tReadFrom DEFAULT_READ_FROM = ReadFrom.UPSTREAM;\n\n\tdefault String getHost() {\n\t\treturn DEFAULT_HOST;\n\t}\n\n\tdefault int getPort() {\n\t\treturn DEFAULT_PORT;\n\t}\n\n\tdefault String getSocket() {\n\t\treturn null;\n\t}\n\n\tdefault String getUsername() {\n\t\treturn null;\n\t}\n\n\tdefault char[] getPassword() {\n\t\treturn null;\n\t}\n\n\tdefault RiotDuration getTimeout() {\n\t\treturn DEFAULT_TIMEOUT;\n\t}\n\n\tdefault int getDatabase() {\n\t\treturn DEFAULT_DATABASE;\n\t}\n\n\tdefault boolean isTls() {\n\t\treturn false;\n\t}\n\n\tdefault boolean isInsecure() {\n\t\treturn false;\n\t}\n\n\tdefault String getClientName() {\n\t\treturn null;\n\t}\n\n\tdefault boolean isCluster() {\n\t\treturn false;\n\t}\n\n\tdefault ProtocolVersion getProtocolVersion() {\n\t\treturn DEFAULT_PROTOCOL_VERSION;\n\t}\n\n\tdefault int getPoolSize() {\n\t\treturn DEFAULT_POOL_SIZE;\n\t}\n\n\tdefault ReadFrom getReadFrom() {\n\t\treturn DEFAULT_READ_FROM;\n\t}\n\n\tdefault File getKeystore() {\n\t\treturn null;\n\t}\n\n\tdefault char[] getKeystorePassword() {\n\t\treturn null;\n\t}\n\n\tdefault File getTruststore() {\n\t\treturn null;\n\t}\n\n\tdefault char[] getTruststorePassword() {\n\t\treturn null;\n\t}\n\n\tdefault File getKeyCert() {\n\t\treturn null;\n\t}\n\n\tdefault File getKey() {\n\t\treturn null;\n\t}\n\n\tdefault char[] getKeyPassword() {\n\t\treturn null;\n\t}\n\n\tdefault File getTrustedCerts() {\n\t\treturn null;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/RedisContext.java",
    "content": "package com.redis.riot;\n\nimport org.springframework.beans.factory.InitializingBean;\n\nimport com.redis.lettucemod.RedisModulesClientBuilder;\nimport com.redis.lettucemod.RedisModulesUtils;\nimport com.redis.lettucemod.RedisURIBuilder;\nimport com.redis.lettucemod.api.StatefulRedisModulesConnection;\nimport com.redis.spring.batch.item.redis.RedisItemReader;\nimport com.redis.spring.batch.item.redis.RedisItemWriter;\n\nimport io.lettuce.core.AbstractRedisClient;\nimport io.lettuce.core.ClientOptions;\nimport io.lettuce.core.ReadFrom;\nimport io.lettuce.core.RedisURI;\nimport io.lettuce.core.SslOptions;\nimport io.lettuce.core.SslOptions.Resource;\nimport io.lettuce.core.SslVerifyMode;\nimport io.lettuce.core.cluster.ClusterClientOptions;\nimport io.lettuce.core.protocol.ProtocolVersion;\nimport io.lettuce.core.resource.ClientResources;\nimport lombok.ToString;\n\n@ToString\npublic class RedisContext implements InitializingBean, AutoCloseable {\n\n\tprivate RedisURI uri;\n\tprivate boolean cluster;\n\tprivate ProtocolVersion protocolVersion;\n\tprivate SslOptions sslOptions = ClientOptions.DEFAULT_SSL_OPTIONS;\n\tprivate int poolSize = RedisItemReader.DEFAULT_POOL_SIZE;\n\tprivate ClientResources clientResources;\n\tprivate ReadFrom readFrom;\n\n\tprivate AbstractRedisClient client;\n\tprivate StatefulRedisModulesConnection<String, String> connection;\n\n\t@Override\n\tpublic void afterPropertiesSet() {\n\t\tRedisModulesClientBuilder clientBuilder = new RedisModulesClientBuilder();\n\t\tclientBuilder.cluster(cluster);\n\t\tclientBuilder.options(clientOptions());\n\t\tclientBuilder.uri(uri);\n\t\tclientBuilder.resources(clientResources);\n\t\tthis.client = clientBuilder.build();\n\t\tthis.connection = RedisModulesUtils.connection(client);\n\t}\n\n\tprivate ClientOptions clientOptions() {\n\t\tClientOptions.Builder options = cluster ? ClusterClientOptions.builder() : ClientOptions.builder();\n\t\toptions.protocolVersion(protocolVersion);\n\t\toptions.sslOptions(sslOptions);\n\t\treturn options.build();\n\t}\n\n\tpublic void configure(RedisItemReader<?, ?> reader) {\n\t\treader.setClient(client);\n\t\treader.setDatabase(uri.getDatabase());\n\t\treader.setPoolSize(poolSize);\n\t\treader.setReadFrom(readFrom);\n\t}\n\n\tpublic void configure(RedisItemWriter<?, ?, ?> writer) {\n\t\twriter.setClient(client);\n\t\twriter.setPoolSize(poolSize);\n\t}\n\n\t@Override\n\tpublic void close() {\n\t\tif (connection != null) {\n\t\t\tconnection.close();\n\t\t}\n\t\tif (client != null) {\n\t\t\tclient.shutdown();\n\t\t\tclient.getResources().shutdown();\n\t\t}\n\t}\n\n\tprivate static RedisURIBuilder uriBuilder(RedisClientArgs args) {\n\t\tRedisURIBuilder builder = new RedisURIBuilder();\n\t\tbuilder.clientName(args.getClientName());\n\t\tbuilder.database(args.getDatabase());\n\t\tbuilder.host(args.getHost());\n\t\tbuilder.password(args.getPassword());\n\t\tbuilder.port(args.getPort());\n\t\tbuilder.timeout(args.getTimeout().getValue());\n\t\tbuilder.socket(args.getSocket());\n\t\tbuilder.tls(args.isTls());\n\t\tbuilder.username(args.getUsername());\n\t\tif (args.isInsecure()) {\n\t\t\tbuilder.verifyMode(SslVerifyMode.NONE);\n\t\t}\n\t\treturn builder;\n\t}\n\n\tpublic static RedisContext of(RedisURI uri, RedisClientArgs args) {\n\t\tRedisContext context = new RedisContext();\n\t\tcontext.cluster(args.isCluster());\n\t\tcontext.poolSize(args.getPoolSize());\n\t\tcontext.protocolVersion(args.getProtocolVersion());\n\t\tcontext.readFrom(args.getReadFrom().getReadFrom());\n\t\tcontext.uri(uriBuilder(args).uri(uri).build());\n\t\tcontext.sslOptions(sslOptions(args));\n\t\treturn context;\n\t}\n\n\tpublic static RedisContext of(RedisArgs args) {\n\t\treturn of(args.getUri(), args);\n\t}\n\n\tprivate static SslOptions sslOptions(RedisClientArgs args) {\n\t\tSslOptions.Builder ssl = SslOptions.builder();\n\t\tif (args.getKey() != null) {\n\t\t\tssl.keyManager(args.getKeyCert(), args.getKey(), args.getKeyPassword());\n\t\t}\n\t\tif (args.getKeystore() != null) {\n\t\t\tssl.keystore(args.getKeystore(), args.getKeystorePassword());\n\t\t}\n\t\tif (args.getTruststore() != null) {\n\t\t\tssl.truststore(Resource.from(args.getTruststore()), args.getTruststorePassword());\n\t\t}\n\t\tif (args.getTrustedCerts() != null) {\n\t\t\tssl.trustManager(args.getTrustedCerts());\n\t\t}\n\t\treturn ssl.build();\n\t}\n\n\tpublic AbstractRedisClient getClient() {\n\t\treturn client;\n\t}\n\n\tpublic StatefulRedisModulesConnection<String, String> getConnection() {\n\t\treturn connection;\n\t}\n\n\tpublic RedisURI getUri() {\n\t\treturn uri;\n\t}\n\n\tpublic RedisContext uri(RedisURI uri) {\n\t\tthis.uri = uri;\n\t\treturn this;\n\t}\n\n\tpublic boolean isCluster() {\n\t\treturn cluster;\n\t}\n\n\tpublic RedisContext cluster(boolean cluster) {\n\t\tthis.cluster = cluster;\n\t\treturn this;\n\t}\n\n\tpublic ProtocolVersion getProtocolVersion() {\n\t\treturn protocolVersion;\n\t}\n\n\tpublic RedisContext protocolVersion(ProtocolVersion protocolVersion) {\n\t\tthis.protocolVersion = protocolVersion;\n\t\treturn this;\n\t}\n\n\tpublic SslOptions getSslOptions() {\n\t\treturn sslOptions;\n\t}\n\n\tpublic RedisContext sslOptions(SslOptions sslOptions) {\n\t\tthis.sslOptions = sslOptions;\n\t\treturn this;\n\t}\n\n\tpublic int getPoolSize() {\n\t\treturn poolSize;\n\t}\n\n\tpublic RedisContext poolSize(int size) {\n\t\tthis.poolSize = size;\n\t\treturn this;\n\t}\n\n\tpublic ReadFrom getReadFrom() {\n\t\treturn readFrom;\n\t}\n\n\tpublic RedisContext readFrom(ReadFrom readFrom) {\n\t\tthis.readFrom = readFrom;\n\t\treturn this;\n\t}\n\n\tpublic ClientResources getClientResources() {\n\t\treturn clientResources;\n\t}\n\n\tpublic RedisContext clientResources(ClientResources clientResources) {\n\t\tthis.clientResources = clientResources;\n\t\treturn this;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/RedisReaderArgs.java",
    "content": "package com.redis.riot;\n\nimport java.time.temporal.ChronoUnit;\n\nimport org.springframework.batch.item.ItemProcessor;\nimport org.springframework.batch.item.function.FunctionItemProcessor;\n\nimport com.redis.riot.core.RiotDuration;\nimport com.redis.riot.core.processor.FunctionPredicate;\nimport com.redis.riot.core.processor.PredicateOperator;\nimport com.redis.spring.batch.item.AbstractAsyncItemStreamSupport;\nimport com.redis.spring.batch.item.AbstractPollableItemReader;\nimport com.redis.spring.batch.item.redis.RedisItemReader;\nimport com.redis.spring.batch.item.redis.reader.KeyEvent;\n\nimport io.lettuce.core.codec.RedisCodec;\nimport lombok.ToString;\nimport picocli.CommandLine.ArgGroup;\nimport picocli.CommandLine.Option;\n\n@ToString\npublic class RedisReaderArgs {\n\n\tpublic static final long DEFAULT_SCAN_COUNT = 1000;\n\tpublic static final int DEFAULT_QUEUE_CAPACITY = RedisItemReader.DEFAULT_QUEUE_CAPACITY;\n\tpublic static final int DEFAULT_THREADS = AbstractAsyncItemStreamSupport.DEFAULT_THREADS;\n\tpublic static final int DEFAULT_CHUNK_SIZE = AbstractAsyncItemStreamSupport.DEFAULT_CHUNK_SIZE;\n\tpublic static final RiotDuration DEFAULT_POLL_TIMEOUT = RiotDuration\n\t\t\t.of(AbstractPollableItemReader.DEFAULT_POLL_TIMEOUT, ChronoUnit.MILLIS);\n\n\t@Option(names = \"--key-pattern\", description = \"Pattern of keys to read (default: *).\", paramLabel = \"<glob>\")\n\tprivate String keyPattern;\n\n\t@Option(names = \"--key-type\", description = \"Type of keys to read (default: all types).\", paramLabel = \"<type>\")\n\tprivate String keyType;\n\n\t@Option(names = \"--scan-count\", description = \"How many keys to read at once on each SCAN call (default: ${DEFAULT-VALUE}).\", paramLabel = \"<int>\")\n\tprivate long scanCount = DEFAULT_SCAN_COUNT;\n\n\t@Option(names = \"--read-queue\", description = \"Max items that reader threads can queue up (default: ${DEFAULT-VALUE}). When the queue is full the threads wait for space to become available.\", paramLabel = \"<int>\")\n\tprivate int queueCapacity = DEFAULT_QUEUE_CAPACITY;\n\n\t@Option(names = \"--read-threads\", description = \"How many value reader threads to use in parallel (default: ${DEFAULT-VALUE}).\", paramLabel = \"<int>\")\n\tprivate int threads = DEFAULT_THREADS;\n\n\t@Option(names = \"--read-batch\", description = \"Number of values each reader thread should read in a pipelined call (default: ${DEFAULT-VALUE}).\", paramLabel = \"<int>\")\n\tprivate int chunkSize = DEFAULT_CHUNK_SIZE;\n\n\t@Option(names = \"--read-retry\", description = \"Max number of times to try failed reads. 0 and 1 both mean no retry (default: ${DEFAULT-VALUE}).\", paramLabel = \"<int>\")\n\tprivate int retryLimit;\n\n\t@Option(names = \"--read-skip\", description = \"Max number of failed reads before considering the reader has failed (default: ${DEFAULT-VALUE}).\", paramLabel = \"<int>\")\n\tprivate int skipLimit;\n\n\t@Option(names = \"--read-poll\", description = \"Interval between queue polls (default: ${DEFAULT-VALUE}).\", paramLabel = \"<dur>\", hidden = true)\n\tprivate RiotDuration pollTimeout = DEFAULT_POLL_TIMEOUT;\n\n\t@ArgGroup(exclusive = false)\n\tprivate KeyFilterArgs keyFilterArgs = new KeyFilterArgs();\n\n\tpublic <K> void configure(RedisItemReader<K, ?> reader) {\n\t\treader.setChunkSize(chunkSize);\n\t\treader.setKeyPattern(keyPattern);\n\t\treader.setKeyType(keyType);\n\t\treader.setQueueCapacity(queueCapacity);\n\t\treader.setRetryLimit(retryLimit);\n\t\treader.setScanCount(scanCount);\n\t\treader.setSkipLimit(skipLimit);\n\t\treader.setThreads(threads);\n\t\treader.setPollTimeout(pollTimeout.getValue());\n\t\treader.setProcessor(keyProcessor(reader.getCodec(), keyFilterArgs));\n\t}\n\n\tprivate <K> ItemProcessor<KeyEvent<K>, KeyEvent<K>> keyProcessor(RedisCodec<K, ?> codec, KeyFilterArgs args) {\n\t\treturn args.predicate(codec).map(p -> new FunctionPredicate<KeyEvent<K>, K>(KeyEvent::getKey, p))\n\t\t\t\t.map(PredicateOperator::new).map(FunctionItemProcessor::new).orElse(null);\n\t}\n\n\tpublic String getKeyPattern() {\n\t\treturn keyPattern;\n\t}\n\n\tpublic void setKeyPattern(String scanMatch) {\n\t\tthis.keyPattern = scanMatch;\n\t}\n\n\tpublic long getScanCount() {\n\t\treturn scanCount;\n\t}\n\n\tpublic void setScanCount(long scanCount) {\n\t\tthis.scanCount = scanCount;\n\t}\n\n\tpublic String getKeyType() {\n\t\treturn keyType;\n\t}\n\n\tpublic void setKeyType(String scanType) {\n\t\tthis.keyType = scanType;\n\t}\n\n\tpublic int getQueueCapacity() {\n\t\treturn queueCapacity;\n\t}\n\n\tpublic void setQueueCapacity(int queueCapacity) {\n\t\tthis.queueCapacity = queueCapacity;\n\t}\n\n\tpublic int getThreads() {\n\t\treturn threads;\n\t}\n\n\tpublic void setThreads(int threads) {\n\t\tthis.threads = threads;\n\t}\n\n\tpublic int getChunkSize() {\n\t\treturn chunkSize;\n\t}\n\n\tpublic void setChunkSize(int chunkSize) {\n\t\tthis.chunkSize = chunkSize;\n\t}\n\n\tpublic int getRetryLimit() {\n\t\treturn retryLimit;\n\t}\n\n\tpublic void setRetryLimit(int retryLimit) {\n\t\tthis.retryLimit = retryLimit;\n\t}\n\n\tpublic int getSkipLimit() {\n\t\treturn skipLimit;\n\t}\n\n\tpublic void setSkipLimit(int skipLimit) {\n\t\tthis.skipLimit = skipLimit;\n\t}\n\n\tpublic RiotDuration getPollTimeout() {\n\t\treturn pollTimeout;\n\t}\n\n\tpublic void setPollTimeout(RiotDuration pollTimeout) {\n\t\tthis.pollTimeout = pollTimeout;\n\t}\n\n\tpublic KeyFilterArgs getKeyFilterArgs() {\n\t\treturn keyFilterArgs;\n\t}\n\n\tpublic void setKeyFilterArgs(KeyFilterArgs keyFilterArgs) {\n\t\tthis.keyFilterArgs = keyFilterArgs;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/RedisReaderLiveArgs.java",
    "content": "package com.redis.riot;\n\nimport java.time.temporal.ChronoUnit;\n\nimport com.redis.riot.core.RiotDuration;\nimport com.redis.spring.batch.item.redis.RedisItemReader;\n\nimport picocli.CommandLine.Option;\n\npublic class RedisReaderLiveArgs {\n\n\tpublic static final int DEFAULT_EVENT_QUEUE_CAPACITY = RedisItemReader.DEFAULT_EVENT_QUEUE_CAPACITY;\n\tpublic static final RiotDuration DEFAULT_FLUSH_INTERVAL = RiotDuration.of(RedisItemReader.DEFAULT_FLUSH_INTERVAL,\n\t\t\tChronoUnit.MILLIS);\n\n\t@Option(names = \"--flush-interval\", description = \"Max duration between flushes in live mode (default: ${DEFAULT-VALUE}).\", paramLabel = \"<dur>\")\n\tprivate RiotDuration flushInterval = DEFAULT_FLUSH_INTERVAL;\n\n\t@Option(names = \"--idle-timeout\", description = \"Min duration to consider reader complete in live mode, for example 3s 5m (default: no timeout).\", paramLabel = \"<dur>\")\n\tprivate RiotDuration idleTimeout;\n\n\t@Option(names = \"--event-queue\", description = \"Capacity of the keyspace notification queue (default: ${DEFAULT-VALUE}).\", paramLabel = \"<int>\")\n\tprivate int eventQueueCapacity = DEFAULT_EVENT_QUEUE_CAPACITY;\n\n\tpublic <K> void configure(RedisItemReader<K, ?> reader) {\n\t\treader.setFlushInterval(flushInterval.getValue());\n\t\tif (idleTimeout != null) {\n\t\t\treader.setIdleTimeout(idleTimeout.getValue());\n\t\t}\n\t\treader.setEventQueueCapacity(eventQueueCapacity);\n\t}\n\n\tpublic RiotDuration getFlushInterval() {\n\t\treturn flushInterval;\n\t}\n\n\tpublic void setFlushInterval(RiotDuration interval) {\n\t\tthis.flushInterval = interval;\n\t}\n\n\tpublic RiotDuration getIdleTimeout() {\n\t\treturn idleTimeout;\n\t}\n\n\tpublic void setIdleTimeout(RiotDuration idleTimeout) {\n\t\tthis.idleTimeout = idleTimeout;\n\t}\n\n\tpublic int getEventQueueCapacity() {\n\t\treturn eventQueueCapacity;\n\t}\n\n\tpublic void setEventQueueCapacity(int capacity) {\n\t\tthis.eventQueueCapacity = capacity;\n\t}\n}"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/RedisURIConverter.java",
    "content": "package com.redis.riot;\n\nimport io.lettuce.core.RedisURI;\nimport picocli.CommandLine.ITypeConverter;\n\npublic class RedisURIConverter implements ITypeConverter<RedisURI> {\n\n\t@Override\n\tpublic RedisURI convert(String value) {\n\t\ttry {\n\t\t\treturn RedisURI.create(value);\n\t\t} catch (IllegalArgumentException e) {\n\t\t\treturn RedisURI.create(RedisURI.URI_SCHEME_REDIS + \"://\" + value);\n\t\t}\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/RedisWriterArgs.java",
    "content": "package com.redis.riot;\n\nimport java.time.temporal.ChronoUnit;\n\nimport com.redis.riot.core.RiotDuration;\nimport com.redis.spring.batch.item.redis.RedisItemWriter;\nimport com.redis.spring.batch.item.redis.writer.KeyValueWrite;\nimport com.redis.spring.batch.item.redis.writer.KeyValueWrite.WriteMode;\n\nimport lombok.ToString;\nimport picocli.CommandLine.Option;\n\n@ToString\npublic class RedisWriterArgs {\n\n\tpublic static final RiotDuration DEFAULT_WAIT_TIMEOUT = RiotDuration.of(RedisItemWriter.DEFAULT_WAIT_TIMEOUT,\n\t\t\tChronoUnit.SECONDS);\n\tpublic static final int DEFAULT_POOL_SIZE = RedisItemWriter.DEFAULT_POOL_SIZE;\n\n\t@Option(names = \"--multi-exec\", description = \"Enable MULTI/EXEC writes.\")\n\tprivate boolean multiExec;\n\n\t@Option(names = \"--wait-replicas\", description = \"Number of replicas for WAIT command (default: 0 i.e. no wait).\", paramLabel = \"<int>\")\n\tprivate int waitReplicas;\n\n\t@Option(names = \"--wait-timeout\", description = \"Timeout for WAIT command (default: ${DEFAULT-VALUE}).\", paramLabel = \"<dur>\")\n\tprivate RiotDuration waitTimeout = DEFAULT_WAIT_TIMEOUT;\n\n\t@Option(names = \"--merge\", description = \"Merge collection data structures (hash, list, ...) instead of overwriting them. Only used in `--struct` mode.\")\n\tprivate boolean merge;\n\n\tpublic <K, V, T> void configure(RedisItemWriter<K, V, T> writer) {\n\t\twriter.setMultiExec(multiExec);\n\t\twriter.setWaitReplicas(waitReplicas);\n\t\twriter.setWaitTimeout(waitTimeout.getValue());\n\t\tif (writer.getOperation() instanceof KeyValueWrite) {\n\t\t\t((KeyValueWrite<?, ?>) writer.getOperation()).setMode(merge ? WriteMode.MERGE : WriteMode.OVERWRITE);\n\t\t}\n\t}\n\n\tpublic boolean isMultiExec() {\n\t\treturn multiExec;\n\t}\n\n\tpublic void setMultiExec(boolean multiExec) {\n\t\tthis.multiExec = multiExec;\n\t}\n\n\tpublic int getWaitReplicas() {\n\t\treturn waitReplicas;\n\t}\n\n\tpublic void setWaitReplicas(int waitReplicas) {\n\t\tthis.waitReplicas = waitReplicas;\n\t}\n\n\tpublic RiotDuration getWaitTimeout() {\n\t\treturn waitTimeout;\n\t}\n\n\tpublic void setWaitTimeout(RiotDuration waitTimeout) {\n\t\tthis.waitTimeout = waitTimeout;\n\t}\n\n\tpublic boolean isMerge() {\n\t\treturn merge;\n\t}\n\n\tpublic void setMerge(boolean merge) {\n\t\tthis.merge = merge;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/Replicate.java",
    "content": "package com.redis.riot;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport org.springframework.batch.core.Job;\nimport org.springframework.batch.item.ItemWriter;\n\nimport com.redis.riot.core.Step;\nimport com.redis.spring.batch.item.redis.RedisItemReader;\nimport com.redis.spring.batch.item.redis.RedisItemWriter;\nimport com.redis.spring.batch.item.redis.common.KeyValue;\n\nimport io.lettuce.core.codec.ByteArrayCodec;\nimport picocli.CommandLine.ArgGroup;\nimport picocli.CommandLine.Command;\nimport picocli.CommandLine.Option;\n\n@Command(name = \"replicate\", aliases = \"sync\", description = \"Replicate a Redis database into another Redis database.\")\npublic class Replicate extends AbstractCompareCommand {\n\n\tpublic enum Type {\n\t\tSTRUCT, DUMP\n\t}\n\n\tpublic static final Type DEFAULT_TYPE = Type.DUMP;\n\tpublic static final CompareMode DEFAULT_COMPARE_MODE = CompareMode.QUICK;\n\n\tprivate static final String COMPARE_STEP_NAME = \"compare\";\n\tprivate static final String SCAN_TASK_NAME = \"Scanning\";\n\tprivate static final String LIVEONLY_TASK_NAME = \"Listening\";\n\tprivate static final String LIVE_TASK_NAME = \"Scanning/Listening\";\n\n\t@Option(names = \"--type\", description = \"Replication type: ${COMPLETION-CANDIDATES} (default: ${DEFAULT-VALUE}).\", paramLabel = \"<name>\")\n\tprivate Type type = DEFAULT_TYPE;\n\n\t@ArgGroup(exclusive = false)\n\tprivate RedisWriterArgs targetRedisWriterArgs = new RedisWriterArgs();\n\n\t@Option(names = \"--log-keys\", description = \"Log keys being read and written.\")\n\tprivate boolean logKeys;\n\n\t@Option(names = \"--compare\", description = \"Compare mode: ${COMPLETION-CANDIDATES} (default: ${DEFAULT-VALUE}).\", paramLabel = \"<mode>\")\n\tprivate CompareMode compareMode = DEFAULT_COMPARE_MODE;\n\n\t@Option(names = \"--struct\", description = \"Enable data structure-specific replication\")\n\tpublic void setStruct(boolean enable) {\n\t\tthis.type = enable ? Type.STRUCT : Type.DUMP;\n\t}\n\n\t@Override\n\tprotected boolean isQuickCompare() {\n\t\treturn compareMode == CompareMode.QUICK;\n\t}\n\n\t@Override\n\tprotected Job job() {\n\t\tList<Step<?, ?>> steps = new ArrayList<>();\n\t\tStep<KeyValue<byte[]>, KeyValue<byte[]>> step = replicateStep();\n\t\tsteps.add(step);\n\t\tif (shouldCompare()) {\n\t\t\tsteps.add(compareStep().name(COMPARE_STEP_NAME));\n\t\t}\n\t\treturn job(steps);\n\t}\n\n\t@Override\n\tprotected void configureTargetRedisWriter(RedisItemWriter<?, ?, ?> writer) {\n\t\tsuper.configureTargetRedisWriter(writer);\n\t\tlog.info(\"Configuring target Redis writer with {}\", targetRedisWriterArgs);\n\t\ttargetRedisWriterArgs.configure(writer);\n\t}\n\n\tprotected Step<KeyValue<byte[]>, KeyValue<byte[]>> replicateStep() {\n\t\tRedisItemReader<byte[], byte[]> reader = reader();\n\t\tconfigureSourceRedisReader(reader);\n\t\tStep<KeyValue<byte[]>, KeyValue<byte[]>> step = new ExportStepHelper(log).step(reader, replicateWriter());\n\t\tstep.processor(filter());\n\t\tstep.taskName(taskName(reader));\n\t\tif (logKeys) {\n\t\t\tlog.info(\"Adding key logger\");\n\t\t\tstep.writeListener(new ReplicateWriteLogger<>(log, reader.getCodec()));\n\t\t\tReplicateReadLogger<byte[]> readLogger = new ReplicateReadLogger<>(log, reader.getCodec());\n\t\t\treader.addItemReadListener(readLogger);\n\t\t\treader.addItemWriteListener(readLogger);\n\t\t}\n\t\treturn step;\n\t}\n\n\tprotected ItemWriter<KeyValue<byte[]>> replicateWriter() {\n\t\tRedisItemWriter<byte[], byte[], KeyValue<byte[]>> writer = writer();\n\t\tconfigureTargetRedisWriter(writer);\n\t\treturn processingWriter(writer);\n\t}\n\n\tprivate boolean shouldCompare() {\n\t\treturn compareMode != CompareMode.NONE && !getJobArgs().isDryRun();\n\t}\n\n\t@SuppressWarnings({ \"unchecked\", \"rawtypes\" })\n\tprotected RedisItemReader<byte[], byte[]> reader() {\n\t\tif (isStruct()) {\n\t\t\tlog.info(\"Creating Redis data-structure reader\");\n\t\t\treturn RedisItemReader.struct(ByteArrayCodec.INSTANCE);\n\t\t}\n\t\tlog.info(\"Creating Redis dump reader\");\n\t\treturn (RedisItemReader) RedisItemReader.dump();\n\t}\n\n\t@SuppressWarnings({ \"unchecked\", \"rawtypes\" })\n\tprivate RedisItemWriter<byte[], byte[], KeyValue<byte[]>> writer() {\n\t\tif (isStruct()) {\n\t\t\tlog.info(\"Creating Redis data-structure writer\");\n\t\t\treturn RedisItemWriter.struct(ByteArrayCodec.INSTANCE);\n\t\t}\n\t\tlog.info(\"Creating Redis dump writer\");\n\t\treturn (RedisItemWriter) RedisItemWriter.dump();\n\t}\n\n\t@Override\n\tprotected boolean isStruct() {\n\t\treturn type == Type.STRUCT;\n\t}\n\n\tprivate String taskName(RedisItemReader<?, ?> reader) {\n\t\tswitch (reader.getMode()) {\n\t\tcase SCAN:\n\t\t\treturn SCAN_TASK_NAME;\n\t\tcase LIVEONLY:\n\t\t\treturn LIVEONLY_TASK_NAME;\n\t\tdefault:\n\t\t\treturn LIVE_TASK_NAME;\n\t\t}\n\t}\n\n\tpublic RedisWriterArgs getTargetRedisWriterArgs() {\n\t\treturn targetRedisWriterArgs;\n\t}\n\n\tpublic void setTargetRedisWriterArgs(RedisWriterArgs redisWriterArgs) {\n\t\tthis.targetRedisWriterArgs = redisWriterArgs;\n\t}\n\n\tpublic Type getType() {\n\t\treturn type;\n\t}\n\n\tpublic void setType(Type type) {\n\t\tthis.type = type;\n\t}\n\n\tpublic boolean isLogKeys() {\n\t\treturn logKeys;\n\t}\n\n\tpublic void setLogKeys(boolean enable) {\n\t\tthis.logKeys = enable;\n\t}\n\n\tpublic CompareMode getCompareMode() {\n\t\treturn compareMode;\n\t}\n\n\tpublic void setCompareMode(CompareMode compareMode) {\n\t\tthis.compareMode = compareMode;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/ReplicateReadLogger.java",
    "content": "package com.redis.riot;\n\nimport java.util.function.Function;\n\nimport org.slf4j.Logger;\nimport org.springframework.batch.core.ItemReadListener;\nimport org.springframework.batch.core.ItemWriteListener;\nimport org.springframework.batch.item.Chunk;\n\nimport com.redis.spring.batch.item.redis.common.BatchUtils;\nimport com.redis.spring.batch.item.redis.reader.KeyEvent;\n\nimport io.lettuce.core.codec.RedisCodec;\n\npublic class ReplicateReadLogger<K> implements ItemReadListener<KeyEvent<K>>, ItemWriteListener<KeyEvent<K>> {\n\n\tprivate final Logger logger;\n\tprivate final Function<K, String> toString;\n\n\tpublic ReplicateReadLogger(Logger logger, RedisCodec<K, ?> codec) {\n\t\tthis.logger = logger;\n\t\tthis.toString = BatchUtils.toStringKeyFunction(codec);\n\t}\n\n\tprivate void log(String format, KeyEvent<K> keyEvent) {\n\t\tlogger.info(format, string(keyEvent));\n\t}\n\n\tprotected String string(KeyEvent<K> key) {\n\t\treturn toString.apply(key.getKey());\n\t}\n\n\tprivate void log(String format, Iterable<? extends KeyEvent<K>> keys) {\n\t\tif (logger.isInfoEnabled()) {\n\t\t\tkeys.forEach(k -> log(format, k));\n\t\t}\n\t}\n\n\t@Override\n\tpublic void afterRead(KeyEvent<K> item) {\n\t\tif (logger.isInfoEnabled()) {\n\t\t\tlog(\"Key {}\", item);\n\t\t}\n\t}\n\n\t@Override\n\tpublic void beforeWrite(Chunk<? extends KeyEvent<K>> items) {\n\t\tlog(\"Fetching {}\", items);\n\t}\n\n\t@Override\n\tpublic void afterWrite(Chunk<? extends KeyEvent<K>> items) {\n\t\tlog(\"Fetched {}\", items);\n\t}\n\n\t@Override\n\tpublic void onWriteError(Exception exception, Chunk<? extends KeyEvent<K>> items) {\n\t\tif (logger.isErrorEnabled()) {\n\t\t\tfor (KeyEvent<K> item : items) {\n\t\t\t\tlogger.error(\"Could not fetch {}\", string(item), exception);\n\t\t\t}\n\t\t}\n\t}\n\n}"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/ReplicateWriteLogger.java",
    "content": "package com.redis.riot;\n\nimport java.util.function.Function;\n\nimport org.slf4j.Logger;\nimport org.springframework.batch.core.ItemWriteListener;\nimport org.springframework.batch.item.Chunk;\n\nimport com.redis.spring.batch.item.redis.common.BatchUtils;\nimport com.redis.spring.batch.item.redis.common.KeyValue;\n\nimport io.lettuce.core.codec.RedisCodec;\n\npublic class ReplicateWriteLogger<K> implements ItemWriteListener<KeyValue<K>> {\n\n\tprivate final Logger logger;\n\tprivate final Function<K, String> toString;\n\n\tpublic ReplicateWriteLogger(Logger logger, RedisCodec<K, ?> codec) {\n\t\tthis.logger = logger;\n\t\tthis.toString = BatchUtils.toStringKeyFunction(codec);\n\t}\n\n\tprotected void log(String message, Chunk<? extends KeyValue<K>> items) {\n\t\tif (logger.isInfoEnabled()) {\n\t\t\tfor (KeyValue<K> item : items) {\n\t\t\t\tlogger.info(message, string(item));\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected String string(KeyValue<K> item) {\n\t\treturn toString.apply(item.getKey());\n\t}\n\n\t@Override\n\tpublic void beforeWrite(Chunk<? extends KeyValue<K>> items) {\n\t\tlog(\"Writing {}\", items);\n\t}\n\n\t@Override\n\tpublic void afterWrite(Chunk<? extends KeyValue<K>> items) {\n\t\tlog(\"Wrote {}\", items);\n\t}\n\n\t@Override\n\tpublic void onWriteError(Exception exception, Chunk<? extends KeyValue<K>> items) {\n\t\tif (logger.isErrorEnabled()) {\n\t\t\tfor (KeyValue<K> item : items) {\n\t\t\t\tlogger.error(\"Could not write {}\", string(item), exception);\n\t\t\t}\n\t\t}\n\t}\n\n}"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/Riot.java",
    "content": "package com.redis.riot;\n\nimport picocli.AutoComplete.GenerateCompletion;\nimport picocli.CommandLine.Command;\n\n@Command(name = \"riot\", versionProvider = Versions.class, subcommands = { DatabaseExport.class, DatabaseImport.class,\n\t\tFakerImport.class, FileExport.class, FileImport.class, Generate.class, Ping.class, Replicate.class,\n\t\tCompare.class,\n\t\tGenerateCompletion.class }, description = \"Get data in and out of Redis.\", footerHeading = \"%nRun 'riot COMMAND --help' for more information on a command.%n%nFor more help on how to use RIOT, head to http://redis.github.io/riot%n\")\npublic class Riot extends RiotMainCommand {\n\n\tpublic static void main(String[] args) {\n\t\tSystem.exit(new Riot().run(args));\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/RiotMainCommand.java",
    "content": "package com.redis.riot;\n\nimport com.redis.riot.core.MainCommand;\nimport com.redis.riot.operation.OperationCommand;\nimport com.redis.spring.batch.item.redis.common.Range;\n\nimport io.lettuce.core.RedisURI;\nimport picocli.CommandLine;\nimport picocli.CommandLine.ParseResult;\nimport picocli.CommandLine.RunFirst;\nimport picocli.CommandLine.RunLast;\nimport software.amazon.awssdk.regions.Region;\n\npublic class RiotMainCommand extends MainCommand {\n\n\t@Override\n\tprotected int executionStrategy(ParseResult parseResult) {\n\t\tfor (ParseResult subcommand : parseResult.subcommands()) {\n\t\t\tObject command = subcommand.commandSpec().userObject();\n\t\t\tif (AbstractImportCommand.class.isAssignableFrom(command.getClass())) {\n\t\t\t\tAbstractImportCommand importCommand = (AbstractImportCommand) command;\n\t\t\t\tfor (ParseResult redisCommand : subcommand.subcommands()) {\n\t\t\t\t\tif (redisCommand.isUsageHelpRequested()) {\n\t\t\t\t\t\treturn new RunLast().execute(redisCommand);\n\t\t\t\t\t}\n\t\t\t\t\tOperationCommand operationCommand = (OperationCommand) redisCommand.commandSpec().userObject();\n\t\t\t\t\timportCommand.getImportOperationCommands().add(operationCommand);\n\t\t\t\t}\n\t\t\t\treturn new RunFirst().execute(subcommand);\n\t\t\t}\n\t\t}\n\t\treturn new RunLast().execute(parseResult); // default execution strategy\n\t}\n\n\t@Override\n\tprotected void registerConverters(CommandLine commandLine) {\n\t\tsuper.registerConverters(commandLine);\n\t\tcommandLine.registerConverter(RedisURI.class, new RedisURIConverter());\n\t\tcommandLine.registerConverter(Region.class, Region::of);\n\t\tcommandLine.registerConverter(Range.class, new RangeConverter());\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/S3Args.java",
    "content": "package com.redis.riot;\n\nimport java.net.URI;\n\nimport com.redis.riot.file.S3Options;\n\nimport lombok.ToString;\nimport picocli.CommandLine.Option;\nimport software.amazon.awssdk.regions.Region;\n\n@ToString\npublic class S3Args {\n\n\t@Option(names = \"--s3-access\", description = \"AWS access key.\", paramLabel = \"<key>\")\n\tprivate String accessKey;\n\n\t@Option(names = \"--s3-secret\", arity = \"0..1\", interactive = true, description = \"AWS secret key.\", paramLabel = \"<key>\")\n\tprivate String secretKey;\n\n\t@Option(names = \"--s3-region\", description = \"Region to use for the AWS client (e.g. us-west-1).\", paramLabel = \"<name>\")\n\tprivate Region region;\n\n\t@Option(names = \"--s3-endpoint\", description = \"Service endpoint with which the AWS client should communicate (e.g. https://sns.us-west-1.amazonaws.com).\", paramLabel = \"<url>\")\n\tprivate URI endpoint;\n\n\tpublic Region getRegion() {\n\t\treturn region;\n\t}\n\n\tpublic void setRegion(Region region) {\n\t\tthis.region = region;\n\t}\n\n\tpublic URI getEndpoint() {\n\t\treturn endpoint;\n\t}\n\n\tpublic void setEndpoint(URI endpoint) {\n\t\tthis.endpoint = endpoint;\n\t}\n\n\tpublic String getAccessKey() {\n\t\treturn accessKey;\n\t}\n\n\tpublic void setAccessKey(String accessKey) {\n\t\tthis.accessKey = accessKey;\n\t}\n\n\tpublic String getSecretKey() {\n\t\treturn secretKey;\n\t}\n\n\tpublic void setSecretKey(String secretKey) {\n\t\tthis.secretKey = secretKey;\n\t}\n\n\tpublic S3Options s3Options() {\n\t\tS3Options options = new S3Options();\n\t\toptions.setAccessKey(accessKey);\n\t\toptions.setSecretKey(secretKey);\n\t\toptions.setEndpoint(endpoint);\n\t\toptions.setRegion(region);\n\t\treturn options;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/SourceRedisArgs.java",
    "content": "package com.redis.riot;\n\nimport java.io.File;\n\nimport com.redis.riot.core.RiotDuration;\n\nimport io.lettuce.core.protocol.ProtocolVersion;\nimport lombok.ToString;\nimport picocli.CommandLine.Option;\n\n@ToString\npublic class SourceRedisArgs implements RedisClientArgs {\n\n\t@Option(names = \"--source-user\", description = \"Source ACL style 'AUTH username pass'. Needs password.\", paramLabel = \"<name>\")\n\tprivate String username;\n\n\t@Option(names = \"--source-pass\", arity = \"0..1\", interactive = true, description = \"Password to use when connecting to the source server.\", paramLabel = \"<pwd>\")\n\tprivate char[] password;\n\n\t@Option(names = \"--source-timeout\", description = \"Source Redis command timeout, e.g. 30s or 5m (default: ${DEFAULT-VALUE}).\", paramLabel = \"<dur>\")\n\tprivate RiotDuration timeout = DEFAULT_TIMEOUT;\n\n\t@Option(names = \"--source-tls\", description = \"Establish a secure TLS connection to source.\")\n\tprivate boolean tls;\n\n\t@Option(names = \"--source-insecure\", description = \"Allow insecure TLS connection to source by skipping cert validation.\")\n\tprivate boolean insecure;\n\n\t@Option(names = \"--source-client\", description = \"Client name used to connect to source Redis.\", paramLabel = \"<name>\")\n\tprivate String clientName;\n\n\t@Option(names = \"--source-cluster\", description = \"Enable source cluster mode.\")\n\tprivate boolean cluster;\n\n\t@Option(names = \"--source-resp\", description = \"Redis protocol version used to connect to source: ${COMPLETION-CANDIDATES} (default: ${DEFAULT-VALUE}).\", paramLabel = \"<ver>\")\n\tprivate ProtocolVersion protocolVersion = DEFAULT_PROTOCOL_VERSION;\n\n\t@Option(names = \"--source-pool\", description = \"Max number of source Redis connections (default: ${DEFAULT-VALUE}).\", paramLabel = \"<int>\")\n\tprivate int poolSize = DEFAULT_POOL_SIZE;\n\n\t@Option(names = \"--source-read-from\", description = \"Which source Redis cluster nodes to read from: ${COMPLETION-CANDIDATES} (default: ${DEFAULT-VALUE}).\", paramLabel = \"<n>\")\n\tprivate ReadFrom readFrom = DEFAULT_READ_FROM;\n\n\t@Option(names = \"--source-keystore\", description = \"Path to keystore.\", paramLabel = \"<file>\", hidden = true)\n\tprivate File keystore;\n\n\t@Option(names = \"--source-keystore-pass\", arity = \"0..1\", interactive = true, description = \"Keystore password.\", paramLabel = \"<password>\", hidden = true)\n\tprivate char[] keystorePassword;\n\n\t@Option(names = \"--source-trust\", description = \"Path to truststore.\", paramLabel = \"<file>\", hidden = true)\n\tprivate File truststore;\n\n\t@Option(names = \"--source-trust-pass\", arity = \"0..1\", interactive = true, description = \"Truststore password.\", paramLabel = \"<password>\", hidden = true)\n\tprivate char[] truststorePassword;\n\n\t@Option(names = \"--source-cert\", description = \"Client certificate to authenticate with (X.509 PEM).\", paramLabel = \"<file>\")\n\tprivate File keyCert;\n\n\t@Option(names = \"--source-key\", description = \"Private key file to authenticate with (PKCS#8 PEM).\", paramLabel = \"<file>\")\n\tprivate File key;\n\n\t@Option(names = \"--source-key-pass\", arity = \"0..1\", interactive = true, description = \"Private key password.\", paramLabel = \"p\")\n\tprivate char[] keyPassword;\n\n\t@Option(names = \"--source-cacert\", description = \"CA Certificate file to verify with (X.509).\", paramLabel = \"<file>\")\n\tprivate File trustedCerts;\n\n\t@Override\n\tpublic String getUsername() {\n\t\treturn username;\n\t}\n\n\tpublic void setUsername(String username) {\n\t\tthis.username = username;\n\t}\n\n\t@Override\n\tpublic char[] getPassword() {\n\t\treturn password;\n\t}\n\n\tpublic void setPassword(char[] password) {\n\t\tthis.password = password;\n\t}\n\n\t@Override\n\tpublic boolean isInsecure() {\n\t\treturn insecure;\n\t}\n\n\tpublic void setInsecure(boolean insecure) {\n\t\tthis.insecure = insecure;\n\t}\n\n\t@Override\n\tpublic boolean isCluster() {\n\t\treturn cluster;\n\t}\n\n\tpublic void setCluster(boolean cluster) {\n\t\tthis.cluster = cluster;\n\t}\n\n\t@Override\n\tpublic ProtocolVersion getProtocolVersion() {\n\t\treturn protocolVersion;\n\t}\n\n\tpublic void setProtocolVersion(ProtocolVersion protocolVersion) {\n\t\tthis.protocolVersion = protocolVersion;\n\t}\n\n\t@Override\n\tpublic int getPoolSize() {\n\t\treturn poolSize;\n\t}\n\n\tpublic void setPoolSize(int poolSize) {\n\t\tthis.poolSize = poolSize;\n\t}\n\n\t@Override\n\tpublic RiotDuration getTimeout() {\n\t\treturn timeout;\n\t}\n\n\tpublic void setTimeout(RiotDuration timeout) {\n\t\tthis.timeout = timeout;\n\t}\n\n\t@Override\n\tpublic boolean isTls() {\n\t\treturn tls;\n\t}\n\n\tpublic void setTls(boolean tls) {\n\t\tthis.tls = tls;\n\t}\n\n\t@Override\n\tpublic String getClientName() {\n\t\treturn clientName;\n\t}\n\n\tpublic void setClientName(String clientName) {\n\t\tthis.clientName = clientName;\n\t}\n\n\t@Override\n\tpublic ReadFrom getReadFrom() {\n\t\treturn readFrom;\n\t}\n\n\tpublic void setReadFrom(ReadFrom readFrom) {\n\t\tthis.readFrom = readFrom;\n\t}\n\n\t@Override\n\tpublic File getKeystore() {\n\t\treturn keystore;\n\t}\n\n\tpublic void setKeystore(File keystore) {\n\t\tthis.keystore = keystore;\n\t}\n\n\t@Override\n\tpublic char[] getKeystorePassword() {\n\t\treturn keystorePassword;\n\t}\n\n\tpublic void setKeystorePassword(char[] keystorePassword) {\n\t\tthis.keystorePassword = keystorePassword;\n\t}\n\n\t@Override\n\tpublic File getTruststore() {\n\t\treturn truststore;\n\t}\n\n\tpublic void setTruststore(File truststore) {\n\t\tthis.truststore = truststore;\n\t}\n\n\t@Override\n\tpublic char[] getTruststorePassword() {\n\t\treturn truststorePassword;\n\t}\n\n\tpublic void setTruststorePassword(char[] truststorePassword) {\n\t\tthis.truststorePassword = truststorePassword;\n\t}\n\n\t@Override\n\tpublic File getKeyCert() {\n\t\treturn keyCert;\n\t}\n\n\tpublic void setKeyCert(File keyCert) {\n\t\tthis.keyCert = keyCert;\n\t}\n\n\t@Override\n\tpublic File getKey() {\n\t\treturn key;\n\t}\n\n\tpublic void setKey(File key) {\n\t\tthis.key = key;\n\t}\n\n\t@Override\n\tpublic char[] getKeyPassword() {\n\t\treturn keyPassword;\n\t}\n\n\tpublic void setKeyPassword(char[] keyPassword) {\n\t\tthis.keyPassword = keyPassword;\n\t}\n\n\t@Override\n\tpublic File getTrustedCerts() {\n\t\treturn trustedCerts;\n\t}\n\n\tpublic void setTrustedCerts(File trustedCerts) {\n\t\tthis.trustedCerts = trustedCerts;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/TargetRedisArgs.java",
    "content": "package com.redis.riot;\n\nimport java.io.File;\n\nimport com.redis.riot.core.RiotDuration;\n\nimport io.lettuce.core.protocol.ProtocolVersion;\nimport lombok.ToString;\nimport picocli.CommandLine.Option;\n\n@ToString\npublic class TargetRedisArgs implements RedisClientArgs {\n\n\t@Option(names = \"--target-user\", description = \"Target ACL style 'AUTH username pass'. Needs password.\", paramLabel = \"<name>\")\n\tprivate String username;\n\n\t@Option(names = \"--target-pass\", arity = \"0..1\", interactive = true, description = \"Password to use when connecting to the target server.\", paramLabel = \"<pwd>\")\n\tprivate char[] password;\n\n\t@Option(names = \"--target-timeout\", description = \"Target Redis command timeout, e.g. 30s or 5m (default: ${DEFAULT-VALUE}).\", paramLabel = \"<dur>\")\n\tprivate RiotDuration timeout = DEFAULT_TIMEOUT;\n\n\t@Option(names = \"--target-tls\", description = \"Establish a secure TLS connection to target.\")\n\tprivate boolean tls;\n\n\t@Option(names = \"--target-insecure\", description = \"Allow insecure TLS connection to target by skipping cert validation.\")\n\tprivate boolean insecure;\n\n\t@Option(names = \"--target-client\", description = \"Client name used to connect to target Redis.\", paramLabel = \"<name>\")\n\tprivate String clientName;\n\n\t@Option(names = \"--target-cluster\", description = \"Enable target cluster mode.\")\n\tprivate boolean cluster;\n\n\t@Option(names = \"--target-resp\", description = \"Redis protocol version used to connect to target: ${COMPLETION-CANDIDATES} (default: ${DEFAULT-VALUE}).\", paramLabel = \"<ver>\")\n\tprivate ProtocolVersion protocolVersion = DEFAULT_PROTOCOL_VERSION;\n\n\t@Option(names = \"--target-pool\", description = \"Max number of target Redis connections (default: ${DEFAULT-VALUE}).\", paramLabel = \"<int>\")\n\tprivate int poolSize = DEFAULT_POOL_SIZE;\n\n\t@Option(names = \"--target-read-from\", description = \"Which target Redis cluster nodes to read from: ${COMPLETION-CANDIDATES} (default: ${DEFAULT-VALUE}).\", paramLabel = \"<n>\")\n\tprivate ReadFrom readFrom = DEFAULT_READ_FROM;\n\n\t@Option(names = \"--target-keystore\", description = \"Path to keystore.\", paramLabel = \"<file>\", hidden = true)\n\tprivate File keystore;\n\n\t@Option(names = \"--target-keystore-pass\", arity = \"0..1\", interactive = true, description = \"Keystore password.\", paramLabel = \"<password>\", hidden = true)\n\tprivate char[] keystorePassword;\n\n\t@Option(names = \"--target-trust\", description = \"Path to truststore.\", paramLabel = \"<file>\", hidden = true)\n\tprivate File truststore;\n\n\t@Option(names = \"--target-trust-pass\", arity = \"0..1\", interactive = true, description = \"Truststore password.\", paramLabel = \"<password>\", hidden = true)\n\tprivate char[] truststorePassword;\n\n\t@Option(names = \"--target-cert\", description = \"Client certificate to authenticate with (X.509 PEM).\", paramLabel = \"<file>\")\n\tprivate File keyCert;\n\n\t@Option(names = \"--target-key\", description = \"Private key file to authenticate with (PKCS#8 PEM).\", paramLabel = \"<file>\")\n\tprivate File key;\n\n\t@Option(names = \"--target-key-pass\", arity = \"0..1\", interactive = true, description = \"Private key password.\", paramLabel = \"pw\")\n\tprivate char[] keyPassword;\n\n\t@Option(names = \"--target-cacert\", description = \"CA Certificate file to verify with (X.509).\", paramLabel = \"<file>\")\n\tprivate File trustedCerts;\n\n\t@Override\n\tpublic String getUsername() {\n\t\treturn username;\n\t}\n\n\tpublic void setUsername(String username) {\n\t\tthis.username = username;\n\t}\n\n\t@Override\n\tpublic char[] getPassword() {\n\t\treturn password;\n\t}\n\n\tpublic void setPassword(char[] password) {\n\t\tthis.password = password;\n\t}\n\n\t@Override\n\tpublic boolean isInsecure() {\n\t\treturn insecure;\n\t}\n\n\tpublic void setInsecure(boolean insecure) {\n\t\tthis.insecure = insecure;\n\t}\n\n\t@Override\n\tpublic RiotDuration getTimeout() {\n\t\treturn timeout;\n\t}\n\n\tpublic void setTimeout(RiotDuration timeout) {\n\t\tthis.timeout = timeout;\n\t}\n\n\t@Override\n\tpublic boolean isTls() {\n\t\treturn tls;\n\t}\n\n\tpublic void setTls(boolean tls) {\n\t\tthis.tls = tls;\n\t}\n\n\t@Override\n\tpublic String getClientName() {\n\t\treturn clientName;\n\t}\n\n\tpublic void setClientName(String clientName) {\n\t\tthis.clientName = clientName;\n\t}\n\n\t@Override\n\tpublic boolean isCluster() {\n\t\treturn cluster;\n\t}\n\n\tpublic void setCluster(boolean cluster) {\n\t\tthis.cluster = cluster;\n\t}\n\n\t@Override\n\tpublic ProtocolVersion getProtocolVersion() {\n\t\treturn protocolVersion;\n\t}\n\n\tpublic void setProtocolVersion(ProtocolVersion protocolVersion) {\n\t\tthis.protocolVersion = protocolVersion;\n\t}\n\n\t@Override\n\tpublic int getPoolSize() {\n\t\treturn poolSize;\n\t}\n\n\tpublic void setPoolSize(int poolSize) {\n\t\tthis.poolSize = poolSize;\n\t}\n\n\t@Override\n\tpublic ReadFrom getReadFrom() {\n\t\treturn readFrom;\n\t}\n\n\tpublic void setReadFrom(ReadFrom readFrom) {\n\t\tthis.readFrom = readFrom;\n\t}\n\n\t@Override\n\tpublic File getKeystore() {\n\t\treturn keystore;\n\t}\n\n\tpublic void setKeystore(File keystore) {\n\t\tthis.keystore = keystore;\n\t}\n\n\t@Override\n\tpublic char[] getKeystorePassword() {\n\t\treturn keystorePassword;\n\t}\n\n\tpublic void setKeystorePassword(char[] keystorePassword) {\n\t\tthis.keystorePassword = keystorePassword;\n\t}\n\n\t@Override\n\tpublic File getTruststore() {\n\t\treturn truststore;\n\t}\n\n\tpublic void setTruststore(File truststore) {\n\t\tthis.truststore = truststore;\n\t}\n\n\t@Override\n\tpublic char[] getTruststorePassword() {\n\t\treturn truststorePassword;\n\t}\n\n\tpublic void setTruststorePassword(char[] truststorePassword) {\n\t\tthis.truststorePassword = truststorePassword;\n\t}\n\n\t@Override\n\tpublic File getKeyCert() {\n\t\treturn keyCert;\n\t}\n\n\tpublic void setKeyCert(File keyCert) {\n\t\tthis.keyCert = keyCert;\n\t}\n\n\t@Override\n\tpublic File getKey() {\n\t\treturn key;\n\t}\n\n\tpublic void setKey(File key) {\n\t\tthis.key = key;\n\t}\n\n\t@Override\n\tpublic char[] getKeyPassword() {\n\t\treturn keyPassword;\n\t}\n\n\tpublic void setKeyPassword(char[] keyPassword) {\n\t\tthis.keyPassword = keyPassword;\n\t}\n\n\t@Override\n\tpublic File getTrustedCerts() {\n\t\treturn trustedCerts;\n\t}\n\n\tpublic void setTrustedCerts(File trustedCerts) {\n\t\tthis.trustedCerts = trustedCerts;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/ToMapFunction.java",
    "content": "package com.redis.riot;\n\nimport java.util.Arrays;\nimport java.util.Iterator;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.function.Function;\n\nimport org.springframework.util.Assert;\nimport org.springframework.util.CollectionUtils;\n\npublic class ToMapFunction<T, K, V> implements Function<T, Map<K, V>> {\n\n\tprivate final List<? extends Function<T, Map<K, V>>> functions;\n\n\t@SuppressWarnings(\"unchecked\")\n\tpublic ToMapFunction(Function<T, Map<K, V>>... functions) {\n\t\tthis(Arrays.asList(functions));\n\n\t}\n\n\tpublic ToMapFunction(List<? extends Function<T, Map<K, V>>> functions) {\n\t\tAssert.notEmpty(functions, \"At least one function must be given\");\n\t\tthis.functions = functions;\n\t}\n\n\t@Override\n\tpublic Map<K, V> apply(T t) {\n\t\tIterator<? extends Function<T, Map<K, V>>> iterator = functions.iterator();\n\t\tMap<K, V> map = iterator.next().apply(t);\n\t\twhile (iterator.hasNext()) {\n\t\t\tMap<K, ? extends V> values = iterator.next().apply(t);\n\t\t\tif (!CollectionUtils.isEmpty(values)) {\n\t\t\t\tmap.putAll(values);\n\t\t\t}\n\t\t}\n\t\treturn map;\n\t}\n\n}"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/Versions.java",
    "content": "package com.redis.riot;\n\nimport java.io.ByteArrayOutputStream;\n\nimport com.redis.riot.core.RiotUtils;\nimport com.redis.riot.core.RiotVersion;\n\nimport picocli.CommandLine.IVersionProvider;\n\npublic class Versions implements IVersionProvider {\n\n\t@Override\n\tpublic String[] getVersion() throws Exception {\n\t\tByteArrayOutputStream baos = new ByteArrayOutputStream();\n\t\tRiotVersion.banner(RiotUtils.newPrintStream(baos));\n\t\treturn RiotUtils.toString(baos).split(System.lineSeparator());\n\t}\n}"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/function/HashToMapFunction.java",
    "content": "package com.redis.riot.function;\n\nimport java.util.ArrayList;\nimport java.util.Collections;\nimport java.util.LinkedHashMap;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.function.Function;\n\npublic class HashToMapFunction implements Function<Map<String, String>, Map<String, String>> {\n\n\t@Override\n\tpublic Map<String, String> apply(Map<String, String> t) {\n\t\tMap<String, String> map = new LinkedHashMap<>();\n\t\tList<String> keys = new ArrayList<>(t.keySet());\n\t\tCollections.sort(keys);\n\t\tfor (String key : keys) {\n\t\t\tmap.put(key, t.get(key));\n\t\t}\n\t\treturn map;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/function/KeyValueMap.java",
    "content": "package com.redis.riot.function;\n\nimport java.util.Collection;\nimport java.util.Collections;\nimport java.util.LinkedHashMap;\nimport java.util.Map;\nimport java.util.Set;\nimport java.util.function.Function;\n\nimport com.redis.lettucemod.timeseries.Sample;\nimport com.redis.riot.core.processor.CollectionToMapFunction;\nimport com.redis.riot.core.processor.StringToMapFunction;\nimport com.redis.spring.batch.item.redis.common.KeyValue;\n\nimport io.lettuce.core.ScoredValue;\nimport io.lettuce.core.StreamMessage;\n\npublic class KeyValueMap implements Function<KeyValue<String>, Map<String, Object>> {\n\n\tprivate Function<String, Map<String, String>> key = t -> Collections.emptyMap();\n\tprivate Function<Map<String, String>, Map<String, String>> hash = new HashToMapFunction();\n\tprivate Function<Collection<Sample>, Map<String, String>> timeseries = new TimeSeriesToMapFunction();\n\tprivate Function<Collection<StreamMessage<String, String>>, Map<String, String>> stream = new StreamToMapFunction();\n\tprivate Function<Collection<String>, Map<String, String>> list = new CollectionToMapFunction();\n\tprivate Function<Collection<String>, Map<String, String>> set = new CollectionToMapFunction();\n\tprivate Function<Set<ScoredValue<String>>, Map<String, String>> zset = new ZsetToMapFunction();\n\tprivate Function<String, Map<String, String>> json = new StringToMapFunction();\n\tprivate Function<String, Map<String, String>> string = new StringToMapFunction();\n\tprivate Function<Object, Map<String, String>> defaultFunction = s -> Collections.emptyMap();\n\n\t@Override\n\tpublic Map<String, Object> apply(KeyValue<String> item) {\n\t\tMap<String, Object> map = new LinkedHashMap<>();\n\t\tmap.putAll(key.apply(item.getKey()));\n\t\tMap<String, String> value = value(item);\n\t\tmap.putAll(value);\n\t\treturn map;\n\t}\n\n\t@SuppressWarnings(\"unchecked\")\n\tprivate Map<String, String> value(KeyValue<String> item) {\n\t\tif (!KeyValue.hasType(item) || !KeyValue.hasValue(item)) {\n\t\t\treturn Collections.emptyMap();\n\t\t}\n\t\tif (item.getType() == null) {\n\t\t\treturn Collections.emptyMap();\n\t\t}\n\t\tswitch (item.getType()) {\n\t\tcase KeyValue.TYPE_HASH:\n\t\t\treturn hash.apply((Map<String, String>) item.getValue());\n\t\tcase KeyValue.TYPE_LIST:\n\t\t\treturn list.apply((Collection<String>) item.getValue());\n\t\tcase KeyValue.TYPE_SET:\n\t\t\treturn set.apply((Set<String>) item.getValue());\n\t\tcase KeyValue.TYPE_ZSET:\n\t\t\treturn zset.apply((Set<ScoredValue<String>>) item.getValue());\n\t\tcase KeyValue.TYPE_STREAM:\n\t\t\treturn stream.apply((Collection<StreamMessage<String, String>>) item.getValue());\n\t\tcase KeyValue.TYPE_JSON:\n\t\t\treturn json.apply((String) item.getValue());\n\t\tcase KeyValue.TYPE_STRING:\n\t\t\treturn string.apply((String) item.getValue());\n\t\tcase KeyValue.TYPE_TIMESERIES:\n\t\t\treturn timeseries.apply((Collection<Sample>) item.getValue());\n\t\tdefault:\n\t\t\treturn defaultFunction.apply(item.getValue());\n\t\t}\n\t}\n\n\tpublic void setKey(Function<String, Map<String, String>> key) {\n\t\tthis.key = key;\n\t}\n\n\tpublic void setHash(Function<Map<String, String>, Map<String, String>> function) {\n\t\tthis.hash = function;\n\t}\n\n\tpublic void setStream(Function<Collection<StreamMessage<String, String>>, Map<String, String>> function) {\n\t\tthis.stream = function;\n\t}\n\n\tpublic void setList(Function<Collection<String>, Map<String, String>> function) {\n\t\tthis.list = function;\n\t}\n\n\tpublic void setSet(Function<Collection<String>, Map<String, String>> function) {\n\t\tthis.set = function;\n\t}\n\n\tpublic void setZset(Function<Set<ScoredValue<String>>, Map<String, String>> function) {\n\t\tthis.zset = function;\n\t}\n\n\tpublic void setString(Function<String, Map<String, String>> function) {\n\t\tthis.string = function;\n\t}\n\n\tpublic void setDefaultFunction(Function<Object, Map<String, String>> function) {\n\t\tthis.defaultFunction = function;\n\t}\n\n\tpublic void setJson(Function<String, Map<String, String>> function) {\n\t\tthis.json = function;\n\t}\n\n\tpublic void setTimeseries(Function<Collection<Sample>, Map<String, String>> function) {\n\t\tthis.timeseries = function;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/function/MapToFieldFunction.java",
    "content": "package com.redis.riot.function;\n\nimport java.util.Map;\nimport java.util.function.Function;\n\npublic class MapToFieldFunction implements Function<Map<String, Object>, Object> {\n\n\tprivate final String key;\n\n\tprivate Object defaultValue = null;\n\n\tpublic MapToFieldFunction(String key) {\n\t\tthis.key = key;\n\t}\n\n\tpublic void setDefaultValue(Object defaultValue) {\n\t\tthis.defaultValue = defaultValue;\n\t}\n\n\t@Override\n\tpublic Object apply(Map<String, Object> t) {\n\t\treturn t.getOrDefault(key, defaultValue);\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/function/ObjectMapperFunction.java",
    "content": "package com.redis.riot.function;\n\nimport java.util.function.Function;\n\nimport org.springframework.core.convert.ConversionFailedException;\nimport org.springframework.core.convert.TypeDescriptor;\n\nimport com.fasterxml.jackson.core.JsonProcessingException;\nimport com.fasterxml.jackson.databind.ObjectWriter;\n\npublic class ObjectMapperFunction<T> implements Function<T, String> {\n\n\tprivate final ObjectWriter writer;\n\n\tpublic ObjectMapperFunction(ObjectWriter writer) {\n\t\tthis.writer = writer;\n\t}\n\n\t@Override\n\tpublic String apply(T source) {\n\t\ttry {\n\t\t\treturn writer.writeValueAsString(source);\n\t\t} catch (JsonProcessingException e) {\n\t\t\tTypeDescriptor sourceDescriptor = TypeDescriptor.forObject(source);\n\t\t\tTypeDescriptor targetDescriptor = TypeDescriptor.valueOf(String.class);\n\t\t\tthrow new ConversionFailedException(sourceDescriptor, targetDescriptor, source, e);\n\t\t}\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/function/StreamItemProcessor.java",
    "content": "package com.redis.riot.function;\n\nimport java.util.Collection;\nimport java.util.stream.Collectors;\n\nimport org.springframework.batch.item.ItemProcessor;\nimport org.springframework.util.CollectionUtils;\n\nimport com.redis.spring.batch.item.redis.common.KeyValue;\n\nimport io.lettuce.core.StreamMessage;\n\npublic class StreamItemProcessor implements ItemProcessor<KeyValue<String>, KeyValue<String>> {\n\n\tprivate boolean prune;\n\tprivate boolean dropMessageIds;\n\n\t@SuppressWarnings(\"unchecked\")\n\t@Override\n\tpublic KeyValue<String> process(KeyValue<String> t) {\n\t\tif (KeyValue.hasValue(t) && KeyValue.TYPE_STREAM.equals(t.getType())) {\n\t\t\tCollection<StreamMessage<?, ?>> messages = (Collection<StreamMessage<?, ?>>) t.getValue();\n\t\t\tif (CollectionUtils.isEmpty(messages)) {\n\t\t\t\tif (prune) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (dropMessageIds) {\n\t\t\t\t\tt.setValue(messages.stream().map(this::message).collect(Collectors.toList()));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn t;\n\t}\n\n\t@SuppressWarnings({ \"rawtypes\", \"unchecked\" })\n\tprivate StreamMessage message(StreamMessage message) {\n\t\treturn new StreamMessage(message.getStream(), null, message.getBody());\n\t}\n\n\tpublic boolean isDropMessageIds() {\n\t\treturn dropMessageIds;\n\t}\n\n\tpublic void setDropMessageIds(boolean dropMessageIds) {\n\t\tthis.dropMessageIds = dropMessageIds;\n\t}\n\n\tpublic boolean isPrune() {\n\t\treturn prune;\n\t}\n\n\tpublic void setPrune(boolean prune) {\n\t\tthis.prune = prune;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/function/StreamToMapFunction.java",
    "content": "package com.redis.riot.function;\n\nimport java.util.Collection;\nimport java.util.HashMap;\nimport java.util.Map;\nimport java.util.function.Function;\n\nimport io.lettuce.core.StreamMessage;\n\npublic class StreamToMapFunction implements Function<Collection<StreamMessage<String, String>>, Map<String, String>> {\n\n\tpublic static final String DEFAULT_KEY_FORMAT = \"%s.%s\";\n\n\tprivate final HashToMapFunction bodyFunction = new HashToMapFunction();\n\n\tprivate String keyFormat = DEFAULT_KEY_FORMAT;\n\n\tpublic void setKeyFormat(String keyFormat) {\n\t\tthis.keyFormat = keyFormat;\n\t}\n\n\t@Override\n\tpublic Map<String, String> apply(Collection<StreamMessage<String, String>> source) {\n\t\tMap<String, String> result = new HashMap<>();\n\t\tfor (StreamMessage<String, String> message : source) {\n\t\t\tMap<String, String> sortedMap = bodyFunction.apply(message.getBody());\n\t\t\tfor (Map.Entry<String, String> entry : sortedMap.entrySet()) {\n\t\t\t\tresult.put(String.format(keyFormat, message.getId(), entry.getKey()), entry.getValue());\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/function/StringKeyValue.java",
    "content": "package com.redis.riot.function;\n\nimport java.util.function.Function;\n\nimport com.redis.spring.batch.item.redis.common.BatchUtils;\nimport com.redis.spring.batch.item.redis.common.KeyValue;\n\nimport io.lettuce.core.codec.RedisCodec;\n\npublic class StringKeyValue<K> implements Function<KeyValue<String>, KeyValue<K>> {\n\n\tprivate final Function<String, K> stringKeyFunction;\n\n\tpublic StringKeyValue(RedisCodec<K, ?> codec) {\n\t\tthis.stringKeyFunction = BatchUtils.stringKeyFunction(codec);\n\t}\n\n\t@Override\n\tpublic KeyValue<K> apply(KeyValue<String> item) {\n\t\tKeyValue<K> keyValue = new KeyValue<>();\n\t\tkeyValue.setEvent(item.getEvent());\n\t\tkeyValue.setKey(stringKeyFunction.apply(item.getKey()));\n\t\tkeyValue.setMemoryUsage(item.getMemoryUsage());\n\t\tkeyValue.setTimestamp(item.getTimestamp());\n\t\tkeyValue.setTtl(item.getTtl());\n\t\tkeyValue.setType(item.getType());\n\t\tkeyValue.setValue(item.getValue());\n\t\treturn keyValue;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/function/TimeSeriesToMapFunction.java",
    "content": "package com.redis.riot.function;\n\nimport java.util.Collection;\nimport java.util.HashMap;\nimport java.util.Map;\nimport java.util.function.Function;\n\nimport com.redis.lettucemod.timeseries.Sample;\n\npublic class TimeSeriesToMapFunction implements Function<Collection<Sample>, Map<String, String>> {\n\n\t@Override\n\tpublic Map<String, String> apply(Collection<Sample> t) {\n\t\tMap<String, String> result = new HashMap<>();\n\t\tint index = 0;\n\t\tfor (Sample sample : t) {\n\t\t\tresult.put(String.valueOf(index), sample.getTimestamp() + \":\" + sample.getValue());\n\t\t\tindex++;\n\t\t}\n\t\treturn result;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/function/ToGeoValue.java",
    "content": "package com.redis.riot.function;\n\nimport java.util.function.Function;\nimport java.util.function.ToDoubleFunction;\n\nimport io.lettuce.core.GeoValue;\n\npublic class ToGeoValue<V, T> implements Function<T, GeoValue<V>> {\n\n\tprivate final Function<T, V> memberConverter;\n\tprivate final ToDoubleFunction<T> longitudeConverter;\n\tprivate final ToDoubleFunction<T> latitudeConverter;\n\n\tpublic ToGeoValue(Function<T, V> member, ToDoubleFunction<T> longitude, ToDoubleFunction<T> latitude) {\n\t\tthis.memberConverter = member;\n\t\tthis.longitudeConverter = longitude;\n\t\tthis.latitudeConverter = latitude;\n\t}\n\n\t@Override\n\tpublic GeoValue<V> apply(T t) {\n\t\tdouble longitude = this.longitudeConverter.applyAsDouble(t);\n\t\tdouble latitude = this.latitudeConverter.applyAsDouble(t);\n\t\treturn GeoValue.just(longitude, latitude, memberConverter.apply(t));\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/function/ToSample.java",
    "content": "package com.redis.riot.function;\n\nimport java.util.function.Function;\nimport java.util.function.ToDoubleFunction;\nimport java.util.function.ToLongFunction;\n\nimport com.redis.lettucemod.timeseries.Sample;\n\npublic class ToSample<T> implements Function<T, Sample> {\n\n\tprivate final ToLongFunction<T> timestampConverter;\n\n\tprivate final ToDoubleFunction<T> valueConverter;\n\n\tpublic ToSample(ToLongFunction<T> timestamp, ToDoubleFunction<T> value) {\n\t\tthis.timestampConverter = timestamp;\n\t\tthis.valueConverter = value;\n\t}\n\n\t@Override\n\tpublic Sample apply(T source) {\n\t\tdouble value = this.valueConverter.applyAsDouble(source);\n\t\tlong timestamp = this.timestampConverter.applyAsLong(source);\n\t\tif (timestamp > 0) {\n\t\t\treturn Sample.of(timestamp, value);\n\t\t}\n\t\treturn Sample.of(value);\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/function/ToScoredValue.java",
    "content": "package com.redis.riot.function;\n\nimport java.util.function.Function;\nimport java.util.function.ToDoubleFunction;\n\nimport io.lettuce.core.ScoredValue;\n\npublic class ToScoredValue<V, T> implements Function<T, ScoredValue<V>> {\n\n    private final Function<T, V> member;\n\n    private final ToDoubleFunction<T> score;\n\n    public ToScoredValue(Function<T, V> member, ToDoubleFunction<T> score) {\n        this.member = member;\n        this.score = score;\n    }\n\n    @Override\n    public ScoredValue<V> apply(T source) {\n        return ScoredValue.just(score.applyAsDouble(source), member.apply(source));\n    }\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/function/ToStringKeyValue.java",
    "content": "package com.redis.riot.function;\n\nimport java.util.function.Function;\n\nimport com.redis.spring.batch.item.redis.common.BatchUtils;\nimport com.redis.spring.batch.item.redis.common.KeyValue;\n\nimport io.lettuce.core.codec.RedisCodec;\n\npublic class ToStringKeyValue<K> implements Function<KeyValue<K>, KeyValue<String>> {\n\n\tprivate final Function<K, String> toStringKeyFunction;\n\n\tpublic ToStringKeyValue(RedisCodec<K, ?> codec) {\n\t\tthis.toStringKeyFunction = BatchUtils.toStringKeyFunction(codec);\n\t}\n\n\t@Override\n\tpublic KeyValue<String> apply(KeyValue<K> item) {\n\t\tKeyValue<String> keyValue = new KeyValue<>();\n\t\tkeyValue.setKey(toStringKeyFunction.apply(item.getKey()));\n\t\tkeyValue.setEvent(item.getEvent());\n\t\tkeyValue.setMemoryUsage(item.getMemoryUsage());\n\t\tkeyValue.setTimestamp(item.getTimestamp());\n\t\tkeyValue.setTtl(item.getTtl());\n\t\tkeyValue.setType(item.getType());\n\t\tkeyValue.setValue(item.getValue());\n\t\treturn keyValue;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/function/ToSuggestion.java",
    "content": "package com.redis.riot.function;\n\nimport java.util.function.Function;\nimport java.util.function.ToDoubleFunction;\n\nimport com.redis.lettucemod.search.Suggestion;\n\npublic class ToSuggestion<V, T> implements Function<T, Suggestion<V>> {\n\n    private final Function<T, V> string;\n\n    private final ToDoubleFunction<T> score;\n\n    private final Function<T, V> payload;\n\n    public ToSuggestion(Function<T, V> string, ToDoubleFunction<T> score, Function<T, V> payload) {\n        this.string = string;\n        this.score = score;\n        this.payload = payload;\n    }\n\n    @Override\n    public Suggestion<V> apply(T source) {\n        Suggestion<V> suggestion = new Suggestion<>();\n        suggestion.setString(string.apply(source));\n        suggestion.setScore(score.applyAsDouble(source));\n        suggestion.setPayload(payload.apply(source));\n        return suggestion;\n    }\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/function/ZsetToMapFunction.java",
    "content": "package com.redis.riot.function;\n\nimport java.util.HashMap;\nimport java.util.Map;\nimport java.util.Set;\nimport java.util.function.Function;\n\nimport io.lettuce.core.ScoredValue;\n\npublic class ZsetToMapFunction implements Function<Set<ScoredValue<String>>, Map<String, String>> {\n\n\tpublic static final String DEFAULT_SCORE_KEY_FORMAT = \"score[%s]\";\n\tpublic static final String DEFAULT_VALUE_KEY_FORMAT = \"value[%s]\";\n\tpublic static final String DEFAULT_SCORE_FORMAT = \"%s\";\n\n\tprivate String scoreKeyFormat = DEFAULT_SCORE_KEY_FORMAT;\n\tprivate String valueKeyFormat = DEFAULT_VALUE_KEY_FORMAT;\n\tprivate String scoreFormat = DEFAULT_SCORE_FORMAT;\n\n\tpublic void setScoreKeyFormat(String scoreKeyFormat) {\n\t\tthis.scoreKeyFormat = scoreKeyFormat;\n\t}\n\n\tpublic void setValueKeyFormat(String valueKeyFormat) {\n\t\tthis.valueKeyFormat = valueKeyFormat;\n\t}\n\n\tpublic void setScoreFormat(String scoreFormat) {\n\t\tthis.scoreFormat = scoreFormat;\n\t}\n\n\t@Override\n\tpublic Map<String, String> apply(Set<ScoredValue<String>> source) {\n\t\tMap<String, String> result = new HashMap<>();\n\t\tint index = 0;\n\t\tfor (ScoredValue<String> scoredValue : source) {\n\t\t\tresult.put(String.format(scoreKeyFormat, index), String.format(scoreFormat, scoredValue.getScore()));\n\t\t\tresult.put(String.format(valueKeyFormat, index), scoredValue.getValue());\n\t\t\tindex++;\n\t\t}\n\t\treturn result;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/operation/AbstractMemberOperationCommand.java",
    "content": "package com.redis.riot.operation;\n\nimport java.util.Map;\nimport java.util.function.Function;\n\nimport picocli.CommandLine.ArgGroup;\n\nabstract class AbstractMemberOperationCommand extends AbstractOperationCommand {\n\n\t@ArgGroup(exclusive = false)\n\tprivate MemberOperationArgs memberArgs = new MemberOperationArgs();\n\n\tprotected Function<Map<String, Object>, String> memberFunction() {\n\t\treturn idFunction(memberArgs.getMemberSpace(), memberArgs.getMemberFields());\n\t}\n\n}"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/operation/AbstractOperationCommand.java",
    "content": "package com.redis.riot.operation;\n\nimport java.util.Arrays;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.function.Function;\nimport java.util.function.ToDoubleFunction;\nimport java.util.function.ToLongFunction;\n\nimport com.redis.riot.core.BaseCommand;\nimport com.redis.riot.core.processor.FieldExtractorFactory;\nimport com.redis.riot.core.processor.IdFunctionBuilder;\n\nimport picocli.CommandLine.Command;\nimport picocli.CommandLine.Option;\n\n@Command\npublic abstract class AbstractOperationCommand extends BaseCommand implements OperationCommand {\n\n\tpublic static final String DEFAULT_SEPARATOR = IdFunctionBuilder.DEFAULT_SEPARATOR;\n\n\t@Option(names = \"--keyspace\", description = \"Keyspace prefix.\", paramLabel = \"<str>\")\n\tprivate String keyspace;\n\n\t@Option(names = { \"-k\", \"--key\" }, arity = \"1..*\", description = \"Key fields.\", paramLabel = \"<fields>\")\n\tprivate List<String> keyFields;\n\n\t@Option(names = \"--key-separator\", description = \"Key separator (default: ${DEFAULT-VALUE}).\", paramLabel = \"<str>\")\n\tprivate String keySeparator = DEFAULT_SEPARATOR;\n\n\t@Option(names = \"--remove\", description = \"Remove key or member fields the first time they are used.\")\n\tprivate boolean removeFields;\n\n\t@Option(names = \"--ignore-missing\", description = \"Ignore missing fields.\")\n\tprivate boolean ignoreMissingFields;\n\n\tpublic String getKeyspace() {\n\t\treturn keyspace;\n\t}\n\n\tpublic void setKeyspace(String keyspace) {\n\t\tthis.keyspace = keyspace;\n\t}\n\n\tpublic List<String> getKeyFields() {\n\t\treturn keyFields;\n\t}\n\n\tpublic void setKeyFields(String... keys) {\n\t\tsetKeyFields(Arrays.asList(keys));\n\t}\n\n\tpublic void setKeyFields(List<String> keyFields) {\n\t\tthis.keyFields = keyFields;\n\t}\n\n\tpublic String getKeySeparator() {\n\t\treturn keySeparator;\n\t}\n\n\tpublic void setKeySeparator(String keySeparator) {\n\t\tthis.keySeparator = keySeparator;\n\t}\n\n\tpublic boolean isRemoveFields() {\n\t\treturn removeFields;\n\t}\n\n\tpublic void setRemoveFields(boolean removeFields) {\n\t\tthis.removeFields = removeFields;\n\t}\n\n\tpublic boolean isIgnoreMissingFields() {\n\t\treturn ignoreMissingFields;\n\t}\n\n\tpublic void setIgnoreMissingFields(boolean ignoreMissingFields) {\n\t\tthis.ignoreMissingFields = ignoreMissingFields;\n\t}\n\n\tprotected Function<Map<String, Object>, String> toString(String field) {\n\t\tif (field == null) {\n\t\t\treturn s -> null;\n\t\t}\n\t\treturn fieldExtractorFactory().string(field);\n\t}\n\n\tprotected FieldExtractorFactory fieldExtractorFactory() {\n\t\treturn FieldExtractorFactory.builder().remove(removeFields).nullCheck(!ignoreMissingFields).build();\n\t}\n\n\tprotected Function<Map<String, Object>, String> idFunction(String prefix, List<String> fields) {\n\t\treturn new IdFunctionBuilder().separator(keySeparator).remove(removeFields).prefix(prefix).fields(fields)\n\t\t\t\t.build();\n\t}\n\n\tprotected Function<Map<String, Object>, String> keyFunction() {\n\t\treturn idFunction(keyspace, keyFields);\n\t}\n\n\tprotected ToDoubleFunction<Map<String, Object>> score(ScoreArgs args) {\n\t\treturn toDouble(args.getField(), args.getDefaultValue());\n\t}\n\n\tprotected ToDoubleFunction<Map<String, Object>> toDouble(String field, double defaultValue) {\n\t\tif (field == null) {\n\t\t\treturn m -> defaultValue;\n\t\t}\n\t\treturn fieldExtractorFactory().doubleField(field, defaultValue);\n\t}\n\n\tprotected ToLongFunction<Map<String, Object>> toLong(String field) {\n\t\tif (field == null) {\n\t\t\treturn m -> 0;\n\t\t}\n\t\treturn fieldExtractorFactory().longField(field);\n\t}\n\n}"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/operation/DelCommand.java",
    "content": "package com.redis.riot.operation;\n\nimport java.util.Map;\n\nimport com.redis.spring.batch.item.redis.writer.impl.Del;\n\nimport picocli.CommandLine.Command;\n\n@Command(name = \"del\", description = \"Delete keys\")\npublic class DelCommand extends AbstractOperationCommand {\n\n\t@Override\n\tpublic Del<String, String, Map<String, Object>> operation() {\n\t\treturn new Del<>(keyFunction());\n\t}\n\n}"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/operation/ExpireCommand.java",
    "content": "package com.redis.riot.operation;\n\nimport java.util.Map;\nimport java.util.function.ToLongFunction;\n\nimport com.redis.spring.batch.item.redis.writer.impl.AbstractWriteOperation;\nimport com.redis.spring.batch.item.redis.writer.impl.Expire;\nimport com.redis.spring.batch.item.redis.writer.impl.ExpireAt;\n\nimport picocli.CommandLine.ArgGroup;\nimport picocli.CommandLine.Command;\nimport picocli.CommandLine.Option;\n\n@Command(name = \"expire\", description = \"Set timeouts on keys\")\npublic class ExpireCommand extends AbstractOperationCommand {\n\n\tpublic static final long DEFAULT_TTL = 60;\n\n\t@ArgGroup(exclusive = true)\n\tprivate ExpireTtlArgs ttlArgs = new ExpireTtlArgs();\n\n\t@Option(names = \"--abs\", description = \"TTL is a POSIX time in milliseconds.\")\n\tprivate boolean absolute;\n\n\t@Override\n\tpublic AbstractWriteOperation<String, String, Map<String, Object>> operation() {\n\t\tif (absolute) {\n\t\t\tExpireAt<String, String, Map<String, Object>> operation = new ExpireAt<>(keyFunction());\n\t\t\tif (ttlArgs.getTtlValue() > 0) {\n\t\t\t\toperation.setTimestamp(ttlArgs.getTtlValue());\n\t\t\t} else {\n\t\t\t\toperation.setTimestampFunction(fieldTtl());\n\t\t\t}\n\t\t\treturn operation;\n\t\t}\n\t\tExpire<String, String, Map<String, Object>> operation = new Expire<>(keyFunction());\n\t\tif (ttlArgs.getTtlValue() > 0) {\n\t\t\toperation.setTtl(ttlArgs.getTtlValue());\n\t\t} else {\n\t\t\toperation.setTtlFunction(fieldTtl());\n\t\t}\n\t\treturn operation;\n\t}\n\n\tprivate ToLongFunction<Map<String, Object>> fieldTtl() {\n\t\treturn toLong(ttlArgs.getTtlField());\n\t}\n\n\tpublic ExpireTtlArgs getTtlArgs() {\n\t\treturn ttlArgs;\n\t}\n\n\tpublic void setTtlArgs(ExpireTtlArgs expireArgs) {\n\t\tthis.ttlArgs = expireArgs;\n\t}\n\n\tpublic boolean isAbsolute() {\n\t\treturn absolute;\n\t}\n\n\tpublic void setAbsolute(boolean absolute) {\n\t\tthis.absolute = absolute;\n\t}\n\n}"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/operation/ExpireTtlArgs.java",
    "content": "package com.redis.riot.operation;\n\nimport lombok.ToString;\nimport picocli.CommandLine.Option;\n\n@ToString\npublic class ExpireTtlArgs {\n\n\t@Option(names = \"--ttl-field\", required = true, description = \"Expire timeout field.\", paramLabel = \"<field>\")\n\tprivate String ttlField;\n\n\t@Option(names = \"--ttl\", required = true, description = \"Expire timeout duration in milliseconds.\", paramLabel = \"<ms>\")\n\tprivate long ttlValue;\n\n\tpublic String getTtlField() {\n\t\treturn ttlField;\n\t}\n\n\tpublic void setTtlField(String ttlField) {\n\t\tthis.ttlField = ttlField;\n\t}\n\n\tpublic long getTtlValue() {\n\t\treturn ttlValue;\n\t}\n\n\tpublic void setTtlValue(long ttlValue) {\n\t\tthis.ttlValue = ttlValue;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/operation/FieldFilterArgs.java",
    "content": "package com.redis.riot.operation;\n\nimport java.util.List;\nimport java.util.Map;\nimport java.util.function.Function;\n\nimport org.springframework.util.ObjectUtils;\n\nimport com.redis.riot.core.processor.MapFilteringFunction;\nimport com.redis.riot.core.processor.MapFlatteningFunction;\nimport com.redis.riot.core.processor.ObjectToStringFunction;\n\nimport lombok.ToString;\nimport picocli.CommandLine.Option;\n\n@ToString\npublic class FieldFilterArgs {\n\n\t@Option(arity = \"1..*\", names = \"--include\", description = \"Fields to include.\", paramLabel = \"<field>\")\n\tprivate List<String> includeFields;\n\n\t@Option(arity = \"1..*\", names = \"--exclude\", description = \"Fields to exclude.\", paramLabel = \"<field>\")\n\tprivate List<String> excludeFields;\n\n\tpublic Function<Map<String, Object>, Map<String, String>> mapFunction() {\n\t\tFunction<Map<String, Object>, Map<String, String>> mapFlattener = new MapFlatteningFunction<>(\n\t\t\t\tnew ObjectToStringFunction());\n\t\tif (ObjectUtils.isEmpty(includeFields) && ObjectUtils.isEmpty(excludeFields)) {\n\t\t\treturn mapFlattener;\n\t\t}\n\t\tMapFilteringFunction filtering = new MapFilteringFunction();\n\t\tif (!ObjectUtils.isEmpty(includeFields)) {\n\t\t\tfiltering.includes(includeFields);\n\t\t}\n\t\tif (!ObjectUtils.isEmpty(excludeFields)) {\n\t\t\tfiltering.excludes(excludeFields);\n\t\t}\n\t\treturn mapFlattener.andThen(filtering);\n\t}\n\n\tpublic List<String> getExcludeFields() {\n\t\treturn excludeFields;\n\t}\n\n\tpublic void setExcludeFields(List<String> excludes) {\n\t\tthis.excludeFields = excludes;\n\t}\n\n\tpublic List<String> getIncludeFields() {\n\t\treturn includeFields;\n\t}\n\n\tpublic void setIncludeFields(List<String> includes) {\n\t\tthis.includeFields = includes;\n\t}\n\n}"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/operation/GeoaddCommand.java",
    "content": "package com.redis.riot.operation;\n\nimport java.util.Map;\nimport java.util.function.ToDoubleFunction;\n\nimport com.redis.riot.function.ToGeoValue;\nimport com.redis.spring.batch.item.redis.writer.impl.Geoadd;\n\nimport picocli.CommandLine.Command;\nimport picocli.CommandLine.Option;\n\n@Command(name = \"geoadd\", description = \"Add members to a geo set\")\npublic class GeoaddCommand extends AbstractMemberOperationCommand {\n\n\t@Option(names = \"--lon\", required = true, description = \"Longitude field.\", paramLabel = \"<field>\")\n\tprivate String longitude;\n\n\t@Option(names = \"--lat\", required = true, description = \"Latitude field.\", paramLabel = \"<field>\")\n\tprivate String latitude;\n\n\tpublic String getLongitude() {\n\t\treturn longitude;\n\t}\n\n\tpublic void setLongitude(String field) {\n\t\tthis.longitude = field;\n\t}\n\n\tpublic String getLatitude() {\n\t\treturn latitude;\n\t}\n\n\tpublic void setLatitude(String field) {\n\t\tthis.latitude = field;\n\t}\n\n\t@Override\n\tpublic Geoadd<String, String, Map<String, Object>> operation() {\n\t\treturn new Geoadd<>(keyFunction(), geoValueFunction());\n\t}\n\n\tprivate ToGeoValue<String, Map<String, Object>> geoValueFunction() {\n\t\tToDoubleFunction<Map<String, Object>> lon = toDouble(longitude, 0);\n\t\tToDoubleFunction<Map<String, Object>> lat = toDouble(latitude, 0);\n\t\treturn new ToGeoValue<>(memberFunction(), lon, lat);\n\t}\n\n}"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/operation/HsetCommand.java",
    "content": "package com.redis.riot.operation;\n\nimport java.util.Map;\n\nimport com.redis.spring.batch.item.redis.writer.impl.Hset;\n\nimport picocli.CommandLine.ArgGroup;\nimport picocli.CommandLine.Command;\n\n@Command(name = \"hset\", description = \"Set hashes from input\")\npublic class HsetCommand extends AbstractOperationCommand {\n\n\t@ArgGroup(exclusive = false)\n\tprivate FieldFilterArgs fieldFilterArgs = new FieldFilterArgs();\n\n\t@Override\n\tpublic Hset<String, String, Map<String, Object>> operation() {\n\t\treturn new Hset<>(keyFunction(), fieldFilterArgs.mapFunction());\n\t}\n\n\tpublic FieldFilterArgs getFieldFilterArgs() {\n\t\treturn fieldFilterArgs;\n\t}\n\n\tpublic void setFieldFilterArgs(FieldFilterArgs filteringArgs) {\n\t\tthis.fieldFilterArgs = filteringArgs;\n\t}\n\n}"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/operation/JsonSetCommand.java",
    "content": "package com.redis.riot.operation;\n\nimport java.util.Map;\n\nimport org.springframework.batch.item.ItemStreamException;\nimport org.springframework.util.StringUtils;\n\nimport com.fasterxml.jackson.core.JsonProcessingException;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport com.fasterxml.jackson.databind.ObjectWriter;\nimport com.redis.spring.batch.item.redis.writer.impl.JsonSet;\n\nimport io.lettuce.core.json.JsonPath;\nimport picocli.CommandLine.Command;\nimport picocli.CommandLine.Option;\n\n@Command(name = \"json.set\", description = \"Add JSON documents to RedisJSON\")\npublic class JsonSetCommand extends AbstractOperationCommand {\n\n\tprivate final ObjectWriter jsonWriter = new ObjectMapper().writerFor(Map.class);\n\n\t@Option(names = \"--path\", description = \"Path field.\", paramLabel = \"<field>\")\n\tprivate String pathField;\n\n\t@Override\n\tpublic JsonSet<String, String, Map<String, Object>> operation() {\n\t\tJsonSet<String, String, Map<String, Object>> operation = new JsonSet<>(keyFunction(), this::jsonValue);\n\t\tif (pathField != null) {\n\t\t\toperation.setPathFunction(toString(pathField).andThen(this::jsonPath));\n\t\t}\n\t\treturn operation;\n\t}\n\n\tprivate JsonPath jsonPath(String path) {\n\t\tif (StringUtils.hasLength(path)) {\n\t\t\treturn JsonPath.of(path);\n\t\t}\n\t\treturn JsonPath.ROOT_PATH;\n\t}\n\n\tprivate String jsonValue(Map<String, Object> map) {\n\t\ttry {\n\t\t\treturn jsonWriter.writeValueAsString(map);\n\t\t} catch (JsonProcessingException e) {\n\t\t\tthrow new ItemStreamException(\"Could not serialize to JSON\", e);\n\t\t}\n\t}\n\n}"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/operation/LpushCommand.java",
    "content": "package com.redis.riot.operation;\n\nimport java.util.Arrays;\nimport java.util.Map;\n\nimport com.redis.spring.batch.item.redis.writer.impl.Lpush;\n\nimport picocli.CommandLine.Command;\n\n@Command(name = \"lpush\", description = \"Insert values at the head of a list\")\npublic class LpushCommand extends AbstractMemberOperationCommand {\n\n\t@Override\n\tpublic Lpush<String, String, Map<String, Object>> operation() {\n\t\treturn new Lpush<>(keyFunction(), memberFunction().andThen(Arrays::asList));\n\t}\n\n}"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/operation/MemberOperationArgs.java",
    "content": "package com.redis.riot.operation;\n\nimport java.util.List;\n\nimport lombok.ToString;\nimport picocli.CommandLine.Option;\n\n@ToString\npublic class MemberOperationArgs {\n\n\t@Option(names = \"--member-space\", description = \"Keyspace prefix for member IDs.\", paramLabel = \"<str>\")\n\tprivate String memberSpace;\n\n\t@Option(arity = \"1..*\", names = \"--member\", description = \"Member field names for collections.\", paramLabel = \"<fields>\")\n\tprivate List<String> memberFields;\n\n\tpublic String getMemberSpace() {\n\t\treturn memberSpace;\n\t}\n\n\tpublic void setMemberSpace(String space) {\n\t\tthis.memberSpace = space;\n\t}\n\n\tpublic List<String> getMemberFields() {\n\t\treturn memberFields;\n\t}\n\n\tpublic void setMemberFields(List<String> fields) {\n\t\tthis.memberFields = fields;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/operation/OperationCommand.java",
    "content": "package com.redis.riot.operation;\n\nimport java.util.Map;\n\nimport com.redis.spring.batch.item.redis.common.Operation;\n\npublic interface OperationCommand {\n\n\tOperation<String, String, Map<String, Object>, Object> operation();\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/operation/RpushCommand.java",
    "content": "package com.redis.riot.operation;\n\nimport java.util.Arrays;\nimport java.util.Map;\n\nimport com.redis.spring.batch.item.redis.writer.impl.Rpush;\n\nimport picocli.CommandLine.Command;\n\n@Command(name = \"rpush\", description = \"Insert values at the tail of a list\")\npublic class RpushCommand extends AbstractMemberOperationCommand {\n\n\t@Override\n\tpublic Rpush<String, String, Map<String, Object>> operation() {\n\t\treturn new Rpush<>(keyFunction(), memberFunction().andThen(Arrays::asList));\n\t}\n\n}"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/operation/SaddCommand.java",
    "content": "package com.redis.riot.operation;\n\nimport java.util.Arrays;\nimport java.util.Map;\n\nimport com.redis.spring.batch.item.redis.writer.impl.Sadd;\n\nimport picocli.CommandLine.Command;\n\n@Command(name = \"sadd\", description = \"Add members to a set\")\npublic class SaddCommand extends AbstractMemberOperationCommand {\n\n\t@Override\n\tpublic Sadd<String, String, Map<String, Object>> operation() {\n\t\treturn new Sadd<>(keyFunction(), memberFunction().andThen(Arrays::asList));\n\t}\n\n}"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/operation/ScoreArgs.java",
    "content": "package com.redis.riot.operation;\n\nimport lombok.ToString;\nimport picocli.CommandLine.Option;\n\n@ToString\npublic class ScoreArgs {\n\n\tpublic static final double DEFAULT_SCORE = 1;\n\n\t@Option(names = \"--score\", description = \"Name of the field to use for scores.\", paramLabel = \"<field>\")\n\tprivate String field;\n\n\t@Option(names = \"--score-default\", description = \"Score when field not present (default: ${DEFAULT-VALUE}).\", paramLabel = \"<num>\")\n\tprivate double defaultValue = DEFAULT_SCORE;\n\n\tpublic String getField() {\n\t\treturn field;\n\t}\n\n\tpublic void setField(String field) {\n\t\tthis.field = field;\n\t}\n\n\tpublic double getDefaultValue() {\n\t\treturn defaultValue;\n\t}\n\n\tpublic void setDefaultValue(double defaultValue) {\n\t\tthis.defaultValue = defaultValue;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/operation/SetCommand.java",
    "content": "package com.redis.riot.operation;\n\nimport java.util.Map;\nimport java.util.function.Function;\n\nimport org.springframework.util.StringUtils;\n\nimport com.fasterxml.jackson.annotation.JsonInclude.Include;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport com.fasterxml.jackson.databind.SerializationFeature;\nimport com.fasterxml.jackson.dataformat.xml.XmlMapper;\nimport com.redis.riot.function.ObjectMapperFunction;\nimport com.redis.spring.batch.item.redis.writer.impl.Set;\n\nimport picocli.CommandLine.Command;\nimport picocli.CommandLine.Option;\n\n@Command(name = \"set\", description = \"Set strings from input\")\npublic class SetCommand extends AbstractOperationCommand {\n\n\tpublic enum StringFormat {\n\t\tXML, JSON\n\t}\n\n\tpublic static final StringFormat DEFAULT_FORMAT = StringFormat.JSON;\n\n\t@Option(names = \"--format\", description = \"Serialization: ${COMPLETION-CANDIDATES} (default: ${DEFAULT-VALUE}).\", paramLabel = \"<fmt>\")\n\tprivate StringFormat format = DEFAULT_FORMAT;\n\n\t@Option(names = \"--value\", description = \"Raw value field. Disables serialization.\", paramLabel = \"<field>\")\n\tprivate String value;\n\n\t@Option(names = \"--root\", description = \"XML root element name.\", paramLabel = \"<name>\")\n\tprivate String root;\n\n\t@Override\n\tpublic Set<String, String, Map<String, Object>> operation() {\n\t\treturn new Set<>(keyFunction(), value());\n\t}\n\n\tprivate Function<Map<String, Object>, String> value() {\n\t\tif (StringUtils.hasLength(value)) {\n\t\t\treturn toString(value);\n\t\t}\n\t\tif (format == StringFormat.XML) {\n\t\t\treturn new ObjectMapperFunction<>(new XmlMapper().writer().withRootName(root));\n\t\t}\n\t\tObjectMapper jsonMapper = new ObjectMapper();\n\t\tjsonMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);\n\t\tjsonMapper.setSerializationInclusion(Include.NON_NULL);\n\t\treturn new ObjectMapperFunction<>(jsonMapper.writer().withRootName(root));\n\t}\n\n}"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/operation/SugaddCommand.java",
    "content": "package com.redis.riot.operation;\n\nimport java.util.Map;\nimport java.util.function.Function;\n\nimport com.redis.lettucemod.search.Suggestion;\nimport com.redis.riot.function.ToSuggestion;\nimport com.redis.spring.batch.item.redis.writer.impl.Sugadd;\n\nimport picocli.CommandLine.ArgGroup;\nimport picocli.CommandLine.Command;\nimport picocli.CommandLine.Option;\n\n@Command(name = \"ft.sugadd\", description = \"Add suggestion strings to a RediSearch auto-complete dictionary\")\npublic class SugaddCommand extends AbstractOperationCommand {\n\n\t@Option(names = \"--value\", required = true, description = \"Field containing the suggestion to add.\", paramLabel = \"<field>\")\n\tprivate String stringField;\n\n\t@Option(names = \"--payload\", description = \"Field containing the payload.\", paramLabel = \"<field>\")\n\tprivate String payloadField;\n\n\t@Option(names = \"--increment\", description = \"Increment the existing suggestion by the score instead of replacing the score.\")\n\tprivate boolean increment;\n\n\t@ArgGroup(exclusive = false)\n\tprivate ScoreArgs scoreArgs = new ScoreArgs();\n\n\t@Override\n\tpublic Sugadd<String, String, Map<String, Object>> operation() {\n\t\tSugadd<String, String, Map<String, Object>> operation = new Sugadd<>(keyFunction(), suggestion());\n\t\toperation.setIncr(increment);\n\t\treturn operation;\n\t}\n\n\tprivate Function<Map<String, Object>, Suggestion<String>> suggestion() {\n\t\treturn new ToSuggestion<>(toString(stringField), score(scoreArgs), toString(payloadField));\n\t}\n\n\tpublic String getStringField() {\n\t\treturn stringField;\n\t}\n\n\tpublic void setStringField(String string) {\n\t\tthis.stringField = string;\n\t}\n\n\tpublic String getPayloadField() {\n\t\treturn payloadField;\n\t}\n\n\tpublic void setPayloadField(String payload) {\n\t\tthis.payloadField = payload;\n\t}\n\n\tpublic boolean isIncrement() {\n\t\treturn increment;\n\t}\n\n\tpublic void setIncrement(boolean increment) {\n\t\tthis.increment = increment;\n\t}\n\n\tpublic ScoreArgs getScoreArgs() {\n\t\treturn scoreArgs;\n\t}\n\n\tpublic void setScoreArgs(ScoreArgs scoreArgs) {\n\t\tthis.scoreArgs = scoreArgs;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/operation/TsAddCommand.java",
    "content": "package com.redis.riot.operation;\n\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.Collection;\nimport java.util.LinkedHashMap;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Map.Entry;\nimport java.util.function.Function;\nimport java.util.function.ToDoubleFunction;\nimport java.util.function.ToLongFunction;\n\nimport org.springframework.util.CollectionUtils;\n\nimport com.redis.lettucemod.timeseries.AddOptions;\nimport com.redis.lettucemod.timeseries.AddOptions.Builder;\nimport com.redis.lettucemod.timeseries.DuplicatePolicy;\nimport com.redis.lettucemod.timeseries.Sample;\nimport com.redis.riot.function.ToSample;\nimport com.redis.spring.batch.item.redis.writer.impl.TsAdd;\n\nimport io.lettuce.core.KeyValue;\nimport picocli.CommandLine.Command;\nimport picocli.CommandLine.Option;\n\n@Command(name = \"ts.add\", description = \"Add samples to RedisTimeSeries\")\npublic class TsAddCommand extends AbstractOperationCommand {\n\n\tpublic static final DuplicatePolicy DEFAULT_DUPLICATE_POLICY = DuplicatePolicy.LAST;\n\n\t@Option(names = \"--value\", required = true, description = \"Name of the field to use for values.\", paramLabel = \"<field>\")\n\tprivate String valueField;\n\n\t@Option(names = \"--timestamp\", description = \"Name of the field to use for timestamps. If unset, uses auto-timestamping.\", paramLabel = \"<field>\")\n\tprivate String timestampField;\n\n\t@Option(names = \"--on-duplicate\", description = \"Duplicate policy: ${COMPLETION-CANDIDATES} (default: ${DEFAULT-VALUE}).\", paramLabel = \"<name>\")\n\tprivate DuplicatePolicy duplicatePolicy = DEFAULT_DUPLICATE_POLICY;\n\n\t@Option(arity = \"1..*\", names = \"--label\", description = \"Labels in the form label1=field1 label2=field2...\", paramLabel = \"SPEL\")\n\tprivate Map<String, String> labels = new LinkedHashMap<>();\n\n\t@Override\n\tpublic TsAdd<String, String, Map<String, Object>> operation() {\n\t\tTsAdd<String, String, Map<String, Object>> operation = new TsAdd<>(keyFunction(), valueFunction());\n\t\toperation.setOptionsFunction(this::addOptions);\n\t\treturn operation;\n\t}\n\n\t@SuppressWarnings(\"unchecked\")\n\tprivate AddOptions<String, String> addOptions(Map<String, Object> source) {\n\t\tBuilder<String, String> builder = AddOptions.<String, String>builder().policy(duplicatePolicy);\n\t\tif (!CollectionUtils.isEmpty(labels)) {\n\t\t\tList<KeyValue<String, String>> labelList = new ArrayList<>();\n\t\t\tfor (Entry<String, String> label : labels.entrySet()) {\n\t\t\t\tif (source.containsKey(label.getValue())) {\n\t\t\t\t\tlabelList.add(KeyValue.just(label.getKey(), String.valueOf(source.get(label.getValue()))));\n\t\t\t\t}\n\t\t\t}\n\t\t\tbuilder.labels(labelList.toArray(new KeyValue[0]));\n\t\t}\n\t\treturn builder.build();\n\t}\n\n\tprivate Function<Map<String, Object>, Collection<Sample>> valueFunction() {\n\t\tToLongFunction<Map<String, Object>> timestamp = toLong(timestampField);\n\t\tToDoubleFunction<Map<String, Object>> value = toDouble(valueField, 0);\n\t\treturn new ToSample<>(timestamp, value).andThen(Arrays::asList);\n\t}\n\n\tpublic String getTimestampField() {\n\t\treturn timestampField;\n\t}\n\n\tpublic void setTimestampField(String timestampField) {\n\t\tthis.timestampField = timestampField;\n\t}\n\n\tpublic String getValueField() {\n\t\treturn valueField;\n\t}\n\n\tpublic void setValueField(String valueField) {\n\t\tthis.valueField = valueField;\n\t}\n\n\tpublic DuplicatePolicy getDuplicatePolicy() {\n\t\treturn duplicatePolicy;\n\t}\n\n\tpublic void setDuplicatePolicy(DuplicatePolicy duplicatePolicy) {\n\t\tthis.duplicatePolicy = duplicatePolicy;\n\t}\n\n\tpublic Map<String, String> getLabels() {\n\t\treturn labels;\n\t}\n\n\tpublic void setLabels(Map<String, String> labels) {\n\t\tthis.labels = labels;\n\t}\n\n}"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/operation/XaddCommand.java",
    "content": "package com.redis.riot.operation;\n\nimport java.util.Arrays;\nimport java.util.Collection;\nimport java.util.Map;\nimport java.util.function.Function;\n\nimport com.redis.spring.batch.item.redis.writer.impl.Xadd;\n\nimport io.lettuce.core.StreamMessage;\nimport io.lettuce.core.XAddArgs;\nimport picocli.CommandLine.ArgGroup;\nimport picocli.CommandLine.Command;\nimport picocli.CommandLine.Option;\n\n@Command(name = \"xadd\", description = \"Append entries to a stream\")\npublic class XaddCommand extends AbstractOperationCommand {\n\n\t@ArgGroup(exclusive = false)\n\tprivate FieldFilterArgs fieldFilterArgs = new FieldFilterArgs();\n\n\t@Option(names = \"--maxlen\", description = \"Stream maxlen.\", paramLabel = \"<int>\")\n\tprivate long maxlen;\n\n\t@Option(names = \"--trim\", description = \"Stream efficient trimming ('~' flag).\")\n\tprivate boolean approximateTrimming;\n\n\tprivate XAddArgs xAddArgs() {\n\t\tXAddArgs args = new XAddArgs();\n\t\tif (maxlen > 0) {\n\t\t\targs.maxlen(maxlen);\n\t\t}\n\t\targs.approximateTrimming(approximateTrimming);\n\t\treturn args;\n\t}\n\n\t@Override\n\tpublic Xadd<String, String, Map<String, Object>> operation() {\n\t\tXadd<String, String, Map<String, Object>> operation = new Xadd<>(keyFunction(), messageFunction());\n\t\toperation.setArgs(xAddArgs());\n\t\treturn operation;\n\t}\n\n\tprivate Function<Map<String, Object>, Collection<StreamMessage<String, String>>> messageFunction() {\n\t\tFunction<Map<String, Object>, String> keyFunction = keyFunction();\n\t\tFunction<Map<String, Object>, Map<String, String>> mapFunction = fieldFilterArgs.mapFunction();\n\t\treturn m -> Arrays.asList(new StreamMessage<>(keyFunction.apply(m), null, mapFunction.apply(m)));\n\t}\n\n\tpublic FieldFilterArgs getFieldFilterArgs() {\n\t\treturn fieldFilterArgs;\n\t}\n\n\tpublic void setFieldFilterArgs(FieldFilterArgs args) {\n\t\tthis.fieldFilterArgs = args;\n\t}\n\n\tpublic long getMaxlen() {\n\t\treturn maxlen;\n\t}\n\n\tpublic void setMaxlen(long maxlen) {\n\t\tthis.maxlen = maxlen;\n\t}\n\n\tpublic boolean isApproximateTrimming() {\n\t\treturn approximateTrimming;\n\t}\n\n\tpublic void setApproximateTrimming(boolean approximateTrimming) {\n\t\tthis.approximateTrimming = approximateTrimming;\n\t}\n\n}"
  },
  {
    "path": "plugins/riot/src/main/java/com/redis/riot/operation/ZaddCommand.java",
    "content": "package com.redis.riot.operation;\n\nimport java.util.Arrays;\nimport java.util.Map;\n\nimport com.redis.riot.function.ToScoredValue;\nimport com.redis.spring.batch.item.redis.writer.impl.Zadd;\n\nimport picocli.CommandLine.ArgGroup;\nimport picocli.CommandLine.Command;\n\n@Command(name = \"zadd\", description = \"Add members with scores to a sorted set\")\npublic class ZaddCommand extends AbstractMemberOperationCommand {\n\n\t@ArgGroup(exclusive = false)\n\tprivate ScoreArgs scoreArgs = new ScoreArgs();\n\n\t@Override\n\tpublic Zadd<String, String, Map<String, Object>> operation() {\n\t\treturn new Zadd<>(keyFunction(), scoredValueFunction().andThen(Arrays::asList));\n\t}\n\n\tprivate ToScoredValue<String, Map<String, Object>> scoredValueFunction() {\n\t\treturn new ToScoredValue<>(memberFunction(), score(scoreArgs));\n\t}\n\n\tpublic ScoreArgs getScoreArgs() {\n\t\treturn scoreArgs;\n\t}\n\n\tpublic void setScoreArgs(ScoreArgs scoreArgs) {\n\t\tthis.scoreArgs = scoreArgs;\n\t}\n\n}"
  },
  {
    "path": "plugins/riot/src/main/resources/com/redis/riot/banner.txt",
    "content": "      ▀        █     @|fg(4;1;1) ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄|@\n █ ██ █  ███  ████   @|fg(4;2;1) ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄|@\n ██   █ █   █  █     @|fg(5;4;1) ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄|@\n █    █ █   █  █     @|fg(1;4;1) ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄|@\n █    █  ███    ██   @|fg(0;3;4) ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄|@\n "
  },
  {
    "path": "plugins/riot/src/test/java/com/redis/riot/AbstractRiotApplicationTestBase.java",
    "content": "package com.redis.riot;\n\nimport java.util.Arrays;\nimport java.util.List;\n\nimport org.junit.jupiter.api.TestInfo;\nimport org.slf4j.simple.SimpleLogger;\n\nimport com.redis.riot.core.AbstractJobCommand;\nimport com.redis.riot.core.MainCommand;\nimport com.redis.riot.core.ProgressStyle;\nimport com.redis.riot.operation.OperationCommand;\nimport com.redis.riot.test.AbstractRiotTestBase;\n\nimport picocli.CommandLine.IExecutionStrategy;\nimport picocli.CommandLine.ParseResult;\n\nabstract class AbstractRiotApplicationTestBase extends AbstractRiotTestBase {\n\n\tprivate static final String PREFIX = \"riot \";\n\n\tstatic {\n\t\tSystem.setProperty(SimpleLogger.LOG_KEY_PREFIX + ReplicateWriteLogger.class.getName(), \"error\");\n\t}\n\n\t@Override\n\tprotected String getMainCommandPrefix() {\n\t\treturn PREFIX;\n\t}\n\n\t@Override\n\tprotected MainCommand mainCommand(TestInfo info, IExecutionStrategy... executionStrategies) {\n\t\treturn new TestRiot(info, executionStrategies);\n\t}\n\n\tprivate class TestRiot extends Riot {\n\n\t\tprivate final TestInfo info;\n\t\tprivate final List<IExecutionStrategy> configs;\n\n\t\tpublic TestRiot(TestInfo info, IExecutionStrategy... configs) {\n\t\t\tthis.info = info;\n\t\t\tthis.configs = Arrays.asList(configs);\n\t\t}\n\n\t\t@Override\n\t\tprotected int executionStrategy(ParseResult parseResult) {\n\t\t\tfor (ParseResult subParseResult : parseResult.subcommands()) {\n\t\t\t\tObject command = subParseResult.commandSpec().commandLine().getCommand();\n\t\t\t\tif (command instanceof OperationCommand) {\n\t\t\t\t\tcommand = subParseResult.commandSpec().parent().commandLine().getCommand();\n\t\t\t\t}\n\t\t\t\tif (command instanceof AbstractJobCommand) {\n\t\t\t\t\tAbstractJobCommand jobCommand = ((AbstractJobCommand) command);\n\t\t\t\t\tjobCommand.getJobArgs().getProgressArgs().setStyle(ProgressStyle.NONE);\n\t\t\t\t\tjobCommand.setJobName(name(info));\n\t\t\t\t}\n\t\t\t\tif (command instanceof AbstractRedisCommand) {\n\t\t\t\t\tconfigure(((AbstractRedisCommand) command).getRedisArgs());\n\t\t\t\t}\n\t\t\t\tif (command instanceof AbstractRedisExportCommand) {\n\t\t\t\t\tconfigure(((AbstractRedisExportCommand) command).getRedisArgs());\n\t\t\t\t}\n\t\t\t\tif (command instanceof AbstractRedisImportCommand) {\n\t\t\t\t\tconfigure(((AbstractRedisImportCommand) command).getRedisArgs());\n\t\t\t\t}\n\t\t\t\tif (command instanceof AbstractExportCommand) {\n\t\t\t\t\tAbstractExportCommand exportCommand = (AbstractExportCommand) command;\n\t\t\t\t\texportCommand.getReaderLiveArgs().setIdleTimeout(DEFAULT_IDLE_TIMEOUT);\n\t\t\t\t\texportCommand.getReaderLiveArgs().setEventQueueCapacity(DEFAULT_EVENT_QUEUE_CAPACITY);\n\t\t\t\t}\n\t\t\t\tif (command instanceof AbstractRedisTargetExportCommand) {\n\t\t\t\t\tAbstractRedisTargetExportCommand targetCommand = (AbstractRedisTargetExportCommand) command;\n\t\t\t\t\ttargetCommand.setSourceRedisUri(redisURI);\n\t\t\t\t\ttargetCommand.getSourceRedisArgs().setCluster(getRedisServer().isRedisCluster());\n\t\t\t\t\ttargetCommand.setTargetRedisUri(targetRedisURI);\n\t\t\t\t\ttargetCommand.getTargetRedisArgs().setCluster(getTargetRedisServer().isRedisCluster());\n\t\t\t\t}\n\t\t\t\tif (command instanceof Replicate) {\n\t\t\t\t\tReplicate replicateCommand = (Replicate) command;\n\t\t\t\t\treplicateCommand.setCompareMode(CompareMode.NONE);\n\t\t\t\t}\n\t\t\t}\n\t\t\tconfigs.forEach(c -> c.execute(parseResult));\n\t\t\treturn super.executionStrategy(parseResult);\n\t\t}\n\n\t\tprivate void configure(RedisArgs redisArgs) {\n\t\t\tredisArgs.setUri(redisURI);\n\t\t\tredisArgs.setCluster(getRedisServer().isRedisCluster());\n\t\t}\n\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/test/java/com/redis/riot/DbTests.java",
    "content": "package com.redis.riot;\n\nimport java.io.FileNotFoundException;\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.io.InputStreamReader;\nimport java.sql.Connection;\nimport java.sql.SQLException;\n\nimport javax.sql.DataSource;\n\nimport org.junit.jupiter.api.AfterAll;\nimport org.junit.jupiter.api.BeforeAll;\nimport org.junit.jupiter.api.TestInfo;\nimport org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;\nimport org.testcontainers.containers.JdbcDatabaseContainer;\n\nimport com.redis.testcontainers.RedisServer;\nimport com.redis.testcontainers.RedisStackContainer;\n\nimport picocli.CommandLine.ExitCode;\nimport picocli.CommandLine.ParseResult;\n\nabstract class DbTests extends AbstractRiotApplicationTestBase {\n\n\tprivate static final RedisStackContainer redis = new RedisStackContainer(\n\t\t\tRedisStackContainer.DEFAULT_IMAGE_NAME.withTag(RedisStackContainer.DEFAULT_TAG));\n\n\tprotected Connection dbConnection;\n\tprotected DataSource dataSource;\n\n\tprotected abstract JdbcDatabaseContainer<?> getJdbcDatabaseContainer();\n\n\t@BeforeAll\n\tpublic void setupContainers() throws SQLException {\n\t\tJdbcDatabaseContainer<?> container = getJdbcDatabaseContainer();\n\t\tcontainer.start();\n\t\tDataSourceProperties properties = new DataSourceProperties();\n\t\tproperties.setUrl(container.getJdbcUrl());\n\t\tproperties.setUsername(container.getUsername());\n\t\tproperties.setPassword(container.getPassword());\n\t\tdataSource = properties.initializeDataSourceBuilder().build();\n\t\tdbConnection = dataSource.getConnection();\n\t}\n\n\t@AfterAll\n\tpublic void teardownContainers() throws SQLException {\n\t\tif (dbConnection != null) {\n\t\t\tdbConnection.close();\n\t\t}\n\t\tgetJdbcDatabaseContainer().stop();\n\t}\n\n\t@Override\n\tprotected RedisServer getRedisServer() {\n\t\treturn redis;\n\t}\n\n\t@Override\n\tprotected RedisStackContainer getTargetRedisServer() {\n\t\treturn redis;\n\t}\n\n\tprotected void executeScript(String file) throws IOException, SQLException {\n\t\tSqlScriptRunner scriptRunner = new SqlScriptRunner(dbConnection);\n\t\tscriptRunner.setAutoCommit(false);\n\t\tscriptRunner.setStopOnError(true);\n\t\tInputStream inputStream = PostgresTests.class.getClassLoader().getResourceAsStream(file);\n\t\tif (inputStream == null) {\n\t\t\tthrow new FileNotFoundException(file);\n\t\t}\n\t\tscriptRunner.runScript(new InputStreamReader(inputStream));\n\t}\n\n\tprotected int executeDatabaseImport(ParseResult parseResult) {\n\t\tDatabaseImport command = command(parseResult);\n\t\tconfigureDatabase(command.getDataSourceArgs());\n\t\treturn ExitCode.OK;\n\t}\n\n\tprotected int executeDatabaseExport(ParseResult parseResult, TestInfo info) {\n\t\tDatabaseExport command = command(parseResult);\n\t\tcommand.setJobName(name(info));\n\t\tconfigureDatabase(command.getDataSourceArgs());\n\t\treturn ExitCode.OK;\n\t}\n\n\tprivate void configureDatabase(DataSourceArgs args) {\n\t\tJdbcDatabaseContainer<?> container = getJdbcDatabaseContainer();\n\t\targs.setUrl(container.getJdbcUrl());\n\t\targs.setUsername(container.getUsername());\n\t\targs.setPassword(container.getPassword());\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/test/java/com/redis/riot/FileTests.java",
    "content": "package com.redis.riot;\n\nimport static org.junit.jupiter.api.Assertions.assertEquals;\n\nimport java.io.File;\nimport java.io.FileOutputStream;\nimport java.io.IOException;\nimport java.nio.file.Files;\nimport java.nio.file.Path;\nimport java.util.List;\nimport java.util.Map;\n\nimport org.apache.commons.compress.utils.IOUtils;\nimport org.junit.jupiter.api.Assertions;\nimport org.junit.jupiter.api.BeforeAll;\nimport org.junit.jupiter.api.Test;\nimport org.junit.jupiter.api.TestInfo;\nimport org.springframework.util.StreamUtils;\n\nimport com.redis.riot.core.AbstractJobCommand;\nimport com.redis.riot.core.ProgressStyle;\nimport com.redis.riot.operation.HsetCommand;\nimport com.redis.spring.batch.item.redis.reader.KeyComparison;\nimport com.redis.spring.batch.item.redis.reader.KeyComparison.Status;\nimport com.redis.spring.batch.test.AbstractTargetTestBase;\n\nimport io.lettuce.core.RedisURI;\n\nabstract class FileTests extends AbstractTargetTestBase {\n\n\tpublic static final String BUCKET_URL = \"https://storage.googleapis.com/jrx/\";\n\tpublic static final String BEERS_JSON_URL = BUCKET_URL + \"beers.json\";\n\tpublic static final String BEERS_JSONL_URL = BUCKET_URL + \"beers.jsonl\";\n\n\tprivate static final String ID = \"id\";\n\tprivate static final String KEYSPACE = \"beer\";\n\n\tprivate static Path tempDir;\n\n\t@BeforeAll\n\tpublic void setupFiles() throws IOException {\n\t\ttempDir = Files.createTempDirectory(getClass().getName());\n\t}\n\n\tprotected Path tempFile(String filename) throws IOException {\n\t\tPath path = tempDir.resolve(filename);\n\t\tif (Files.exists(path)) {\n\t\t\tFiles.delete(path);\n\t\t}\n\t\treturn path;\n\t}\n\n\t@Test\n\tvoid fileImportJSON(TestInfo info) throws Exception {\n\t\tFileImport executable = new FileImport();\n\t\tconfigure(info, executable);\n\t\texecutable.setFiles(BEERS_JSON_URL);\n\t\tHsetCommand hset = new HsetCommand();\n\t\thset.setKeyspace(KEYSPACE);\n\t\thset.setKeyFields(ID);\n\t\texecutable.setImportOperationCommands(hset);\n\t\texecutable.setJobName(name(info));\n\t\texecutable.call();\n\n\t\tList<String> keys = redisCommands.keys(\"*\");\n\n\t\tassertEquals(216, keys.size());\n\t\tfor (String key : keys) {\n\t\t\tMap<String, String> map = redisCommands.hgetall(key);\n\t\t\tString id = map.get(ID);\n\t\t\tassertEquals(key, KEYSPACE + \":\" + id);\n\t\t}\n\t\tMap<String, String> beer1 = redisCommands.hgetall(KEYSPACE + \":1\");\n\t\tAssertions.assertEquals(\"Hocus Pocus\", beer1.get(\"name\"));\n\t}\n\n\t@Test\n\tvoid fileApiImportCSV(TestInfo info) throws Exception {\n\t\tFileImport executable = new FileImport();\n\t\tconfigure(info, executable);\n\t\texecutable.setFiles(\"https://storage.googleapis.com/jrx/beers.csv\");\n\t\texecutable.getFileReaderArgs().setHeader(true);\n\t\texecutable.setJobName(name(info));\n\t\tHsetCommand hset = new HsetCommand();\n\t\thset.setKeyspace(KEYSPACE);\n\t\thset.setKeyFields(ID);\n\t\texecutable.setImportOperationCommands(hset);\n\t\texecutable.call();\n\t\tList<String> keys = redisCommands.keys(\"*\");\n\t\tassertEquals(2410, keys.size());\n\t\tfor (String key : keys) {\n\t\t\tMap<String, String> map = redisCommands.hgetall(key);\n\t\t\tString id = map.get(ID);\n\t\t\tassertEquals(key, KEYSPACE + \":\" + id);\n\t\t}\n\t}\n\n\tprivate void configure(TestInfo info, AbstractRedisImportCommand callable) {\n\t\tconfigure(callable.getRedisArgs());\n\t\tconfigureJobCommand(info, callable);\n\t}\n\n\tprivate void configure(TestInfo info, AbstractRedisExportCommand callable) {\n\t\tconfigure(callable.getRedisArgs());\n\t\tconfigureJobCommand(info, callable);\n\t}\n\n\tprivate void configureJobCommand(TestInfo info, AbstractJobCommand callable) {\n\t\tcallable.setJobName(name(info));\n\t\tcallable.getJobArgs().getProgressArgs().setStyle(ProgressStyle.NONE);\n\t}\n\n\tprivate void configure(RedisArgs redisArgs) {\n\t\tredisArgs.setUri(RedisURI.create(getRedisServer().getRedisURI()));\n\t\tredisArgs.setCluster(getRedisServer().isRedisCluster());\n\t}\n\n\t@Test\n\tvoid fileApiFileExpansion(TestInfo info) throws Exception {\n\t\tPath temp = Files.createTempDirectory(\"fileExpansion\");\n\t\tFile file1 = temp.resolve(\"beers1.csv\").toFile();\n\t\tIOUtils.copy(getClass().getClassLoader().getResourceAsStream(\"files/beers1.csv\"), new FileOutputStream(file1));\n\t\tFileImport executable = new FileImport();\n\t\tconfigure(info, executable);\n\t\texecutable.setFiles(file1.getPath());\n\t\texecutable.getFileReaderArgs().setHeader(true);\n\t\texecutable.setJobName(name(info));\n\t\tHsetCommand operationBuilder = new HsetCommand();\n\t\toperationBuilder.setKeyspace(KEYSPACE);\n\t\toperationBuilder.setKeyFields(ID);\n\t\texecutable.setImportOperationCommands(operationBuilder);\n\t\texecutable.call();\n\t\tList<String> keys = redisCommands.keys(\"*\");\n\t\tassertEquals(2000, keys.size());\n\t\tfor (String key : keys) {\n\t\t\tMap<String, String> map = redisCommands.hgetall(key);\n\t\t\tString id = map.get(ID);\n\t\t\tassertEquals(key, KEYSPACE + \":\" + id);\n\t\t}\n\t}\n\n\t@Test\n\tvoid fileImportCSVMultiThreaded(TestInfo info) throws Exception {\n\t\tAbstractFileImport executable = new FileImport();\n\t\tconfigure(info, executable);\n\t\texecutable.setFiles(\"https://storage.googleapis.com/jrx/beers.csv\");\n\t\texecutable.getFileReaderArgs().setHeader(true);\n\t\texecutable.getJobArgs().setThreads(3);\n\t\texecutable.setJobName(name(info));\n\t\tHsetCommand operationBuilder = new HsetCommand();\n\t\toperationBuilder.setKeyspace(KEYSPACE);\n\t\toperationBuilder.setKeyFields(ID);\n\t\texecutable.setImportOperationCommands(operationBuilder);\n\t\texecutable.call();\n\t\tList<String> keys = redisCommands.keys(\"*\");\n\t\tassertEquals(2410, keys.size());\n\t\tfor (String key : keys) {\n\t\t\tMap<String, String> map = redisCommands.hgetall(key);\n\t\t\tString id = map.get(ID);\n\t\t\tassertEquals(key, KEYSPACE + \":\" + id);\n\t\t}\n\t}\n\n\t@Test\n\tvoid fileImportJSONL(TestInfo info) throws Exception {\n\t\tFileImport executable = new FileImport();\n\t\tconfigure(info, executable);\n\t\texecutable.setFiles(BEERS_JSONL_URL);\n\t\tHsetCommand hset = new HsetCommand();\n\t\thset.setKeyspace(KEYSPACE);\n\t\thset.setKeyFields(ID);\n\t\texecutable.setImportOperationCommands(hset);\n\t\texecutable.setJobName(name(info));\n\t\texecutable.call();\n\t\tList<String> keys = redisCommands.keys(\"*\");\n\t\tassertEquals(6, keys.size());\n\t\tfor (String key : keys) {\n\t\t\tMap<String, String> map = redisCommands.hgetall(key);\n\t\t\tString id = map.get(ID);\n\t\t\tassertEquals(key, KEYSPACE + \":\" + id);\n\t\t}\n\t\tMap<String, String> beer1 = redisCommands.hgetall(KEYSPACE + \":1\");\n\t\tAssertions.assertEquals(\"Hocus Pocus\", beer1.get(\"name\"));\n\t}\n\n\t@Test\n\tvoid fileExportImportJson(TestInfo info) throws Exception {\n\t\tfileExportImport(info, \"export.json\");\n\t}\n\n\t@Test\n\tvoid fileExportImportJsonl(TestInfo info) throws Exception {\n\t\tfileExportImport(info, \"export.jsonl\");\n\t}\n\n//\t@Test\n\tvoid fileExportImportXml(TestInfo info) throws Exception {\n\t\tfileExportImport(info, \"export.xml\");\n\t}\n\n\tprivate void fileExportImport(TestInfo info, String filename) throws Exception {\n\t\tgenerate(info, generator(100));\n\t\tString dirName = name(info);\n\t\tPath dir = Files.createTempDirectory(dirName);\n\t\tString file = dir.resolve(filename).toFile().getPath();\n\t\tFileExport fileExport = new FileExport();\n\t\tconfigure(info, fileExport);\n\t\tfileExport.setContentType(ContentType.STRUCT);\n\t\tfileExport.setFile(file);\n\t\tfileExport.call();\n\t\tFileImport fileImport = new FileImport();\n\t\tconfigure(info, fileImport);\n\t\tfileImport.setFiles(file);\n\t\tfileImport.getRedisArgs().setUri(RedisURI.create(getTargetRedisServer().getRedisURI()));\n\t\tfileImport.getRedisArgs().setCluster(getTargetRedisServer().isRedisCluster());\n\t\tfileImport.call();\n\t\tList<KeyComparison<String>> comparisons = compare(info);\n\t\tAssertions.assertFalse(comparisons.isEmpty());\n\t\tAssertions.assertFalse(comparisons.stream().anyMatch(c -> c.getStatus() != Status.OK));\n\t}\n\n\t@Test\n\tvoid fileImportRedisJson(TestInfo info) throws Exception {\n\t\tFile file = tempFile(\"fileImportRedisJson.json\").toFile();\n\t\tStreamUtils.copy(getClass().getClassLoader().getResourceAsStream(\"files/redis-export.json\"),\n\t\t\t\tnew FileOutputStream(file));\n\t\tFileImport fileImport = new FileImport();\n\t\tfileImport.getJobArgs().getProgressArgs().setStyle(ProgressStyle.NONE);\n\t\tfileImport.setFiles(file.toString());\n\t\tfileImport.getRedisArgs().setUri(redisURI);\n\t\tfileImport.call();\n\t\tAssertions.assertEquals(100, redisCommands.dbsize());\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/test/java/com/redis/riot/KeyValueSerdeTests.java",
    "content": "package com.redis.riot;\n\nimport java.nio.file.Files;\nimport java.nio.file.Path;\nimport java.time.Instant;\nimport java.util.Arrays;\nimport java.util.List;\nimport java.util.Map;\n\nimport org.junit.jupiter.api.Assertions;\nimport org.junit.jupiter.api.BeforeAll;\nimport org.junit.jupiter.api.Test;\nimport org.junit.jupiter.api.TestInfo;\nimport org.junit.jupiter.api.TestInstance;\nimport org.junit.jupiter.api.TestInstance.Lifecycle;\nimport org.springframework.batch.item.Chunk;\nimport org.springframework.batch.item.ExecutionContext;\nimport org.springframework.batch.item.json.JacksonJsonObjectMarshaller;\nimport org.springframework.core.io.FileSystemResource;\nimport org.springframework.util.unit.DataSize;\n\nimport com.fasterxml.jackson.core.JsonProcessingException;\nimport com.fasterxml.jackson.databind.DeserializationFeature;\nimport com.fasterxml.jackson.databind.JsonMappingException;\nimport com.fasterxml.jackson.databind.JsonNode;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport com.fasterxml.jackson.databind.ObjectReader;\nimport com.fasterxml.jackson.databind.module.SimpleModule;\nimport com.fasterxml.jackson.databind.node.ArrayNode;\nimport com.fasterxml.jackson.databind.node.DoubleNode;\nimport com.fasterxml.jackson.dataformat.xml.XmlMapper;\nimport com.redis.lettucemod.timeseries.Sample;\nimport com.redis.riot.file.xml.XmlResourceItemWriter;\nimport com.redis.riot.file.xml.XmlResourceItemWriterBuilder;\nimport com.redis.spring.batch.item.redis.common.KeyValue;\nimport com.redis.spring.batch.item.redis.gen.GeneratorItemReader;\nimport com.redis.spring.batch.item.redis.gen.ItemType;\n\n@TestInstance(Lifecycle.PER_CLASS)\nclass KeyValueSerdeTests {\n\n\tprivate static final String timeseries = \"{\\\"key\\\":\\\"gen:97\\\",\\\"type\\\":\\\"timeseries\\\",\\\"value\\\":[{\\\"timestamp\\\":1695939533285,\\\"value\\\":0.07027403662738285},{\\\"timestamp\\\":1695939533286,\\\"value\\\":0.7434808603018632},{\\\"timestamp\\\":1695939533287,\\\"value\\\":0.36481049906367213},{\\\"timestamp\\\":1695939533288,\\\"value\\\":0.08986928499552382},{\\\"timestamp\\\":1695939533289,\\\"value\\\":0.3901401870373925},{\\\"timestamp\\\":1695939533290,\\\"value\\\":0.1088584873055678},{\\\"timestamp\\\":1695939533291,\\\"value\\\":0.5649631025302376},{\\\"timestamp\\\":1695939533292,\\\"value\\\":0.9284983053028953},{\\\"timestamp\\\":1695939533293,\\\"value\\\":0.5009349293022067},{\\\"timestamp\\\":1695939533294,\\\"value\\\":0.7798297389022721}],\\\"ttl\\\":-1,\\\"memoryUsage\\\":0}\";\n\n\tprivate ObjectMapper mapper = new ObjectMapper();\n\n\t@BeforeAll\n\tvoid setup() {\n\t\tmapper.configure(DeserializationFeature.USE_LONG_FOR_INTS, true);\n\t\tSimpleModule module = new SimpleModule();\n\t\tmodule.addDeserializer(KeyValue.class, new KeyValueDeserializer());\n\t\tmapper.registerModule(module);\n\t}\n\n\t@SuppressWarnings(\"unchecked\")\n\t@Test\n\tvoid deserialize() throws JsonMappingException, JsonProcessingException {\n\t\tKeyValue<String> keyValue = mapper.readValue(timeseries, KeyValue.class);\n\t\tAssertions.assertEquals(\"gen:97\", keyValue.getKey());\n\t}\n\n\t@Test\n\tvoid serialize() throws JsonProcessingException {\n\t\tString key = \"ts:1\";\n\t\tlong memoryUsage = DataSize.ofGigabytes(1).toBytes();\n\t\tlong ttl = Instant.now().toEpochMilli();\n\t\tKeyValue<String> ts = new KeyValue<>();\n\t\tts.setKey(key);\n\t\tts.setMemoryUsage(memoryUsage);\n\t\tts.setTtl(ttl);\n\t\tts.setType(ItemType.TIMESERIES.getString());\n\t\tSample sample1 = Sample.of(Instant.now().toEpochMilli(), 123.456);\n\t\tSample sample2 = Sample.of(Instant.now().toEpochMilli() + 1000, 456.123);\n\t\tts.setValue(Arrays.asList(sample1, sample2));\n\t\tString json = mapper.writeValueAsString(ts);\n\t\tJsonNode jsonNode = mapper.readTree(json);\n\t\tAssertions.assertEquals(key, jsonNode.get(\"key\").asText());\n\t\tArrayNode valueNode = (ArrayNode) jsonNode.get(\"value\");\n\t\tAssertions.assertEquals(2, valueNode.size());\n\t\tAssertions.assertEquals(sample2.getValue(), ((DoubleNode) valueNode.get(1).get(\"value\")).asDouble());\n\t}\n\n\t@SuppressWarnings(\"unchecked\")\n\t@Test\n\tvoid serde(TestInfo info) throws Exception {\n\t\tGeneratorItemReader reader = new GeneratorItemReader();\n\t\treader.setMaxItemCount(17);\n\t\treader.open(new ExecutionContext());\n\t\tKeyValue<String> item;\n\t\twhile ((item = reader.read()) != null) {\n\t\t\tString json = mapper.writeValueAsString(item);\n\t\t\tKeyValue<String> result = mapper.readValue(json, KeyValue.class);\n\t\t\tassertEquals(item, result);\n\t\t}\n\t\treader.close();\n\t}\n\n\tprivate <K, T> void assertEquals(KeyValue<K> source, KeyValue<K> target) {\n\t\tAssertions.assertEquals(source.getMemoryUsage(), target.getMemoryUsage());\n\t\tAssertions.assertEquals(source.getTtl(), target.getTtl());\n\t\tAssertions.assertEquals(source.getType(), target.getType());\n\t\tAssertions.assertEquals(source.getKey(), target.getKey());\n\t\tAssertions.assertEquals(source.getValue(), target.getValue());\n\t}\n\n\t@Test\n\tvoid test() throws Exception {\n\t\tPath directory = Files.createTempDirectory(getClass().getName());\n\t\tPath file = directory.resolve(\"redis.xml\");\n\t\tXmlMapper mapper = new XmlMapper();\n\t\tmapper.setConfig(mapper.getSerializationConfig().withRootName(\"record\"));\n\t\tJacksonJsonObjectMarshaller<KeyValue<String>> marshaller = new JacksonJsonObjectMarshaller<>();\n\t\tmarshaller.setObjectMapper(mapper);\n\t\tXmlResourceItemWriter<KeyValue<String>> writer = new XmlResourceItemWriterBuilder<KeyValue<String>>()\n\t\t\t\t.name(\"xml-resource-writer\").resource(new FileSystemResource(file)).rootName(\"root\")\n\t\t\t\t.xmlObjectMarshaller(marshaller).build();\n\t\twriter.afterPropertiesSet();\n\t\twriter.open(new ExecutionContext());\n\t\tKeyValue<String> item1 = new KeyValue<>();\n\t\titem1.setKey(\"key1\");\n\t\titem1.setTtl(123l);\n\t\titem1.setType(KeyValue.TYPE_HASH);\n\t\tMap<String, String> hash1 = Map.of(\"field1\", \"value1\", \"field2\", \"value2\");\n\t\titem1.setValue(hash1);\n\t\tKeyValue<String> item2 = new KeyValue<>();\n\t\titem2.setKey(\"key2\");\n\t\titem2.setTtl(456l);\n\t\titem2.setType(KeyValue.TYPE_STREAM);\n\t\tMap<String, String> hash2 = Map.of(\"field1\", \"value1\", \"field2\", \"value2\");\n\t\titem2.setValue(hash2);\n\t\twriter.write(Chunk.of(item1, item2));\n\t\twriter.close();\n\t\tObjectReader reader = mapper.readerFor(KeyValue.class);\n\t\tList<KeyValue<String>> keyValues = reader.<KeyValue<String>>readValues(file.toFile()).readAll();\n\t\tAssertions.assertEquals(2, keyValues.size());\n\t\tAssertions.assertEquals(item1.getKey(), keyValues.get(0).getKey());\n\t\tAssertions.assertEquals(item2.getKey(), keyValues.get(1).getKey());\n\t\tAssertions.assertEquals(item1.getTtl(), keyValues.get(0).getTtl());\n\t\tAssertions.assertEquals(item2.getTtl(), keyValues.get(1).getTtl());\n\t\tAssertions.assertEquals((Object) item1.getValue(), keyValues.get(0).getValue());\n\t\tAssertions.assertEquals((Object) item2.getValue(), keyValues.get(1).getValue());\n\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/test/java/com/redis/riot/PostgresDeltaTests.java",
    "content": "package com.redis.riot;\n\nimport java.io.IOException;\nimport java.sql.SQLException;\nimport java.sql.Statement;\n\nimport org.junit.jupiter.api.BeforeAll;\nimport org.junit.jupiter.api.Test;\nimport org.junit.jupiter.api.TestInfo;\nimport org.junit.jupiter.api.condition.EnabledOnOs;\nimport org.junit.jupiter.api.condition.OS;\nimport org.testcontainers.containers.JdbcDatabaseContainer;\nimport org.testcontainers.containers.PostgreSQLContainer;\nimport org.testcontainers.utility.DockerImageName;\n\n@EnabledOnOs(value = OS.LINUX)\nclass PostgresDeltaTests extends DbTests {\n\n\tprivate static final DockerImageName postgresImage = DockerImageName.parse(PostgreSQLContainer.IMAGE)\n\t\t\t.withTag(PostgreSQLContainer.DEFAULT_TAG);\n\tprivate static final PostgreSQLContainer<?> postgres = new PostgreSQLContainer<>(postgresImage);\n\n\t@Override\n\tprotected JdbcDatabaseContainer<?> getJdbcDatabaseContainer() {\n\t\treturn postgres;\n\t}\n\n\t@BeforeAll\n\tvoid setupPostgres() throws SQLException, IOException {\n\t\texecuteScript(\"db/postgres-delta.sql\");\n\t}\n\n\t@Test\n\tvoid importDelta(TestInfo info) throws Exception {\n\t\ttry (Statement statement = dbConnection.createStatement()) {\n\t\t\tfor (int index = 0; index < 10; index++) {\n\t\t\t\tstatement.execute(\"INSERT INTO orders (order_date) VALUES (CURRENT_TIMESTAMP - INTERVAL '5 seconds')\");\n\t\t\t}\n\t\t}\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/test/java/com/redis/riot/PostgresTests.java",
    "content": "package com.redis.riot;\n\nimport java.io.IOException;\nimport java.sql.ResultSet;\nimport java.sql.SQLException;\nimport java.sql.Statement;\nimport java.time.LocalDate;\nimport java.time.format.DateTimeFormatter;\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport org.junit.jupiter.api.Assertions;\nimport org.junit.jupiter.api.BeforeAll;\nimport org.junit.jupiter.api.BeforeEach;\nimport org.junit.jupiter.api.Test;\nimport org.junit.jupiter.api.TestInfo;\nimport org.junit.jupiter.api.condition.EnabledOnOs;\nimport org.junit.jupiter.api.condition.OS;\nimport org.testcontainers.containers.JdbcDatabaseContainer;\nimport org.testcontainers.containers.PostgreSQLContainer;\nimport org.testcontainers.utility.DockerImageName;\n\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport com.fasterxml.jackson.databind.ObjectReader;\nimport com.redis.spring.batch.item.redis.gen.GeneratorItemReader;\nimport com.redis.spring.batch.item.redis.gen.ItemType;\n\n@EnabledOnOs(value = OS.LINUX)\nclass PostgresTests extends DbTests {\n\n\tprivate static final DockerImageName postgresImage = DockerImageName.parse(PostgreSQLContainer.IMAGE)\n\t\t\t.withTag(PostgreSQLContainer.DEFAULT_TAG);\n\tprivate static final PostgreSQLContainer<?> postgres = new PostgreSQLContainer<>(postgresImage);\n\n\t@Override\n\tprotected JdbcDatabaseContainer<?> getJdbcDatabaseContainer() {\n\t\treturn postgres;\n\t}\n\n\t@BeforeAll\n\tvoid setupPostgres() throws SQLException, IOException {\n\t\texecuteScript(\"db/northwind.sql\");\n\t}\n\n\t@BeforeEach\n\tvoid clearTables() throws SQLException {\n\t\ttry (Statement statement = dbConnection.createStatement()) {\n\t\t\tstatement.execute(\"DROP TABLE IF EXISTS mytable\");\n\t\t}\n\t}\n\n\t@Test\n\tvoid export(TestInfo info) throws Exception {\n\t\tString filename = \"db-export-postgresql\";\n\t\ttry (Statement statement = dbConnection.createStatement()) {\n\t\t\tstatement.execute(\"CREATE TABLE mytable (id smallint NOT NULL, field1 bpchar, field2 bpchar)\");\n\t\t\tstatement.execute(\"ALTER TABLE ONLY mytable ADD CONSTRAINT pk_mytable PRIMARY KEY (id)\");\n\t\t\tGeneratorItemReader generator = generator(73, ItemType.HASH);\n\t\t\tgenerate(info, generator);\n\t\t\texecute(info, filename, r -> executeDatabaseExport(r, info));\n\t\t\tstatement.execute(\"SELECT COUNT(*) AS count FROM mytable\");\n\t\t\tResultSet countResultSet = statement.getResultSet();\n\t\t\tcountResultSet.next();\n\t\t\tstatement.execute(\"SELECT * from mytable\");\n\t\t\tResultSet resultSet = statement.getResultSet();\n\t\t\tlong count = 0;\n\t\t\twhile (resultSet.next()) {\n\t\t\t\tAssertions.assertTrue(resultSet.getInt(\"id\") >= 0);\n\t\t\t\tAssertions.assertNotNull(resultSet.getString(\"field1\"));\n\t\t\t\tAssertions.assertNotNull(resultSet.getString(\"field2\"));\n\t\t\t\tcount++;\n\t\t\t}\n\t\t\tAssertions.assertEquals(redisCommands.dbsize(), count);\n\t\t}\n\t}\n\n\t@Test\n\tvoid nullValueExport(TestInfo info) throws Exception {\n\t\ttry (Statement statement = dbConnection.createStatement()) {\n\t\t\tstatement.execute(\"CREATE TABLE mytable (id smallint NOT NULL, field1 bpchar, field2 bpchar)\");\n\t\t\tstatement.execute(\"ALTER TABLE ONLY mytable ADD CONSTRAINT pk_mytable PRIMARY KEY (id)\");\n\t\t\tMap<String, String> hash1 = new HashMap<>();\n\t\t\thash1.put(\"field1\", \"value1\");\n\t\t\thash1.put(\"field2\", \"value2\");\n\t\t\tredisCommands.hmset(\"gen:1\", hash1);\n\t\t\tMap<String, String> hash2 = new HashMap<>();\n\t\t\thash2.put(\"field2\", \"value2\");\n\t\t\tredisCommands.hmset(\"gen:2\", hash2);\n\t\t\texecute(info, \"db-export-postgresql\", r -> executeDatabaseExport(r, info));\n\t\t\tstatement.execute(\"SELECT COUNT(*) AS count FROM mytable\");\n\t\t\tResultSet countResultSet = statement.getResultSet();\n\t\t\tcountResultSet.next();\n\t\t\tAssertions.assertEquals(2, countResultSet.getInt(1));\n\t\t\tstatement.execute(\"SELECT * from mytable ORDER BY id ASC\");\n\t\t\tResultSet resultSet = statement.getResultSet();\n\t\t\tint index = 0;\n\t\t\twhile (resultSet.next()) {\n\t\t\t\tAssertions.assertEquals(index + 1, resultSet.getInt(\"id\"));\n\t\t\t\tindex++;\n\t\t\t}\n\t\t\tAssertions.assertEquals(redisCommands.dbsize().longValue(), index);\n\t\t}\n\t}\n\n\t@Test\n\tvoid hashImport(TestInfo info) throws Exception {\n\t\texecute(info, \"db-import-postgresql\", this::executeDatabaseImport);\n\t\ttry (Statement statement = dbConnection.createStatement()) {\n\t\t\tstatement.execute(\"SELECT COUNT(*) AS count FROM orders\");\n\t\t\tResultSet resultSet = statement.getResultSet();\n\t\t\tresultSet.next();\n\t\t\tAssertions.assertEquals(resultSet.getLong(\"count\"), keyCount(\"order:*\"));\n\t\t\tMap<String, String> order = redisCommands.hgetall(\"order:10248\");\n\t\t\tAssertions.assertEquals(\"10248\", order.get(\"order_id\"));\n\t\t\tAssertions.assertEquals(\"VINET\", order.get(\"customer_id\"));\n\t\t}\n\t}\n\n\t@Test\n\tvoid multiThreadedImport(TestInfo info) throws Exception {\n\t\texecute(info, \"db-import-postgresql-multithreaded\", this::executeDatabaseImport);\n\t\tint count = keyCount(\"order:*\");\n\t\ttry (Statement statement = dbConnection.createStatement()) {\n\t\t\ttry (ResultSet resultSet = statement.executeQuery(\"SELECT COUNT(*) AS count FROM orders\")) {\n\t\t\t\tAssertions.assertTrue(resultSet.next());\n\t\t\t\tAssertions.assertEquals(resultSet.getLong(\"count\"), count);\n\t\t\t}\n\t\t\tMap<String, String> order = redisCommands.hgetall(\"order:10248\");\n\t\t\tAssertions.assertEquals(\"10248\", order.get(\"order_id\"));\n\t\t\tAssertions.assertEquals(\"VINET\", order.get(\"customer_id\"));\n\t\t}\n\t}\n\n\t@Test\n\tvoid setImport(TestInfo info) throws Exception {\n\t\texecute(info, \"db-import-postgresql-set\", this::executeDatabaseImport);\n\t\ttry (Statement statement = dbConnection.createStatement()) {\n\t\t\tstatement.execute(\"SELECT * FROM orders\");\n\t\t\tResultSet resultSet = statement.getResultSet();\n\t\t\tlong count = 0;\n\t\t\twhile (resultSet.next()) {\n\t\t\t\tint orderId = resultSet.getInt(\"order_id\");\n\t\t\t\tString order = redisCommands.get(\"order:\" + orderId);\n\t\t\t\tObjectMapper mapper = new ObjectMapper();\n\t\t\t\tObjectReader reader = mapper.readerFor(Map.class);\n\t\t\t\tMap<String, Object> orderMap = reader.readValue(order);\n\t\t\t\tAssertions.assertEquals(orderId, orderMap.get(\"order_id\"));\n\t\t\t\tAssertions.assertEquals(resultSet.getString(\"customer_id\"), orderMap.get(\"customer_id\"));\n\t\t\t\tAssertions.assertEquals(resultSet.getInt(\"employee_id\"), orderMap.get(\"employee_id\"));\n\t\t\t\tAssertions.assertEquals(resultSet.getDate(\"order_date\"), java.sql.Date.valueOf(\n\t\t\t\t\t\tLocalDate.from(DateTimeFormatter.ISO_DATE.parse((String) orderMap.get(\"order_date\")))));\n\t\t\t\tAssertions.assertEquals(resultSet.getFloat(\"freight\"), ((Double) orderMap.get(\"freight\")).floatValue(),\n\t\t\t\t\t\t0);\n\t\t\t\tcount++;\n\t\t\t}\n\t\t\tAssertions.assertEquals(count, keyCount(\"order:*\"));\n\t\t}\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/test/java/com/redis/riot/ProcessorTests.java",
    "content": "package com.redis.riot;\n\nimport static org.junit.jupiter.api.Assertions.assertFalse;\nimport static org.junit.jupiter.api.Assertions.assertTrue;\n\nimport java.util.Arrays;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.function.Predicate;\n\nimport org.junit.jupiter.api.Assertions;\nimport org.junit.jupiter.api.Test;\n\nimport com.redis.riot.core.processor.StringToMapFunction;\nimport com.redis.riot.function.KeyValueMap;\nimport com.redis.spring.batch.item.redis.common.KeyValue;\nimport com.redis.spring.batch.item.redis.common.Range;\n\nimport io.lettuce.core.cluster.SlotHash;\nimport io.lettuce.core.codec.StringCodec;\n\nclass ProcessorTests {\n\n\tprivate Predicate<String> keyFilter(KeyFilterArgs args) {\n\t\treturn args.predicate(StringCodec.UTF8).get();\n\t}\n\n\t@Test\n\tvoid keyFilter() {\n\t\tKeyFilterArgs options = new KeyFilterArgs();\n\t\toptions.setIncludes(Arrays.asList(\"foo*\", \"bar*\"));\n\t\tPredicate<String> predicate = keyFilter(options);\n\t\tAssertions.assertTrue(predicate.test(\"foobar\"));\n\t\tAssertions.assertTrue(predicate.test(\"barfoo\"));\n\t\tAssertions.assertFalse(predicate.test(\"key\"));\n\t}\n\n\t@Test\n\tvoid slotExact() {\n\t\tKeyFilterArgs options = new KeyFilterArgs();\n\t\toptions.setSlots(Arrays.asList(new Range(7638, 7638)));\n\t\tPredicate<String> predicate = keyFilter(options);\n\t\tassertTrue(predicate.test(\"abc\"));\n\t\tassertFalse(predicate.test(\"abcd\"));\n\t}\n\n\t@Test\n\tvoid slotRange() {\n\t\tKeyFilterArgs options = new KeyFilterArgs();\n\t\toptions.setSlots(slotRangeList(0, SlotHash.SLOT_COUNT));\n\t\tPredicate<String> unbounded = keyFilter(options);\n\t\tassertTrue(unbounded.test(\"foo\"));\n\t\tassertTrue(unbounded.test(\"foo1\"));\n\t\toptions.setSlots(slotRangeList(999999, 999999));\n\t\tPredicate<String> is999999 = keyFilter(options);\n\t\tassertFalse(is999999.test(\"foo\"));\n\t}\n\n\tprivate List<Range> slotRangeList(int start, int end) {\n\t\treturn Arrays.asList(new Range(start, end));\n\t}\n\n\t@Test\n\tvoid kitchenSink() {\n\t\tKeyFilterArgs options = new KeyFilterArgs();\n\t\toptions.setExcludes(Arrays.asList(\"foo\"));\n\t\toptions.setIncludes(Arrays.asList(\"foo1\"));\n\t\toptions.setSlots(Arrays.asList(new Range(0, SlotHash.SLOT_COUNT)));\n\t\tPredicate<String> predicate = keyFilter(options);\n\t\tassertFalse(predicate.test(\"foo\"));\n\t\tassertFalse(predicate.test(\"bar\"));\n\t\tassertTrue(predicate.test(\"foo1\"));\n\t}\n\n\t@Test\n\tvoid keyValueToMap() {\n\t\tKeyValueMap processor = new KeyValueMap();\n\t\tKeyValue<String> string = new KeyValue<>();\n\t\tstring.setKey(\"beer:1\");\n\t\tstring.setType(KeyValue.TYPE_STRING);\n\t\tString value = \"sdfsdf\";\n\t\tstring.setValue(value);\n\t\tMap<String, ?> stringMap = processor.apply(string);\n\t\tAssertions.assertEquals(value, stringMap.get(StringToMapFunction.DEFAULT_KEY));\n\t\tKeyValue<String> hash = new KeyValue<>();\n\t\thash.setKey(\"beer:2\");\n\t\thash.setType(KeyValue.TYPE_HASH);\n\t\tMap<String, String> map = new HashMap<>();\n\t\tmap.put(\"field1\", \"value1\");\n\t\thash.setValue(map);\n\t\tMap<String, ?> hashMap = processor.apply(hash);\n\t\tAssertions.assertEquals(\"value1\", hashMap.get(\"field1\"));\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/test/java/com/redis/riot/REServerStack.java",
    "content": "package com.redis.riot;\n\nimport org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable;\n\nimport com.redis.enterprise.testcontainers.RedisEnterpriseServer;\nimport com.redis.testcontainers.RedisStackContainer;\n\n@EnabledIfEnvironmentVariable(named = RedisEnterpriseServer.ENV_HOST, matches = \".*\")\nclass REServerStack extends RiotTests {\n\n\tprivate static final RedisEnterpriseServer source = RedisContainerFactory.enterpriseServer();\n\tprivate static final RedisStackContainer target = RedisContainerFactory.stack();\n\n\t@Override\n\tprotected RedisEnterpriseServer getRedisServer() {\n\t\treturn source;\n\t}\n\n\t@Override\n\tprotected RedisStackContainer getTargetRedisServer() {\n\t\treturn target;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/test/java/com/redis/riot/REStack.java",
    "content": "package com.redis.riot;\n\nimport org.junit.jupiter.api.condition.EnabledOnOs;\nimport org.junit.jupiter.api.condition.OS;\n\nimport com.redis.enterprise.testcontainers.RedisEnterpriseContainer;\nimport com.redis.testcontainers.RedisStackContainer;\n\n@EnabledOnOs(OS.LINUX)\nclass REStack extends RiotTests {\n\n\tprivate static final RedisEnterpriseContainer source = RedisContainerFactory.enterprise();\n\tprivate static final RedisStackContainer target = RedisContainerFactory.stack();\n\n\t@Override\n\tprotected RedisEnterpriseContainer getRedisServer() {\n\t\treturn source;\n\t}\n\n\t@Override\n\tprotected RedisStackContainer getTargetRedisServer() {\n\t\treturn target;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/test/java/com/redis/riot/RedisArgsTests.java",
    "content": "package com.redis.riot;\n\nimport org.junit.jupiter.api.Assertions;\nimport org.junit.jupiter.api.Test;\n\nimport io.lettuce.core.RedisURI;\nimport picocli.CommandLine.Range;\n\nclass RedisArgsTests {\n\n\t@Test\n\tvoid redisArgsURI() {\n\t\tRedisArgs args = new RedisArgs();\n\t\tRedisURI baseUri = RedisURI.create(\"redis://localhost\");\n\t\targs.setUri(baseUri);\n\t\targs.setClientName(\"ansdf\");\n\t\tRedisURI uri = RedisContext.of(args.getUri(), args).getUri();\n\t\tAssertions.assertEquals(baseUri.getHost(), uri.getHost());\n\t\tAssertions.assertEquals(baseUri.getPort(), uri.getPort());\n\t\tAssertions.assertEquals(args.getClientName(), uri.getClientName());\n\t}\n\n\t@Test\n\tvoid parseRedisURI() {\n\t\tString host = \"blah\";\n\t\tint port = 123;\n\t\tRedisURI uri = new RedisURIConverter().convert(host + \":\" + port);\n\t\tAssertions.assertEquals(host, uri.getHost());\n\t\tAssertions.assertEquals(port, uri.getPort());\n\t}\n\n\t@Test\n\tvoid parseRange() {\n\t\tAssertions.assertEquals(new Range(123, 123, false, false, null), Range.valueOf(\"123\"));\n\t\tAssertions.assertEquals(new Range(0, 123, false, false, null), Range.valueOf(\"0..123\"));\n\t\tAssertions.assertEquals(new Range(123, Integer.MAX_VALUE, true, false, null), Range.valueOf(\"123..*\"));\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/test/java/com/redis/riot/RedisContainerFactory.java",
    "content": "package com.redis.riot;\n\nimport com.redis.enterprise.Database;\nimport com.redis.enterprise.RedisModule;\nimport com.redis.enterprise.testcontainers.RedisEnterpriseContainer;\nimport com.redis.enterprise.testcontainers.RedisEnterpriseServer;\nimport com.redis.testcontainers.RedisStackContainer;\n\npublic interface RedisContainerFactory {\n\n\tString ENTERPRISE_TAG = \"7.4.6-102\";\n\tString STACK_TAG = \"7.2.0-v13\";\n\n\tstatic RedisStackContainer stack() {\n\t\treturn new RedisStackContainer(RedisStackContainer.DEFAULT_IMAGE_NAME.withTag(STACK_TAG));\n\t}\n\n\t@SuppressWarnings(\"resource\")\n\tstatic RedisEnterpriseContainer enterprise() {\n\t\treturn new RedisEnterpriseContainer(RedisEnterpriseContainer.DEFAULT_IMAGE_NAME.withTag(ENTERPRISE_TAG))\n\t\t\t\t.withDatabase(Database.builder().name(\"BatchTests\").memoryMB(50).ossCluster(true)\n\t\t\t\t\t\t.modules(RedisModule.TIMESERIES, RedisModule.JSON, RedisModule.SEARCH).build());\n\t}\n\n\tstatic RedisEnterpriseServer enterpriseServer() {\n\t\tRedisEnterpriseServer server = new RedisEnterpriseServer();\n\t\tserver.withDatabase(Database.builder().shardCount(2).port(12001).ossCluster(true)\n\t\t\t\t.modules(RedisModule.JSON, RedisModule.SEARCH, RedisModule.TIMESERIES).build());\n\t\treturn server;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/test/java/com/redis/riot/RiotTests.java",
    "content": "package com.redis.riot;\n\nimport java.time.Duration;\nimport java.util.Arrays;\nimport java.util.HashMap;\nimport java.util.Map;\nimport java.util.function.Predicate;\n\nimport org.junit.jupiter.api.Assertions;\nimport org.junit.jupiter.api.BeforeAll;\nimport org.junit.jupiter.api.Test;\nimport org.junit.jupiter.api.TestInfo;\nimport org.slf4j.simple.SimpleLogger;\nimport org.testcontainers.shaded.org.bouncycastle.util.encoders.Hex;\n\nimport com.redis.lettucemod.RedisModulesUtils;\nimport com.redis.lettucemod.api.StatefulRedisModulesConnection;\nimport com.redis.riot.core.ProgressStyle;\nimport com.redis.spring.batch.item.redis.RedisItemReader.ReaderMode;\nimport com.redis.spring.batch.item.redis.common.Range;\nimport com.redis.spring.batch.item.redis.gen.GeneratorItemReader;\nimport com.redis.spring.batch.item.redis.gen.ItemType;\n\nimport io.lettuce.core.cluster.SlotHash;\nimport io.lettuce.core.codec.ByteArrayCodec;\n\nabstract class RiotTests extends AbstractRiotApplicationTestBase {\n\n\tpublic static final String BEERS_JSON_URL = \"https://storage.googleapis.com/jrx/beers.json\";\n\tpublic static final int BEER_CSV_COUNT = 2410;\n\tpublic static final int BEER_JSON_COUNT = 216;\n\n\t@BeforeAll\n\tvoid setDefaults() {\n\t\tsetIdleTimeout(Duration.ofSeconds(1));\n\t}\n\n\tprotected void runLiveReplication(TestInfo info, String filename) throws Exception {\n\t\tItemType[] types = new ItemType[] { ItemType.HASH, ItemType.STRING };\n\t\tenableKeyspaceNotifications();\n\t\tgenerate(info, generator(3000, types));\n\t\tGeneratorItemReader generator = generator(3500, types);\n\t\tgenerator.setCurrentItemCount(3001);\n\t\tgenerateAsync(testInfo(info, \"async\"), generator);\n\t\texecute(info, filename);\n\t\tassertCompare(info);\n\t}\n\n\tprotected static String name(Map<String, String> beer) {\n\t\treturn beer.get(\"name\");\n\t}\n\n\tprotected static String style(Map<String, String> beer) {\n\t\treturn beer.get(\"style\");\n\t}\n\n\tprotected static double abv(Map<String, String> beer) {\n\t\treturn Double.parseDouble(beer.get(\"abv\"));\n\t}\n\n\tprotected void execute(Replicate replicate, TestInfo info) throws Exception {\n\t\tSystem.setProperty(SimpleLogger.LOG_KEY_PREFIX + ReplicateWriteLogger.class.getName(), \"error\");\n\t\treplicate.getJobArgs().getProgressArgs().setStyle(ProgressStyle.NONE);\n\t\treplicate.setJobName(name(info));\n\t\treplicate.setJobRepository(jobRepository);\n\t\treplicate.setSourceRedisUri(redisURI);\n\t\treplicate.getSourceRedisArgs().setCluster(getRedisServer().isRedisCluster());\n\t\treplicate.setTargetRedisUri(targetRedisURI);\n\t\treplicate.getTargetRedisArgs().setCluster(getTargetRedisServer().isRedisCluster());\n\t\treplicate.getReaderLiveArgs().setIdleTimeout(DEFAULT_IDLE_TIMEOUT);\n\t\treplicate.call();\n\t}\n\n\t@Test\n\tvoid replicateBinaryStruct(TestInfo info) throws Exception {\n\t\tbyte[] key = Hex.decode(\"aced0005\");\n\t\tbyte[] value = Hex.decode(\"aced0004\");\n\t\tMap<byte[], byte[]> hash = new HashMap<>();\n\t\thash.put(key, value);\n\t\tStatefulRedisModulesConnection<byte[], byte[]> connection = RedisModulesUtils.connection(redisClient,\n\t\t\t\tByteArrayCodec.INSTANCE);\n\t\tStatefulRedisModulesConnection<byte[], byte[]> targetConnection = RedisModulesUtils\n\t\t\t\t.connection(targetRedisClient, ByteArrayCodec.INSTANCE);\n\t\tconnection.sync().hset(key, hash);\n\t\tReplicate replication = new Replicate();\n\t\treplication.setCompareMode(CompareMode.NONE);\n\t\treplication.setStruct(true);\n\t\texecute(replication, info);\n\t\tAssertions.assertArrayEquals(connection.sync().hget(key, key), targetConnection.sync().hget(key, key));\n\t}\n\n\t@Test\n\tvoid replicateBinaryKeyValueScan(TestInfo info) throws Exception {\n\t\tbyte[] key = Hex.decode(\"aced0005\");\n\t\tbyte[] value = Hex.decode(\"aced0004\");\n\t\tStatefulRedisModulesConnection<byte[], byte[]> connection = RedisModulesUtils.connection(redisClient,\n\t\t\t\tByteArrayCodec.INSTANCE);\n\t\tStatefulRedisModulesConnection<byte[], byte[]> targetConnection = RedisModulesUtils\n\t\t\t\t.connection(targetRedisClient, ByteArrayCodec.INSTANCE);\n\t\tconnection.sync().set(key, value);\n\t\tReplicate replication = new Replicate();\n\t\treplication.setCompareMode(CompareMode.NONE);\n\t\texecute(replication, info);\n\t\tAssertions.assertArrayEquals(connection.sync().get(key), targetConnection.sync().get(key));\n\t}\n\n\t@Test\n\tvoid replicateBinaryKeyLive(TestInfo info) throws Exception {\n\t\tbyte[] key = Hex.decode(\"aced0005\");\n\t\tbyte[] value = Hex.decode(\"aced0004\");\n\t\tStatefulRedisModulesConnection<byte[], byte[]> connection = RedisModulesUtils.connection(redisClient,\n\t\t\t\tByteArrayCodec.INSTANCE);\n\t\tStatefulRedisModulesConnection<byte[], byte[]> targetConnection = RedisModulesUtils\n\t\t\t\t.connection(targetRedisClient, ByteArrayCodec.INSTANCE);\n\t\tenableKeyspaceNotifications();\n\t\texecuteWhenSubscribers(() -> connection.sync().set(key, value));\n\t\tReplicate replicate = new Replicate();\n\t\treplicate.setMode(ReaderMode.LIVE);\n\t\treplicate.setCompareMode(CompareMode.NONE);\n\t\texecute(replicate, info);\n\t\tAssertions.assertArrayEquals(connection.sync().get(key), targetConnection.sync().get(key));\n\t}\n\n\t@Test\n\tvoid filterKeySlot(TestInfo info) throws Exception {\n\t\tenableKeyspaceNotifications();\n\t\tReplicate replication = new Replicate();\n\t\treplication.setMode(ReaderMode.LIVE);\n\t\treplication.setCompareMode(CompareMode.NONE);\n\t\treplication.getReaderArgs().getKeyFilterArgs().setSlots(Arrays.asList(new Range(0, 8000)));\n\t\tgenerateAsync(info, generator(100));\n\t\texecute(replication, info);\n\t\tAssertions.assertTrue(targetRedisCommands.keys(\"*\").stream().map(SlotHash::getSlot).allMatch(between(0, 8000)));\n\t}\n\n\tprivate Predicate<Integer> between(int start, int end) {\n\t\treturn i -> i >= 0 && i <= end;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/test/java/com/redis/riot/SqlScriptRunner.java",
    "content": "package com.redis.riot;\n\nimport java.io.IOException;\nimport java.io.LineNumberReader;\nimport java.io.Reader;\nimport java.sql.Connection;\nimport java.sql.ResultSet;\nimport java.sql.ResultSetMetaData;\nimport java.sql.SQLException;\nimport java.sql.Statement;\nimport java.util.logging.Level;\nimport java.util.logging.Logger;\n\n/**\n * Tool to run database scripts\n */\npublic class SqlScriptRunner {\n\n\tprivate static final String DEFAULT_DELIMITER = \";\";\n\n\tprivate final Logger log = Logger.getLogger(SqlScriptRunner.class.getName());\n\n\tprivate final Connection connection;\n\n\tprivate boolean stopOnError;\n\tprivate boolean autoCommit;\n\tprivate String delimiter = DEFAULT_DELIMITER;\n\tprivate boolean fullLineDelimiter;\n\n\tpublic SqlScriptRunner(Connection connection) {\n\t\tthis.connection = connection;\n\t}\n\n\tpublic void setStopOnError(boolean stopOnError) {\n\t\tthis.stopOnError = stopOnError;\n\t}\n\n\tpublic void setAutoCommit(boolean autoCommit) {\n\t\tthis.autoCommit = autoCommit;\n\t}\n\n\tpublic void setDelimiter(String delimiter) {\n\t\tthis.delimiter = delimiter;\n\t}\n\n\tpublic void setFullLineDelimiter(boolean fullLineDelimiter) {\n\t\tthis.fullLineDelimiter = fullLineDelimiter;\n\t}\n\n\t/**\n\t * Runs an SQL script (read in using the Reader parameter)\n\t *\n\t * @param reader - the source of the script\n\t */\n\tpublic void runScript(Reader reader) throws IOException, SQLException {\n\t\tboolean originalAutoCommit = connection.getAutoCommit();\n\t\ttry {\n\t\t\tif (originalAutoCommit != this.autoCommit) {\n\t\t\t\tconnection.setAutoCommit(this.autoCommit);\n\t\t\t}\n\t\t\trunScript(connection, reader);\n\t\t} finally {\n\t\t\tconnection.setAutoCommit(originalAutoCommit);\n\t\t}\n\t}\n\n\t/**\n\t * Runs an SQL script (read in using the Reader parameter) using the connection\n\t * passed in\n\t *\n\t * @param conn   - the connection to use for the script\n\t * @param reader - the source of the script\n\t * @throws SQLException if any SQL errors occur\n\t * @throws IOException  if there is an error reading from the Reader\n\t */\n\t@SuppressWarnings(\"unused\")\n\tprivate void runScript(Connection conn, Reader reader) throws IOException, SQLException {\n\t\tStringBuffer command = null;\n\t\tLineNumberReader lineReader = new LineNumberReader(reader);\n\t\tString line;\n\t\twhile ((line = lineReader.readLine()) != null) {\n\t\t\tif (command == null) {\n\t\t\t\tcommand = new StringBuffer();\n\t\t\t}\n\t\t\tString trimmedLine = line.trim();\n\t\t\tif (trimmedLine.startsWith(\"--\")) {\n\t\t\t\tlog.fine(trimmedLine);\n\t\t\t} else if (trimmedLine.length() < 1 || trimmedLine.startsWith(\"//\")) {\n\t\t\t\t// Do nothing\n\t\t\t} else if (trimmedLine.length() < 1 || trimmedLine.startsWith(\"--\")) {\n\t\t\t\t// Do nothing\n\t\t\t} else if (!fullLineDelimiter && trimmedLine.endsWith(delimiter)\n\t\t\t\t\t|| fullLineDelimiter && trimmedLine.equals(delimiter)) {\n\t\t\t\tcommand.append(line, 0, line.lastIndexOf(delimiter));\n\t\t\t\tcommand.append(\" \");\n\t\t\t\tStatement statement = conn.createStatement();\n\n\t\t\t\tlog.fine(command.toString());\n\n\t\t\t\tboolean hasResults = false;\n\t\t\t\tif (stopOnError) {\n\t\t\t\t\thasResults = statement.execute(command.toString());\n\t\t\t\t} else {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tstatement.execute(command.toString());\n\t\t\t\t\t} catch (SQLException e) {\n\t\t\t\t\t\tlog.log(Level.SEVERE, \"Error executing: \" + command, e);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (autoCommit && !conn.getAutoCommit()) {\n\t\t\t\t\tconn.commit();\n\t\t\t\t}\n\n\t\t\t\tResultSet rs = statement.getResultSet();\n\t\t\t\tif (hasResults && rs != null) {\n\t\t\t\t\tResultSetMetaData md = rs.getMetaData();\n\t\t\t\t\tint cols = md.getColumnCount();\n\t\t\t\t\tfor (int i = 0; i < cols; i++) {\n\t\t\t\t\t\tString name = md.getColumnLabel(i);\n\t\t\t\t\t}\n\t\t\t\t\twhile (rs.next()) {\n\t\t\t\t\t\tfor (int i = 0; i < cols; i++) {\n\t\t\t\t\t\t\tString value = rs.getString(i);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcommand = null;\n\t\t\t\ttry {\n\t\t\t\t\tstatement.close();\n\t\t\t\t} catch (Exception e) {\n\t\t\t\t\t// Ignore to workaround a bug in Jakarta DBCP\n\t\t\t\t}\n\t\t\t\tThread.yield();\n\t\t\t} else {\n\t\t\t\tcommand.append(line);\n\t\t\t\tcommand.append(\" \");\n\t\t\t}\n\t\t}\n\t\tif (!autoCommit) {\n\t\t\tconn.commit();\n\t\t}\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/test/java/com/redis/riot/StackFileTests.java",
    "content": "package com.redis.riot;\n\nimport com.redis.testcontainers.RedisServer;\nimport com.redis.testcontainers.RedisStackContainer;\n\nclass StackFileTests extends FileTests {\n\n\tprivate static final RedisStackContainer redis = RedisContainerFactory.stack();\n\n\tprivate static final RedisStackContainer target = RedisContainerFactory.stack();\n\n\t@Override\n\tprotected RedisStackContainer getRedisServer() {\n\t\treturn redis;\n\t}\n\n\t@Override\n\tprotected RedisServer getTargetRedisServer() {\n\t\treturn target;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/test/java/com/redis/riot/StackREContainer.java",
    "content": "package com.redis.riot;\n\nimport org.junit.jupiter.api.condition.EnabledOnOs;\nimport org.junit.jupiter.api.condition.OS;\n\nimport com.redis.enterprise.testcontainers.RedisEnterpriseContainer;\nimport com.redis.testcontainers.RedisStackContainer;\n\n@EnabledOnOs(OS.LINUX)\nclass StackREContainer extends RiotTests {\n\n\tprivate static final RedisStackContainer source = RedisContainerFactory.stack();\n\tprivate static final RedisEnterpriseContainer target = RedisContainerFactory.enterprise();\n\n\t@Override\n\tprotected RedisStackContainer getRedisServer() {\n\t\treturn source;\n\t}\n\n\t@Override\n\tprotected RedisEnterpriseContainer getTargetRedisServer() {\n\t\treturn target;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/test/java/com/redis/riot/StackREServer.java",
    "content": "package com.redis.riot;\n\nimport org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable;\n\nimport com.redis.enterprise.testcontainers.RedisEnterpriseServer;\nimport com.redis.testcontainers.RedisStackContainer;\n\n@EnabledIfEnvironmentVariable(named = RedisEnterpriseServer.ENV_HOST, matches = \".*\")\npublic class StackREServer extends RiotTests {\n\n\tprivate static final RedisStackContainer source = RedisContainerFactory.stack();\n\tprivate static final RedisEnterpriseServer target = RedisContainerFactory.enterpriseServer();\n\n\t@Override\n\tprotected RedisStackContainer getRedisServer() {\n\t\treturn source;\n\t}\n\n\t@Override\n\tprotected RedisEnterpriseServer getTargetRedisServer() {\n\t\treturn target;\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/test/java/com/redis/riot/StackRiotTests.java",
    "content": "package com.redis.riot;\n\nimport static org.junit.jupiter.api.Assertions.assertEquals;\n\nimport java.io.IOException;\nimport java.nio.file.Files;\nimport java.nio.file.Path;\nimport java.time.Instant;\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.LinkedHashMap;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.Set;\nimport java.util.stream.Collectors;\nimport java.util.zip.GZIPInputStream;\n\nimport org.junit.jupiter.api.Assertions;\nimport org.junit.jupiter.api.BeforeAll;\nimport org.junit.jupiter.api.Disabled;\nimport org.junit.jupiter.api.Test;\nimport org.junit.jupiter.api.TestInfo;\nimport org.springframework.batch.item.ItemProcessor;\nimport org.springframework.batch.item.json.JacksonJsonObjectReader;\nimport org.springframework.batch.item.json.JsonItemReader;\nimport org.springframework.batch.item.json.builder.JsonItemReaderBuilder;\nimport org.springframework.core.io.FileSystemResource;\nimport org.springframework.core.io.InputStreamResource;\nimport org.springframework.expression.EvaluationContext;\nimport org.springframework.expression.spel.support.StandardEvaluationContext;\nimport org.springframework.util.StringUtils;\n\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport com.fasterxml.jackson.dataformat.xml.XmlMapper;\nimport com.redis.lettucemod.RedisModulesUtils;\nimport com.redis.lettucemod.search.Field;\nimport com.redis.lettucemod.search.IndexInfo;\nimport com.redis.lettucemod.search.Suggestion;\nimport com.redis.lettucemod.search.SuggetOptions;\nimport com.redis.lettucemod.timeseries.MRangeOptions;\nimport com.redis.lettucemod.timeseries.RangeResult;\nimport com.redis.lettucemod.timeseries.TimeRange;\nimport com.redis.riot.core.Expression;\nimport com.redis.riot.core.QuietMapAccessor;\nimport com.redis.riot.file.xml.XmlItemReader;\nimport com.redis.riot.file.xml.XmlItemReaderBuilder;\nimport com.redis.riot.file.xml.XmlObjectReader;\nimport com.redis.spring.batch.item.redis.common.KeyValue;\nimport com.redis.spring.batch.item.redis.gen.GeneratorItemReader;\nimport com.redis.spring.batch.item.redis.gen.ItemType;\nimport com.redis.spring.batch.item.redis.gen.MapOptions;\nimport com.redis.spring.batch.item.redis.reader.DefaultKeyComparator;\nimport com.redis.spring.batch.item.redis.reader.KeyComparison;\nimport com.redis.spring.batch.item.redis.reader.KeyComparison.Status;\nimport com.redis.testcontainers.RedisStackContainer;\n\nimport io.lettuce.core.GeoArgs;\nimport io.lettuce.core.Range;\nimport io.lettuce.core.StreamMessage;\nimport io.lettuce.core.cluster.SlotHash;\nimport io.lettuce.core.codec.StringCodec;\nimport picocli.CommandLine.ExitCode;\nimport picocli.CommandLine.ParseResult;\n\nclass StackRiotTests extends RiotTests {\n\n\tpublic static final int BEER_CSV_COUNT = 2410;\n\tpublic static final int BEER_JSON_COUNT = 216;\n\n\tprivate static final RedisStackContainer source = RedisContainerFactory.stack();\n\tprivate static final RedisStackContainer target = RedisContainerFactory.stack();\n\n\tprivate static Path tempDir;\n\n\t@BeforeAll\n\tpublic void setupFiles() throws IOException {\n\t\ttempDir = Files.createTempDirectory(getClass().getName());\n\t}\n\n\tprotected Path tempFile(String filename) throws IOException {\n\t\tPath path = tempDir.resolve(filename);\n\t\tif (Files.exists(path)) {\n\t\t\tFiles.delete(path);\n\t\t}\n\t\treturn path;\n\t}\n\n\t@Override\n\tprotected RedisStackContainer getRedisServer() {\n\t\treturn source;\n\t}\n\n\t@Override\n\tprotected RedisStackContainer getTargetRedisServer() {\n\t\treturn target;\n\t}\n\n\tprotected static String name(Map<String, String> beer) {\n\t\treturn beer.get(\"name\");\n\t}\n\n\tprotected static String style(Map<String, String> beer) {\n\t\treturn beer.get(\"style\");\n\t}\n\n\tprotected static double abv(Map<String, String> beer) {\n\t\treturn Double.parseDouble(beer.get(\"abv\"));\n\t}\n\n\tprotected void testImport(TestInfo info, String filename, String pattern, int count) throws Exception {\n\t\texecute(info, filename);\n\t\tAssertions.assertEquals(count, keyCount(pattern));\n\t}\n\n\t@SuppressWarnings(\"rawtypes\")\n\t@Test\n\tvoid fileImportJsonDump(TestInfo info) throws Exception {\n\t\tList<? extends KeyValue> records = exportToJsonFile(info);\n\t\tredisCommands.flushall();\n\t\texecute(info, \"file-import-json\", this::executeFileDumpImport);\n\t\tawaitUntil(() -> records.size() == Math.toIntExact(redisCommands.dbsize()));\n\t}\n\n\t@SuppressWarnings(\"rawtypes\")\n\t@Test\n\tvoid fileExportJSON(TestInfo info) throws Exception {\n\t\tList<? extends KeyValue> records = exportToJsonFile(info);\n\t\tAssertions.assertEquals(redisCommands.dbsize(), records.size());\n\t}\n\n\t@SuppressWarnings(\"rawtypes\")\n\tprivate List<? extends KeyValue> exportToJsonFile(TestInfo info) throws Exception {\n\t\tString filename = \"file-export-json\";\n\t\tPath file = tempFile(\"redis.json\");\n\t\tgenerate(info, generator(73));\n\t\texecute(info, filename, r -> executeFileDumpExport(r, info));\n\t\tJsonItemReaderBuilder<KeyValue> builder = new JsonItemReaderBuilder<>();\n\t\tbuilder.name(\"json-reader\");\n\t\tbuilder.resource(new FileSystemResource(file));\n\t\tJacksonJsonObjectReader<KeyValue> objectReader = new JacksonJsonObjectReader<>(KeyValue.class);\n\t\tobjectReader.setMapper(new ObjectMapper());\n\t\tbuilder.jsonObjectReader(objectReader);\n\t\tJsonItemReader<KeyValue> reader = builder.build();\n\t\treturn readAll(info, reader);\n\t}\n\n\tprivate int executeFileDumpImport(ParseResult parseResult) {\n\t\tAbstractFileImport command = command(parseResult);\n\t\tcommand.setFiles(command.getFiles().stream().map(this::replace).collect(Collectors.toList()));\n\t\treturn ExitCode.OK;\n\t}\n\n\tprivate int executeFileDumpExport(ParseResult parseResult, TestInfo info) {\n\t\tFileExport command = command(parseResult);\n\t\tcommand.setJobName(name(info));\n\t\tcommand.setFile(replace(command.getFile()));\n\t\treturn ExitCode.OK;\n\t}\n\n\tprivate String replace(String file) {\n\t\treturn file.replace(\"/tmp\", tempDir.toString());\n\t}\n\n\t@SuppressWarnings(\"rawtypes\")\n\t@Test\n\t@Disabled(\"Needs update\")\n\tvoid fileExportJSONGz(TestInfo info) throws Exception {\n\t\tPath file = tempFile(\"beers.json.gz\");\n\t\texecute(info, \"file-import-json-hset\");\n\t\texecute(info, \"file-export-json-gz-hset\", r -> executeFileDumpExport(r, info));\n\t\tJsonItemReaderBuilder<Map> builder = new JsonItemReaderBuilder<>();\n\t\tbuilder.name(\"json-reader\");\n\t\tFileSystemResource resource = new FileSystemResource(file);\n\t\tbuilder.resource(\n\t\t\t\tnew InputStreamResource(new GZIPInputStream(resource.getInputStream()), resource.getDescription()));\n\t\tJacksonJsonObjectReader<Map> objectReader = new JacksonJsonObjectReader<>(Map.class);\n\t\tobjectReader.setMapper(new ObjectMapper());\n\t\tbuilder.jsonObjectReader(objectReader);\n\t\tJsonItemReader<Map> reader = builder.build();\n\t\tAssertions.assertEquals(keyCount(\"beer:*\"), readAll(info, reader).size());\n\t}\n\n\t@SuppressWarnings({ \"rawtypes\", \"unchecked\" })\n\t@Test\n\tvoid fileExportXml(TestInfo info) throws Exception {\n\t\tString filename = \"file-export-xml\";\n\t\tgenerate(info, generator(73));\n\t\tPath file = tempFile(\"redis.xml\");\n\t\texecute(info, filename, r -> executeFileDumpExport(r, info));\n\t\tXmlItemReaderBuilder<KeyValue> builder = new XmlItemReaderBuilder<>();\n\t\tbuilder.name(\"xml-reader\");\n\t\tbuilder.resource(new FileSystemResource(file));\n\t\tXmlObjectReader<KeyValue> xmlObjectReader = new XmlObjectReader<>(KeyValue.class);\n\t\txmlObjectReader.setMapper(new XmlMapper());\n\t\tbuilder.xmlObjectReader(xmlObjectReader);\n\t\tXmlItemReader<KeyValue<String>> reader = (XmlItemReader) builder.build();\n\t\tList<? extends KeyValue<String>> records = readAll(info, reader);\n\t\tAssertions.assertEquals(redisCommands.dbsize(), records.size());\n\t\tfor (KeyValue<String> record : records) {\n\t\t\tif (record.getType() == null) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tswitch (record.getType()) {\n\t\t\tcase KeyValue.TYPE_HASH:\n\t\t\t\tAssertions.assertEquals(record.getValue(), redisCommands.hgetall(record.getKey()));\n\t\t\t\tbreak;\n\t\t\tcase KeyValue.TYPE_STRING:\n\t\t\t\tAssertions.assertEquals(record.getValue(), redisCommands.get(record.getKey()));\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t@Test\n\tvoid fileImportFW(TestInfo info) throws Exception {\n\t\ttestImport(info, \"file-import-fw\", \"account:*\", 5);\n\t\tMap<String, String> account101 = redisCommands.hgetall(\"account:101\");\n\t\t// Account LastName FirstName Balance CreditLimit AccountCreated Rating\n\t\t// 101 Reeves Keanu 9315.45 10000.00 1/17/1998 A\n\t\tAssertions.assertEquals(\"Reeves\", account101.get(\"LastName\"));\n\t\tAssertions.assertEquals(\"Keanu\", account101.get(\"FirstName\"));\n\t\tAssertions.assertEquals(\"A\", account101.get(\"Rating\"));\n\t}\n\n\t@Test\n\tvoid fileImportCSV(TestInfo info) throws Exception {\n\t\ttestImport(info, \"file-import-csv\", \"beer:*\", BEER_CSV_COUNT);\n\t}\n\n\t@Test\n\tvoid fileImportCSVSkipLines(TestInfo info) throws Exception {\n\t\ttestImport(info, \"file-import-csv-skiplines\", \"beer:*\", BEER_CSV_COUNT - 10);\n\t}\n\n\t@Test\n\tvoid fileImportCSVMax(TestInfo info) throws Exception {\n\t\ttestImport(info, \"file-import-csv-max\", \"beer:*\", 12);\n\t}\n\n\t@Test\n\tvoid fileImportPSV(TestInfo info) throws Exception {\n\t\ttestImport(info, \"file-import-psv\", \"sample:*\", 3);\n\t}\n\n\t@Test\n\tvoid fileImportTSV(TestInfo info) throws Exception {\n\t\ttestImport(info, \"file-import-tsv\", \"sample:*\", 4);\n\t}\n\n\t@Test\n\tvoid fileImportType(TestInfo info) throws Exception {\n\t\ttestImport(info, \"file-import-filetype\", \"sample:*\", 3);\n\t}\n\n\t@Test\n\tvoid fileImportExclude(TestInfo info) throws Exception {\n\t\texecute(info, \"file-import-exclude\");\n\t\tMap<String, String> beer1036 = redisCommands.hgetall(\"beer:1036\");\n\t\tAssertions.assertEquals(\"Lower De Boom\", name(beer1036));\n\t\tAssertions.assertEquals(\"American Barleywine\", style(beer1036));\n\t\tAssertions.assertEquals(\"368\", beer1036.get(\"brewery_id\"));\n\t\tAssertions.assertFalse(beer1036.containsKey(\"row\"));\n\t\tAssertions.assertFalse(beer1036.containsKey(\"ibu\"));\n\t}\n\n\t@Test\n\tvoid fileImportInclude(TestInfo info) throws Exception {\n\t\texecute(info, \"file-import-include\");\n\t\tMap<String, String> beer1036 = redisCommands.hgetall(\"beer:1036\");\n\t\tAssertions.assertEquals(3, beer1036.size());\n\t\tAssertions.assertEquals(\"Lower De Boom\", name(beer1036));\n\t\tAssertions.assertEquals(\"American Barleywine\", style(beer1036));\n\t\tAssertions.assertEquals(0.099, abv(beer1036));\n\t}\n\n\t@Test\n\tvoid fileImportFilter(TestInfo info) throws Exception {\n\t\ttestImport(info, \"file-import-filter\", \"beer:*\", 424);\n\t}\n\n\t@Test\n\tvoid fileImportRegex(TestInfo info) throws Exception {\n\t\texecute(info, \"file-import-regex\");\n\t\tMap<String, String> airport1 = redisCommands.hgetall(\"airport:1\");\n\t\tAssertions.assertEquals(\"Pacific\", airport1.get(\"region\"));\n\t\tAssertions.assertEquals(\"Port_Moresby\", airport1.get(\"city\"));\n\t}\n\n\t@Test\n\tvoid fileImportGeoadd(TestInfo info) throws Exception {\n\t\texecute(info, \"file-import-geoadd\");\n\t\tSet<String> results = redisCommands.georadius(\"airportgeo\", -21, 64, 200, GeoArgs.Unit.mi);\n\t\tAssertions.assertTrue(results.contains(\"18\"));\n\t\tAssertions.assertTrue(results.contains(\"19\"));\n\t\tAssertions.assertTrue(results.contains(\"11\"));\n\t}\n\n\t@Test\n\tvoid fileImportGeoProcessor(TestInfo info) throws Exception {\n\t\texecute(info, \"file-import-geo-processor\");\n\t\tMap<String, String> airport3469 = redisCommands.hgetall(\"airport:18\");\n\t\tAssertions.assertEquals(\"-21.9405994415,64.1299972534\", airport3469.get(\"location\"));\n\t}\n\n\t@Test\n\tvoid fileImportProcess(TestInfo info) throws Exception {\n\t\ttestImport(info, \"file-import-process\", \"event:*\", 568);\n\t\tMap<String, String> event = redisCommands.hgetall(\"event:248206\");\n\t\tInstant date = Instant.ofEpochMilli(Long.parseLong(event.get(\"EpochStart\")));\n\t\tAssertions.assertTrue(date.isBefore(Instant.now()));\n\t}\n\n\t@Test\n\tvoid fileImportProcessFaker(TestInfo info) throws Exception {\n\t\ttestImport(info, \"file-import-process-faker\", \"beer:*\", BEER_CSV_COUNT);\n\t\tMap<String, String> beer = redisCommands.hgetall(redisCommands.randomkey());\n\t\tAssertions.assertTrue(StringUtils.hasLength(beer.get(\"fakeid\")));\n\t}\n\n\t@Test\n\tvoid fileImportProcessVar(TestInfo info) throws Exception {\n\t\ttestImport(info, \"file-import-process-var\", \"event:*\", 568);\n\t\tMap<String, String> event = redisCommands.hgetall(\"event:248206\");\n\t\tint randomInt = Integer.parseInt(event.get(\"randomInt\"));\n\t\tAssertions.assertTrue(randomInt >= 0 && randomInt < 100);\n\t}\n\n\t@Test\n\tvoid fileImportProcessElvis(TestInfo info) throws Exception {\n\t\ttestImport(info, \"file-import-process-elvis\", \"beer:*\", BEER_CSV_COUNT);\n\t\tMap<String, String> beer1436 = redisCommands.hgetall(\"beer:1436\");\n\t\tAssertions.assertEquals(\"10\", beer1436.get(\"ibu\"));\n\t}\n\n\t@Test\n\tvoid fileImportHsetSadd(TestInfo info) throws Exception {\n\t\texecute(info, \"file-import-hset-sadd\");\n\t\tList<String> beers = redisCommands.keys(\"beer:*\");\n\t\tAssertions.assertEquals(BEER_CSV_COUNT, beers.size());\n\t\tfor (String beer : beers) {\n\t\t\tMap<String, String> hash = redisCommands.hgetall(beer);\n\t\t\tAssertions.assertTrue(hash.containsKey(\"name\"));\n\t\t\tAssertions.assertTrue(hash.containsKey(\"brewery_id\"));\n\t\t}\n\t\tSet<String> breweries = redisCommands.smembers(\"breweries\");\n\t\tAssertions.assertEquals(558, breweries.size());\n\t}\n\n\t@Test\n\tvoid fileImportHsetExpire(TestInfo info) throws Exception {\n\t\texecute(info, \"file-import-hset-expire\");\n\t\tList<String> beers = redisCommands.keys(\"beer:*\");\n\t\tAssertions.assertEquals(BEER_CSV_COUNT, beers.size());\n\t\tfor (String beer : beers) {\n\t\t\tMap<String, String> hash = redisCommands.hgetall(beer);\n\t\t\tAssertions.assertTrue(hash.containsKey(\"name\"));\n\t\t\tAssertions.assertTrue(hash.containsKey(\"brewery_id\"));\n\t\t\tAssertions.assertEquals(3600, redisCommands.ttl(beer), 3);\n\t\t}\n\t}\n\n\t@Test\n\tvoid fileImportHsetExpireField(TestInfo info) throws Exception {\n\t\texecute(info, \"file-import-hset-expire-abs\");\n\t\tList<String> beers = redisCommands.keys(\"beer:*\");\n\t\tAssertions.assertEquals(BEER_CSV_COUNT, beers.size());\n\t\tfor (String beer : beers) {\n\t\t\tMap<String, String> hash = redisCommands.hgetall(beer);\n\t\t\tAssertions.assertTrue(hash.containsKey(\"name\"));\n\t\t\tAssertions.assertTrue(hash.containsKey(\"brewery_id\"));\n\t\t\tAssertions.assertEquals(10, redisCommands.ttl(beer), 5);\n\t\t}\n\t}\n\n\t@Test\n\tvoid fileImportBad(TestInfo info) throws Exception {\n\t\tAssertions.assertEquals(0, execute(info, \"file-import-bad\"));\n\t}\n\n\t@Test\n\tvoid fileImportGCS(TestInfo info) throws Exception {\n\t\ttestImport(info, \"file-import-gcs\", \"beer:*\", 216);\n\t\tMap<String, String> beer1 = redisCommands.hgetall(\"beer:1\");\n\t\tAssertions.assertEquals(\"Hocus Pocus\", name(beer1));\n\t}\n\n\t@Test\n\tvoid fileImportS3(TestInfo info) throws Exception {\n\t\ttestImport(info, \"file-import-s3\", \"beer:*\", 216);\n\t\tMap<String, String> beer1 = redisCommands.hgetall(\"beer:1\");\n\t\tAssertions.assertEquals(\"Hocus Pocus\", name(beer1));\n\t}\n\n\t@Test\n\t@Disabled(\"Needs update\")\n\tvoid fileImportJSONElastic(TestInfo info) throws Exception {\n\t\texecute(info, \"file-import-json-elastic-hset\");\n\t\tAssertions.assertEquals(2, keyCount(\"estest:*\"));\n\t\tMap<String, String> doc1 = redisCommands.hgetall(\"estest:doc1\");\n\t\tAssertions.assertEquals(\"ruan\", doc1.get(\"_source.name\"));\n\t\tAssertions.assertEquals(\"3\", doc1.get(\"_source.articles[1]\"));\n\t}\n\n\t@Test\n\tvoid fileImportJSON(TestInfo info) throws Exception {\n\t\ttestImport(info, \"file-import-json-hset\", \"beer:*\", BEER_JSON_COUNT);\n\t\tMap<String, String> beer1 = redisCommands.hgetall(\"beer:1\");\n\t\tAssertions.assertEquals(\"Hocus Pocus\", beer1.get(\"name\"));\n\t}\n\n\t@Test\n\tvoid fileImportXML(TestInfo info) throws Exception {\n\t\ttestImport(info, \"file-import-xml\", \"trade:*\", 3);\n\t\tMap<String, String> trade1 = redisCommands.hgetall(\"trade:1\");\n\t\tAssertions.assertEquals(\"XYZ0001\", trade1.get(\"isin\"));\n\t}\n\n\t@Test\n\tvoid fileImportJSONGzip(TestInfo info) throws Exception {\n\t\ttestImport(info, \"file-import-json-gz-hset\", \"beer:*\", BEER_JSON_COUNT);\n\t}\n\n\t@Test\n\tvoid fileImportSugadd(TestInfo info) throws Exception {\n\t\tassertExecutionSuccessful(execute(info, \"file-import-sugadd\"));\n\t\tList<Suggestion<String>> suggestions = redisCommands.ftSugget(\"names\", \"Bea\",\n\t\t\t\tSuggetOptions.builder().withPayloads(true).build());\n\t\tAssertions.assertEquals(5, suggestions.size());\n\t\tAssertions.assertEquals(\"American Blonde Ale\", suggestions.get(0).getPayload());\n\t}\n\n\t@Test\n\tvoid fileImportElasticJSON(TestInfo info) throws Exception {\n\t\tassertExecutionSuccessful(execute(info, \"file-import-json-elastic-jsonset\"));\n\t\tAssertions.assertEquals(2, keyCount(\"elastic:*\"));\n\t\tObjectMapper mapper = new ObjectMapper();\n\t\tString doc1 = redisCommands.jsonGet(\"elastic:doc1\").get(0).toString();\n\t\tString expected = \"{\\\"_index\\\":\\\"test-index\\\",\\\"_type\\\":\\\"docs\\\",\\\"_id\\\":\\\"doc1\\\",\\\"_score\\\":1,\\\"_source\\\":{\\\"name\\\":\\\"ruan\\\",\\\"age\\\":30,\\\"articles\\\":[\\\"1\\\",\\\"3\\\"]}}\";\n\t\tAssertions.assertEquals(mapper.readTree(expected), mapper.readTree(doc1));\n\t}\n\n\t@Test\n\tvoid fakerImportHset(TestInfo info) throws Exception {\n\t\ttestImport(info, \"faker-hset\", \"person:*\", 1000);\n\t\tMap<String, String> person = redisCommands.hgetall(redisCommands.randomkey());\n\t\tAssertions.assertTrue(person.containsKey(\"firstName\"));\n\t\tAssertions.assertTrue(person.containsKey(\"lastName\"));\n\t\tAssertions.assertTrue(person.containsKey(\"address\"));\n\t}\n\n\t@Test\n\tvoid fakerImportSadd(TestInfo info) throws Exception {\n\t\texecute(info, \"faker-sadd\");\n\t\tSet<String> names = redisCommands.smembers(\"got:characters\");\n\t\tAssertions.assertTrue(names.size() > 10);\n\t\tfor (String name : names) {\n\t\t\tAssertions.assertFalse(name.isEmpty());\n\t\t}\n\t}\n\n\t@Test\n\tvoid fakerImportZadd(TestInfo info) throws Exception {\n\t\texecute(info, \"faker-zadd\");\n\t\tAssertions.assertTrue(keyCount(\"leases:*\") > 100);\n\t\tString key;\n\t\tdo {\n\t\t\tkey = redisCommands.randomkey();\n\t\t} while (key == null);\n\t\tAssertions.assertTrue(redisCommands.zcard(key) > 0);\n\t}\n\n\t@Test\n\tvoid fakerImportXadd(TestInfo info) throws Exception {\n\t\texecute(info, \"faker-xadd\");\n\t\tList<StreamMessage<String, String>> messages = redisCommands.xrange(\"teststream:1\", Range.unbounded());\n\t\tAssertions.assertTrue(messages.size() > 0);\n\t}\n\n\t@Test\n\tvoid fakerImportTsAddWithOptions(TestInfo info) throws Exception {\n\t\texecute(info, \"faker-tsadd-options\");\n\t\tList<RangeResult<String, String>> results = redisCommands.tsMrange(TimeRange.unbounded(),\n\t\t\t\tMRangeOptions.<String, String>filters(\"character1=Einstein\").build());\n\t\tAssertions.assertFalse(results.isEmpty());\n\t}\n\n\t@Test\n\tvoid generateTypes(TestInfo info) throws Exception {\n\t\texecute(info, \"generate\");\n\t\tAssertions.assertEquals(Math.min(GenerateArgs.DEFAULT_COUNT, GeneratorItemReader.DEFAULT_KEY_RANGE.getMax()),\n\t\t\t\tredisCommands.dbsize());\n\t}\n\n\t@Test\n\tvoid generateJsonIndex(TestInfo info) throws Exception {\n\t\texecute(info, \"generate-json-index\");\n\t\tint keyCount = Math.min(GenerateArgs.DEFAULT_COUNT, GeneratorItemReader.DEFAULT_KEY_RANGE.getMax());\n\t\tAssertions.assertEquals(keyCount, redisCommands.dbsize());\n\t\tIndexInfo indexInfo = RedisModulesUtils.indexInfo(redisCommands.ftInfo(\"jsonIdx\"));\n\t\tList<Field<String>> expectedFields = new ArrayList<>();\n\t\tfor (int index = 1; index <= MapOptions.DEFAULT_FIELD_COUNT.getMax(); index++) {\n\t\t\texpectedFields.add(Field.tag(\"$.field\" + index).as(\"field\" + index).build());\n\t\t}\n\t\tAssertions.assertEquals(expectedFields, indexInfo.getFields());\n\t\tAssertions.assertEquals(keyCount, indexInfo.getNumDocs());\n\t}\n\n\t@Test\n\tvoid generateHashIndex(TestInfo info) throws Exception {\n\t\texecute(info, \"generate-hash-index\");\n\t\tint keyCount = Math.min(GenerateArgs.DEFAULT_COUNT, GeneratorItemReader.DEFAULT_KEY_RANGE.getMax());\n\t\tAssertions.assertEquals(keyCount, redisCommands.dbsize());\n\t\tIndexInfo indexInfo = RedisModulesUtils.indexInfo(redisCommands.ftInfo(\"hashIdx\"));\n\t\tList<Field<String>> expectedFields = new ArrayList<>();\n\t\tfor (int index = 1; index <= MapOptions.DEFAULT_FIELD_COUNT.getMax(); index++) {\n\t\t\texpectedFields.add(Field.tag(\"field\" + index).as(\"field\" + index).separator(',').build());\n\t\t}\n\t\tAssertions.assertEquals(expectedFields, indexInfo.getFields());\n\t\tAssertions.assertEquals(keyCount, indexInfo.getNumDocs());\n\t}\n\n\t@Test\n\tvoid replicateKeyExclude(TestInfo info) throws Throwable {\n\t\tString filename = \"replicate-key-exclude\";\n\t\tint goodCount = 200;\n\t\tGeneratorItemReader gen = generator(goodCount, ItemType.HASH);\n\t\tgenerate(info, gen);\n\t\tint badCount = 100;\n\t\tGeneratorItemReader generator2 = generator(badCount, ItemType.HASH);\n\t\tgenerator2.setKeyspace(\"bad\");\n\t\tgenerate(testInfo(info, \"2\"), generator2);\n\t\tAssertions.assertEquals(badCount, keyCount(\"bad:*\"));\n\t\texecute(info, filename);\n\t\tAssertions.assertEquals(goodCount, targetRedisCommands.keys(\"gen:*\").size());\n\t}\n\n\t@Test\n\tvoid replicateLiveKeyExclude(TestInfo info) throws Throwable {\n\t\tString filename = \"replicate-live-key-exclude\";\n\t\tint goodCount = 200;\n\t\tint badCount = 100;\n\t\tenableKeyspaceNotifications();\n\t\tgenerateAsync(testInfo(info, \"gen-1\"), generator(goodCount, ItemType.HASH));\n\t\tGeneratorItemReader generator2 = generator(badCount, ItemType.HASH);\n\t\tgenerator2.setKeyspace(\"bad\");\n\t\tgenerateAsync(testInfo(info, \"gen-2\"), generator2);\n\t\texecute(info, filename);\n\t\tawaitUntil(() -> redisCommands.pubsubNumpat() == 0);\n\t\tAssertions.assertEquals(badCount, keyCount(\"bad:*\"));\n\t\tAssertions.assertEquals(0, targetRedisCommands.keys(\"bad:*\").size());\n\t\tAssertions.assertEquals(goodCount, targetRedisCommands.keys(\"gen:*\").size());\n\t}\n\n\t@Test\n\tvoid replicateLiveOnlyStruct(TestInfo info) throws Exception {\n\t\tItemType[] types = new ItemType[] { ItemType.HASH, ItemType.STRING };\n\t\tenableKeyspaceNotifications();\n\t\tGeneratorItemReader generator = generator(3500, types);\n\t\tgenerator.setCurrentItemCount(3001);\n\t\tgenerateAsync(testInfo(info, \"async\"), generator);\n\t\texecute(info, \"replicate-live-only-struct\");\n\t\tList<KeyComparison<String>> comparisons = compare(info);\n\t\tAssertions.assertFalse(comparisons.isEmpty());\n\t\tAssertions.assertFalse(comparisons.stream().anyMatch(c -> c.getStatus() != Status.OK));\n\t}\n\n\t@Test\n\tvoid replication(TestInfo info) throws Throwable {\n\t\tgenerate(info, generator(73));\n\t\tAssertions.assertTrue(redisCommands.dbsize() > 0);\n\t\tReplicate replication = new Replicate();\n\t\texecute(replication, info);\n\t\tList<KeyComparison<String>> comparisons = compare(info);\n\t\tAssertions.assertFalse(comparisons.isEmpty());\n\t\tAssertions.assertFalse(comparisons.stream().anyMatch(c -> c.getStatus() != Status.OK));\n\t}\n\n\t@Test\n\tvoid replicate(TestInfo info) throws Throwable {\n\t\tString filename = \"replicate\";\n\t\tgenerate(info, generator(73));\n\t\tAssertions.assertTrue(redisCommands.dbsize() > 0);\n\t\texecute(info, filename);\n\t\tassertCompare(info);\n\t}\n\n\t@Test\n\tvoid replicateNoStreamId(TestInfo info) throws Throwable {\n\t\tString filename = \"replicate-no-stream-id\";\n\t\tgenerate(info, generator(73));\n\t\tAssertions.assertTrue(redisCommands.dbsize() > 0);\n\t\texecute(info, filename);\n\t\tassertDbNotEmpty(redisCommands);\n\t\tDefaultKeyComparator<String, String> comparator = comparator(StringCodec.UTF8);\n\t\tcomparator.setIgnoreStreamMessageId(true);\n\t\tList<KeyComparison<String>> comparisons = compare(info, StringCodec.UTF8, comparator);\n\t\tAssertions.assertFalse(comparisons.isEmpty());\n\t\tAssertions.assertFalse(comparisons.stream().anyMatch(c -> c.getStatus() != Status.OK));\n\t}\n\n\t@Test\n\tvoid replicateNoStreamIdPrune(TestInfo info) throws Throwable {\n\t\tString filename = \"replicate-no-stream-id-prune\";\n\t\tgenerate(info, generator(73));\n\t\tString emptyStream = \"stream:empty\";\n\t\tredisCommands.xadd(emptyStream, Map.of(\"field\", \"value\"));\n\t\tredisCommands.xtrim(emptyStream, 0);\n\t\tAssertions.assertTrue(redisCommands.dbsize() > 0);\n\t\texecute(info, filename);\n\t\tassertDbNotEmpty(redisCommands);\n\t\tDefaultKeyComparator<String, String> comparator = comparator(StringCodec.UTF8);\n\t\tcomparator.setIgnoreStreamMessageId(true);\n\t\tList<KeyComparison<String>> comparisons = compare(info, StringCodec.UTF8, comparator);\n\t\tAssertions.assertFalse(comparisons.isEmpty());\n\t\tKeyComparison<String> missing = comparisons.stream().filter(c -> c.getStatus() != Status.OK)\n\t\t\t\t.collect(Collectors.toList()).get(0);\n\t\tAssertions.assertEquals(Status.MISSING, missing.getStatus());\n\t\tAssertions.assertEquals(emptyStream, missing.getSource().getKey());\n\t}\n\n\t@Test\n\tvoid replicateDryRun(TestInfo info) throws Throwable {\n\t\tString filename = \"replicate-dry-run\";\n\t\tgenerate(info, generator(73));\n\t\tAssertions.assertTrue(redisCommands.dbsize() > 0);\n\t\texecute(info, filename);\n\t\tAssertions.assertEquals(0, targetRedisCommands.dbsize());\n\t}\n\n\t@Test\n\tvoid replicateHyperloglog(TestInfo info) throws Throwable {\n\t\tString key = \"crawled:20171124\";\n\t\tString value = \"http://www.google.com/\";\n\t\tredisCommands.pfadd(key, value);\n\t\tAssertions.assertEquals(0, execute(info, \"replicate-hll\"));\n\t\tassertCompare(info);\n\t}\n\n\t@Test\n\tvoid replicateKeyProcessor(TestInfo info) throws Throwable {\n\t\tString filename = \"replicate-key-processor\";\n\t\tGeneratorItemReader gen = generator(1, ItemType.HASH);\n\t\tgenerate(info, gen);\n\t\tLong sourceSize = redisCommands.dbsize();\n\t\tAssertions.assertTrue(sourceSize > 0);\n\t\texecute(info, filename);\n\t\tAssertions.assertEquals(sourceSize, targetRedisCommands.dbsize());\n\t\tAssertions.assertEquals(redisCommands.hgetall(\"gen:1\"), targetRedisCommands.hgetall(\"prefix:gen:1\"));\n\t}\n\n\t@Test\n\tvoid replicateLiveStruct(TestInfo info) throws Exception {\n\t\trunLiveReplication(info, \"replicate-live-struct\");\n\t}\n\n\t@Test\n\tvoid replicateLiveThreads(TestInfo info) throws Exception {\n\t\trunLiveReplication(info, \"replicate-live-threads\");\n\t}\n\n\t@Test\n\tvoid replicateLive(TestInfo info) throws Exception {\n\t\trunLiveReplication(info, \"replicate-live\");\n\t}\n\n\t@Test\n\tvoid replicateLiveReadThreads(TestInfo info) throws Exception {\n\t\trunLiveReplication(info, \"replicate-live-read-threads\");\n\t}\n\n\t@Test\n\tvoid replicateLiveKeySlot(TestInfo info) throws Exception {\n\t\tString filename = \"replicate-live-keyslot\";\n\t\tenableKeyspaceNotifications();\n\t\tint count = 300;\n\t\tGeneratorItemReader generator = generator(count);\n\t\tgenerateAsync(info, generator);\n\t\texecute(info, filename);\n\t\tList<String> keys = targetRedisCommands.keys(\"*\");\n\t\tAssertions.assertEquals(148, keys.size());\n\t\tfor (String key : keys) {\n\t\t\tint slot = SlotHash.getSlot(key);\n\t\t\tAssertions.assertTrue(slot >= 0 && slot <= 8000);\n\t\t}\n\t}\n\n\t@Test\n\tvoid replicateStruct(TestInfo info) throws Throwable {\n\t\tString filename = \"replicate-struct\";\n\t\tGeneratorItemReader generator = generator(12000);\n\t\tgenerate(info, generator);\n\t\tAssertions.assertTrue(redisCommands.dbsize() > 0);\n\t\texecute(info, filename);\n\t}\n\n\t@Test\n\tvoid compareKeyProcessor(TestInfo info) throws Throwable {\n\t\tGeneratorItemReader gen = generator(1, ItemType.HASH);\n\t\tgenerate(info, gen);\n\t\tLong sourceSize = redisCommands.dbsize();\n\t\tAssertions.assertTrue(sourceSize > 0);\n\t\texecute(testInfo(info, \"replicate\"), \"replicate-key-processor-compare-none\");\n\t\tAssertions.assertEquals(sourceSize, targetRedisCommands.dbsize());\n\t\tAssertions.assertEquals(redisCommands.hgetall(\"gen:1\"), targetRedisCommands.hgetall(\"prefix:gen:1\"));\n\t\texecute(info, \"compare-key-processor\");\n\t}\n\n\t@Test\n\tvoid keyProcessor(TestInfo info) throws Throwable {\n\t\tString key1 = \"key1\";\n\t\tString value1 = \"value1\";\n\t\tredisCommands.set(key1, value1);\n\t\tReplicate command = new Replicate();\n\t\tcommand.setStruct(true);\n\t\tcommand.getProcessorArgs().setKeyExpression(Expression.parseTemplate(\"#{type}:#{key}\"));\n\t\texecute(command, info);\n\t\tAssertions.assertEquals(value1, targetRedisCommands.get(\"string:\" + key1));\n\t}\n\n\t@Test\n\tvoid keyProcessorWithDate(TestInfo info) throws Throwable {\n\t\tString key1 = \"key1\";\n\t\tString value1 = \"value1\";\n\t\tredisCommands.set(key1, value1);\n\t\tReplicate replication = new Replicate();\n\t\treplication.getProcessorArgs().setKeyExpression(Expression\n\t\t\t\t.parseTemplate(String.format(\"#{#date.parse('%s').getTime()}:#{key}\", \"2010-05-10T00:00:00.000+0000\")));\n\t\texecute(replication, info);\n\t\tAssertions.assertEquals(value1, targetRedisCommands.get(\"1273449600000:\" + key1));\n\t}\n\n\t@Test\n\tvoid testMapProcessor() throws Exception {\n\t\tMap<String, Expression> expressions = new LinkedHashMap<>();\n\t\texpressions.put(\"field1\", Expression.parse(\"'test:1'\"));\n\t\tImportProcessorArgs args = new ImportProcessorArgs();\n\t\targs.setExpressions(expressions);\n\t\tItemProcessor<Map<String, Object>, Map<String, Object>> processor = AbstractImportCommand\n\t\t\t\t.processor(evaluationContext(), args);\n\t\tMap<String, Object> map = processor.process(new HashMap<>());\n\t\tAssertions.assertEquals(\"test:1\", map.get(\"field1\"));\n\t\t// Assertions.assertEquals(\"1\", map.get(\"id\"));\n\t}\n\n\t@Test\n\tvoid processor() throws Exception {\n\t\tMap<String, Expression> expressions = new LinkedHashMap<>();\n\t\texpressions.put(\"field1\", Expression.parse(\"'value1'\"));\n\t\texpressions.put(\"field2\", Expression.parse(\"field1\"));\n\t\texpressions.put(\"field3\", Expression.parse(\"1\"));\n\t\texpressions.put(\"field4\", Expression.parse(\"2\"));\n\t\texpressions.put(\"field5\", Expression.parse(\"field3+field4\"));\n\t\tImportProcessorArgs args = new ImportProcessorArgs();\n\t\targs.setExpressions(expressions);\n\t\tItemProcessor<Map<String, Object>, Map<String, Object>> processor = AbstractImportCommand\n\t\t\t\t.processor(evaluationContext(), args);\n\t\tfor (int index = 0; index < 10; index++) {\n\t\t\tMap<String, Object> result = processor.process(new HashMap<>());\n\t\t\tassertEquals(5, result.size());\n\t\t\tassertEquals(\"value1\", result.get(\"field1\"));\n\t\t\tassertEquals(\"value1\", result.get(\"field2\"));\n\t\t\tassertEquals(3, result.get(\"field5\"));\n\t\t}\n\t}\n\n\tprivate EvaluationContext evaluationContext() {\n\t\tStandardEvaluationContext context = new StandardEvaluationContext();\n\t\tcontext.addPropertyAccessor(new QuietMapAccessor());\n\t\treturn context;\n\t}\n\n\t@Test\n\tvoid processorFilter() throws Exception {\n\t\tImportProcessorArgs args = new ImportProcessorArgs();\n\t\targs.setFilter(Expression.parse(\"index<10\"));\n\t\tItemProcessor<Map<String, Object>, Map<String, Object>> processor = AbstractImportCommand\n\t\t\t\t.processor(evaluationContext(), args);\n\t\tfor (int index = 0; index < 100; index++) {\n\t\t\tMap<String, Object> map = new HashMap<>();\n\t\t\tmap.put(\"index\", index);\n\t\t\tMap<String, Object> result = processor.process(map);\n\t\t\tif (index < 10) {\n\t\t\t\tAssertions.assertNotNull(result);\n\t\t\t} else {\n\t\t\t\tAssertions.assertNull(result);\n\t\t\t}\n\t\t}\n\t}\n\n}\n"
  },
  {
    "path": "plugins/riot/src/test/resources/compare-key-processor",
    "content": "riot compare --batch 1 --key-proc=\"prefix:#{key}\" redis://source redis://target"
  },
  {
    "path": "plugins/riot/src/test/resources/db/northwind.sql",
    "content": "DROP TABLE IF EXISTS customer_customer_demo;\nDROP TABLE IF EXISTS customer_demographics;\nDROP TABLE IF EXISTS employee_territories;\nDROP TABLE IF EXISTS order_details;\nDROP TABLE IF EXISTS orders;\nDROP TABLE IF EXISTS customers;\nDROP TABLE IF EXISTS products;\nDROP TABLE IF EXISTS shippers;\nDROP TABLE IF EXISTS suppliers;\nDROP TABLE IF EXISTS territories;\nDROP TABLE IF EXISTS us_states;\nDROP TABLE IF EXISTS categories;\nDROP TABLE IF EXISTS region;\nDROP TABLE IF EXISTS employees;\n\n--\n-- Name: categories; Type: TABLE; Schema: public; Owner: -; Tablespace: \n--\n\nCREATE TABLE categories (\n    category_id smallint NOT NULL,\n    category_name character varying(15) NOT NULL,\n    description text,\n    picture bytea\n);\n\n\n--\n-- Name: customer_customer_demo; Type: TABLE; Schema: public; Owner: -; Tablespace: \n--\n\nCREATE TABLE customer_customer_demo (\n    customer_id bpchar NOT NULL,\n    customer_type_id bpchar NOT NULL\n);\n\n\n--\n-- Name: customer_demographics; Type: TABLE; Schema: public; Owner: -; Tablespace: \n--\n\nCREATE TABLE customer_demographics (\n    customer_type_id bpchar NOT NULL,\n    customer_desc text\n);\n\n\n--\n-- Name: customers; Type: TABLE; Schema: public; Owner: -; Tablespace: \n--\n\nCREATE TABLE customers (\n    customer_id bpchar NOT NULL,\n    company_name character varying(40) NOT NULL,\n    contact_name character varying(30),\n    contact_title character varying(30),\n    address character varying(60),\n    city character varying(15),\n    region character varying(15),\n    postal_code character varying(10),\n    country character varying(15),\n    phone character varying(24),\n    fax character varying(24)\n);\n\n\n--\n-- Name: employees; Type: TABLE; Schema: public; Owner: -; Tablespace: \n--\n\nCREATE TABLE employees (\n    employee_id smallint NOT NULL,\n    last_name character varying(20) NOT NULL,\n    first_name character varying(10) NOT NULL,\n    title character varying(30),\n    title_of_courtesy character varying(25),\n    birth_date date,\n    hire_date date,\n    address character varying(60),\n    city character varying(15),\n    region character varying(15),\n    postal_code character varying(10),\n    country character varying(15),\n    home_phone character varying(24),\n    extension character varying(4),\n    photo bytea,\n    notes text,\n    reports_to smallint,\n    photo_path character varying(255)\n);\n\n\n--\n-- Name: employee_territories; Type: TABLE; Schema: public; Owner: -; Tablespace: \n--\n\nCREATE TABLE employee_territories (\n    employee_id smallint NOT NULL,\n    territory_id character varying(20) NOT NULL\n);\n\n\n\n\n--\n-- Name: order_details; Type: TABLE; Schema: public; Owner: -; Tablespace: \n--\n\nCREATE TABLE order_details (\n    order_id smallint NOT NULL,\n    product_id smallint NOT NULL,\n    unit_price real NOT NULL,\n    quantity smallint NOT NULL,\n    discount real NOT NULL\n);\n\n\n--\n-- Name: orders; Type: TABLE; Schema: public; Owner: -; Tablespace: \n--\n\nCREATE TABLE orders (\n    order_id smallint NOT NULL,\n    customer_id bpchar,\n    employee_id smallint,\n    order_date date,\n    required_date date,\n    shipped_date date,\n    ship_via smallint,\n    freight real,\n    ship_name character varying(40),\n    ship_address character varying(60),\n    ship_city character varying(15),\n    ship_region character varying(15),\n    ship_postal_code character varying(10),\n    ship_country character varying(15)\n);\n\n\n--\n-- Name: products; Type: TABLE; Schema: public; Owner: -; Tablespace: \n--\n\nCREATE TABLE products (\n    product_id smallint NOT NULL,\n    product_name character varying(40) NOT NULL,\n    supplier_id smallint,\n    category_id smallint,\n    quantity_per_unit character varying(20),\n    unit_price real,\n    units_in_stock smallint,\n    units_on_order smallint,\n    reorder_level smallint,\n    discontinued integer NOT NULL\n);\n\n\n--\n-- Name: region; Type: TABLE; Schema: public; Owner: -; Tablespace: \n--\n\nCREATE TABLE region (\n    region_id smallint NOT NULL,\n    region_description bpchar NOT NULL\n);\n\n\n--\n-- Name: shippers; Type: TABLE; Schema: public; Owner: -; Tablespace: \n--\n\nCREATE TABLE shippers (\n    shipper_id smallint NOT NULL,\n    company_name character varying(40) NOT NULL,\n    phone character varying(24)\n);\n\n\n\n--\n-- Name: suppliers; Type: TABLE; Schema: public; Owner: -; Tablespace: \n--\n\nCREATE TABLE suppliers (\n    supplier_id smallint NOT NULL,\n    company_name character varying(40) NOT NULL,\n    contact_name character varying(30),\n    contact_title character varying(30),\n    address character varying(60),\n    city character varying(15),\n    region character varying(15),\n    postal_code character varying(10),\n    country character varying(15),\n    phone character varying(24),\n    fax character varying(24),\n    homepage text\n);\n\n\n--\n-- Name: territories; Type: TABLE; Schema: public; Owner: -; Tablespace: \n--\n\nCREATE TABLE territories (\n    territory_id character varying(20) NOT NULL,\n    territory_description bpchar NOT NULL,\n    region_id smallint NOT NULL\n);\n\n\n--\n-- Name: us_states; Type: TABLE; Schema: public; Owner: -; Tablespace: \n--\n\nCREATE TABLE us_states (\n    state_id smallint NOT NULL,\n    state_name character varying(100),\n    state_abbr character varying(2),\n    state_region character varying(50)\n);\n\n\n--\n-- Data for Name: categories; Type: TABLE DATA; Schema: public; Owner: -\n--\n\nINSERT INTO categories VALUES (1, 'Beverages', 'Soft drinks, coffees, teas, beers, and ales', '\\x');\nINSERT INTO categories VALUES (2, 'Condiments', 'Sweet and savory sauces, relishes, spreads, and seasonings', '\\x');\nINSERT INTO categories VALUES (3, 'Confections', 'Desserts, candies, and sweet breads', '\\x');\nINSERT INTO categories VALUES (4, 'Dairy Products', 'Cheeses', '\\x');\nINSERT INTO categories VALUES (5, 'Grains/Cereals', 'Breads, crackers, pasta, and cereal', '\\x');\nINSERT INTO categories VALUES (6, 'Meat/Poultry', 'Prepared meats', '\\x');\nINSERT INTO categories VALUES (7, 'Produce', 'Dried fruit and bean curd', '\\x');\nINSERT INTO categories VALUES (8, 'Seafood', 'Seaweed and fish', '\\x');\n\n\n--\n-- Data for Name: customer_customer_demo; Type: TABLE DATA; Schema: public; Owner: -\n--\n\n\n\n--\n-- Data for Name: customer_demographics; Type: TABLE DATA; Schema: public; Owner: -\n--\n\n\n\n--\n-- Data for Name: customers; Type: TABLE DATA; Schema: public; Owner: -\n--\n\nINSERT INTO customers VALUES ('ALFKI', 'Alfreds Futterkiste', 'Maria Anders', 'Sales Representative', 'Obere Str. 57', 'Berlin', NULL, '12209', 'Germany', '030-0074321', '030-0076545');\nINSERT INTO customers VALUES ('ANATR', 'Ana Trujillo Emparedados y helados', 'Ana Trujillo', 'Owner', 'Avda. de la Constitución 2222', 'México D.F.', NULL, '05021', 'Mexico', '(5) 555-4729', '(5) 555-3745');\nINSERT INTO customers VALUES ('ANTON', 'Antonio Moreno Taquería', 'Antonio Moreno', 'Owner', 'Mataderos  2312', 'México D.F.', NULL, '05023', 'Mexico', '(5) 555-3932', NULL);\nINSERT INTO customers VALUES ('AROUT', 'Around the Horn', 'Thomas Hardy', 'Sales Representative', '120 Hanover Sq.', 'London', NULL, 'WA1 1DP', 'UK', '(171) 555-7788', '(171) 555-6750');\nINSERT INTO customers VALUES ('BERGS', 'Berglunds snabbköp', 'Christina Berglund', 'Order Administrator', 'Berguvsvägen  8', 'Luleå', NULL, 'S-958 22', 'Sweden', '0921-12 34 65', '0921-12 34 67');\nINSERT INTO customers VALUES ('BLAUS', 'Blauer See Delikatessen', 'Hanna Moos', 'Sales Representative', 'Forsterstr. 57', 'Mannheim', NULL, '68306', 'Germany', '0621-08460', '0621-08924');\nINSERT INTO customers VALUES ('BLONP', 'Blondesddsl père et fils', 'Frédérique Citeaux', 'Marketing Manager', '24, place Kléber', 'Strasbourg', NULL, '67000', 'France', '88.60.15.31', '88.60.15.32');\nINSERT INTO customers VALUES ('BOLID', 'Bólido Comidas preparadas', 'Martín Sommer', 'Owner', 'C/ Araquil, 67', 'Madrid', NULL, '28023', 'Spain', '(91) 555 22 82', '(91) 555 91 99');\nINSERT INTO customers VALUES ('BONAP', 'Bon app''', 'Laurence Lebihan', 'Owner', '12, rue des Bouchers', 'Marseille', NULL, '13008', 'France', '91.24.45.40', '91.24.45.41');\nINSERT INTO customers VALUES ('BOTTM', 'Bottom-Dollar Markets', 'Elizabeth Lincoln', 'Accounting Manager', '23 Tsawassen Blvd.', 'Tsawassen', 'BC', 'T2F 8M4', 'Canada', '(604) 555-4729', '(604) 555-3745');\nINSERT INTO customers VALUES ('BSBEV', 'B''s Beverages', 'Victoria Ashworth', 'Sales Representative', 'Fauntleroy Circus', 'London', NULL, 'EC2 5NT', 'UK', '(171) 555-1212', NULL);\nINSERT INTO customers VALUES ('CACTU', 'Cactus Comidas para llevar', 'Patricio Simpson', 'Sales Agent', 'Cerrito 333', 'Buenos Aires', NULL, '1010', 'Argentina', '(1) 135-5555', '(1) 135-4892');\nINSERT INTO customers VALUES ('CENTC', 'Centro comercial Moctezuma', 'Francisco Chang', 'Marketing Manager', 'Sierras de Granada 9993', 'México D.F.', NULL, '05022', 'Mexico', '(5) 555-3392', '(5) 555-7293');\nINSERT INTO customers VALUES ('CHOPS', 'Chop-suey Chinese', 'Yang Wang', 'Owner', 'Hauptstr. 29', 'Bern', NULL, '3012', 'Switzerland', '0452-076545', NULL);\nINSERT INTO customers VALUES ('COMMI', 'Comércio Mineiro', 'Pedro Afonso', 'Sales Associate', 'Av. dos Lusíadas, 23', 'Sao Paulo', 'SP', '05432-043', 'Brazil', '(11) 555-7647', NULL);\nINSERT INTO customers VALUES ('CONSH', 'Consolidated Holdings', 'Elizabeth Brown', 'Sales Representative', 'Berkeley Gardens 12  Brewery', 'London', NULL, 'WX1 6LT', 'UK', '(171) 555-2282', '(171) 555-9199');\nINSERT INTO customers VALUES ('DRACD', 'Drachenblut Delikatessen', 'Sven Ottlieb', 'Order Administrator', 'Walserweg 21', 'Aachen', NULL, '52066', 'Germany', '0241-039123', '0241-059428');\nINSERT INTO customers VALUES ('DUMON', 'Du monde entier', 'Janine Labrune', 'Owner', '67, rue des Cinquante Otages', 'Nantes', NULL, '44000', 'France', '40.67.88.88', '40.67.89.89');\nINSERT INTO customers VALUES ('EASTC', 'Eastern Connection', 'Ann Devon', 'Sales Agent', '35 King George', 'London', NULL, 'WX3 6FW', 'UK', '(171) 555-0297', '(171) 555-3373');\nINSERT INTO customers VALUES ('ERNSH', 'Ernst Handel', 'Roland Mendel', 'Sales Manager', 'Kirchgasse 6', 'Graz', NULL, '8010', 'Austria', '7675-3425', '7675-3426');\nINSERT INTO customers VALUES ('FAMIA', 'Familia Arquibaldo', 'Aria Cruz', 'Marketing Assistant', 'Rua Orós, 92', 'Sao Paulo', 'SP', '05442-030', 'Brazil', '(11) 555-9857', NULL);\nINSERT INTO customers VALUES ('FISSA', 'FISSA Fabrica Inter. Salchichas S.A.', 'Diego Roel', 'Accounting Manager', 'C/ Moralzarzal, 86', 'Madrid', NULL, '28034', 'Spain', '(91) 555 94 44', '(91) 555 55 93');\nINSERT INTO customers VALUES ('FOLIG', 'Folies gourmandes', 'Martine Rancé', 'Assistant Sales Agent', '184, chaussée de Tournai', 'Lille', NULL, '59000', 'France', '20.16.10.16', '20.16.10.17');\nINSERT INTO customers VALUES ('FOLKO', 'Folk och fä HB', 'Maria Larsson', 'Owner', 'Åkergatan 24', 'Bräcke', NULL, 'S-844 67', 'Sweden', '0695-34 67 21', NULL);\nINSERT INTO customers VALUES ('FRANK', 'Frankenversand', 'Peter Franken', 'Marketing Manager', 'Berliner Platz 43', 'München', NULL, '80805', 'Germany', '089-0877310', '089-0877451');\nINSERT INTO customers VALUES ('FRANR', 'France restauration', 'Carine Schmitt', 'Marketing Manager', '54, rue Royale', 'Nantes', NULL, '44000', 'France', '40.32.21.21', '40.32.21.20');\nINSERT INTO customers VALUES ('FRANS', 'Franchi S.p.A.', 'Paolo Accorti', 'Sales Representative', 'Via Monte Bianco 34', 'Torino', NULL, '10100', 'Italy', '011-4988260', '011-4988261');\nINSERT INTO customers VALUES ('FURIB', 'Furia Bacalhau e Frutos do Mar', 'Lino Rodriguez', 'Sales Manager', 'Jardim das rosas n. 32', 'Lisboa', NULL, '1675', 'Portugal', '(1) 354-2534', '(1) 354-2535');\nINSERT INTO customers VALUES ('GALED', 'Galería del gastrónomo', 'Eduardo Saavedra', 'Marketing Manager', 'Rambla de Cataluña, 23', 'Barcelona', NULL, '08022', 'Spain', '(93) 203 4560', '(93) 203 4561');\nINSERT INTO customers VALUES ('GODOS', 'Godos Cocina Típica', 'José Pedro Freyre', 'Sales Manager', 'C/ Romero, 33', 'Sevilla', NULL, '41101', 'Spain', '(95) 555 82 82', NULL);\nINSERT INTO customers VALUES ('GOURL', 'Gourmet Lanchonetes', 'André Fonseca', 'Sales Associate', 'Av. Brasil, 442', 'Campinas', 'SP', '04876-786', 'Brazil', '(11) 555-9482', NULL);\nINSERT INTO customers VALUES ('GREAL', 'Great Lakes Food Market', 'Howard Snyder', 'Marketing Manager', '2732 Baker Blvd.', 'Eugene', 'OR', '97403', 'USA', '(503) 555-7555', NULL);\nINSERT INTO customers VALUES ('GROSR', 'GROSELLA-Restaurante', 'Manuel Pereira', 'Owner', '5ª Ave. Los Palos Grandes', 'Caracas', 'DF', '1081', 'Venezuela', '(2) 283-2951', '(2) 283-3397');\nINSERT INTO customers VALUES ('HANAR', 'Hanari Carnes', 'Mario Pontes', 'Accounting Manager', 'Rua do Paço, 67', 'Rio de Janeiro', 'RJ', '05454-876', 'Brazil', '(21) 555-0091', '(21) 555-8765');\nINSERT INTO customers VALUES ('HILAA', 'HILARION-Abastos', 'Carlos Hernández', 'Sales Representative', 'Carrera 22 con Ave. Carlos Soublette #8-35', 'San Cristóbal', 'Táchira', '5022', 'Venezuela', '(5) 555-1340', '(5) 555-1948');\nINSERT INTO customers VALUES ('HUNGC', 'Hungry Coyote Import Store', 'Yoshi Latimer', 'Sales Representative', 'City Center Plaza 516 Main St.', 'Elgin', 'OR', '97827', 'USA', '(503) 555-6874', '(503) 555-2376');\nINSERT INTO customers VALUES ('HUNGO', 'Hungry Owl All-Night Grocers', 'Patricia McKenna', 'Sales Associate', '8 Johnstown Road', 'Cork', 'Co. Cork', NULL, 'Ireland', '2967 542', '2967 3333');\nINSERT INTO customers VALUES ('ISLAT', 'Island Trading', 'Helen Bennett', 'Marketing Manager', 'Garden House Crowther Way', 'Cowes', 'Isle of Wight', 'PO31 7PJ', 'UK', '(198) 555-8888', NULL);\nINSERT INTO customers VALUES ('KOENE', 'Königlich Essen', 'Philip Cramer', 'Sales Associate', 'Maubelstr. 90', 'Brandenburg', NULL, '14776', 'Germany', '0555-09876', NULL);\nINSERT INTO customers VALUES ('LACOR', 'La corne d''abondance', 'Daniel Tonini', 'Sales Representative', '67, avenue de l''Europe', 'Versailles', NULL, '78000', 'France', '30.59.84.10', '30.59.85.11');\nINSERT INTO customers VALUES ('LAMAI', 'La maison d''Asie', 'Annette Roulet', 'Sales Manager', '1 rue Alsace-Lorraine', 'Toulouse', NULL, '31000', 'France', '61.77.61.10', '61.77.61.11');\nINSERT INTO customers VALUES ('LAUGB', 'Laughing Bacchus Wine Cellars', 'Yoshi Tannamuri', 'Marketing Assistant', '1900 Oak St.', 'Vancouver', 'BC', 'V3F 2K1', 'Canada', '(604) 555-3392', '(604) 555-7293');\nINSERT INTO customers VALUES ('LAZYK', 'Lazy K Kountry Store', 'John Steel', 'Marketing Manager', '12 Orchestra Terrace', 'Walla Walla', 'WA', '99362', 'USA', '(509) 555-7969', '(509) 555-6221');\nINSERT INTO customers VALUES ('LEHMS', 'Lehmanns Marktstand', 'Renate Messner', 'Sales Representative', 'Magazinweg 7', 'Frankfurt a.M.', NULL, '60528', 'Germany', '069-0245984', '069-0245874');\nINSERT INTO customers VALUES ('LETSS', 'Let''s Stop N Shop', 'Jaime Yorres', 'Owner', '87 Polk St. Suite 5', 'San Francisco', 'CA', '94117', 'USA', '(415) 555-5938', NULL);\nINSERT INTO customers VALUES ('LILAS', 'LILA-Supermercado', 'Carlos González', 'Accounting Manager', 'Carrera 52 con Ave. Bolívar #65-98 Llano Largo', 'Barquisimeto', 'Lara', '3508', 'Venezuela', '(9) 331-6954', '(9) 331-7256');\nINSERT INTO customers VALUES ('LINOD', 'LINO-Delicateses', 'Felipe Izquierdo', 'Owner', 'Ave. 5 de Mayo Porlamar', 'I. de Margarita', 'Nueva Esparta', '4980', 'Venezuela', '(8) 34-56-12', '(8) 34-93-93');\nINSERT INTO customers VALUES ('LONEP', 'Lonesome Pine Restaurant', 'Fran Wilson', 'Sales Manager', '89 Chiaroscuro Rd.', 'Portland', 'OR', '97219', 'USA', '(503) 555-9573', '(503) 555-9646');\nINSERT INTO customers VALUES ('MAGAA', 'Magazzini Alimentari Riuniti', 'Giovanni Rovelli', 'Marketing Manager', 'Via Ludovico il Moro 22', 'Bergamo', NULL, '24100', 'Italy', '035-640230', '035-640231');\nINSERT INTO customers VALUES ('MAISD', 'Maison Dewey', 'Catherine Dewey', 'Sales Agent', 'Rue Joseph-Bens 532', 'Bruxelles', NULL, 'B-1180', 'Belgium', '(02) 201 24 67', '(02) 201 24 68');\nINSERT INTO customers VALUES ('MEREP', 'Mère Paillarde', 'Jean Fresnière', 'Marketing Assistant', '43 rue St. Laurent', 'Montréal', 'Québec', 'H1J 1C3', 'Canada', '(514) 555-8054', '(514) 555-8055');\nINSERT INTO customers VALUES ('MORGK', 'Morgenstern Gesundkost', 'Alexander Feuer', 'Marketing Assistant', 'Heerstr. 22', 'Leipzig', NULL, '04179', 'Germany', '0342-023176', NULL);\nINSERT INTO customers VALUES ('NORTS', 'North/South', 'Simon Crowther', 'Sales Associate', 'South House 300 Queensbridge', 'London', NULL, 'SW7 1RZ', 'UK', '(171) 555-7733', '(171) 555-2530');\nINSERT INTO customers VALUES ('OCEAN', 'Océano Atlántico Ltda.', 'Yvonne Moncada', 'Sales Agent', 'Ing. Gustavo Moncada 8585 Piso 20-A', 'Buenos Aires', NULL, '1010', 'Argentina', '(1) 135-5333', '(1) 135-5535');\nINSERT INTO customers VALUES ('OLDWO', 'Old World Delicatessen', 'Rene Phillips', 'Sales Representative', '2743 Bering St.', 'Anchorage', 'AK', '99508', 'USA', '(907) 555-7584', '(907) 555-2880');\nINSERT INTO customers VALUES ('OTTIK', 'Ottilies Käseladen', 'Henriette Pfalzheim', 'Owner', 'Mehrheimerstr. 369', 'Köln', NULL, '50739', 'Germany', '0221-0644327', '0221-0765721');\nINSERT INTO customers VALUES ('PARIS', 'Paris spécialités', 'Marie Bertrand', 'Owner', '265, boulevard Charonne', 'Paris', NULL, '75012', 'France', '(1) 42.34.22.66', '(1) 42.34.22.77');\nINSERT INTO customers VALUES ('PERIC', 'Pericles Comidas clásicas', 'Guillermo Fernández', 'Sales Representative', 'Calle Dr. Jorge Cash 321', 'México D.F.', NULL, '05033', 'Mexico', '(5) 552-3745', '(5) 545-3745');\nINSERT INTO customers VALUES ('PICCO', 'Piccolo und mehr', 'Georg Pipps', 'Sales Manager', 'Geislweg 14', 'Salzburg', NULL, '5020', 'Austria', '6562-9722', '6562-9723');\nINSERT INTO customers VALUES ('PRINI', 'Princesa Isabel Vinhos', 'Isabel de Castro', 'Sales Representative', 'Estrada da saúde n. 58', 'Lisboa', NULL, '1756', 'Portugal', '(1) 356-5634', NULL);\nINSERT INTO customers VALUES ('QUEDE', 'Que Delícia', 'Bernardo Batista', 'Accounting Manager', 'Rua da Panificadora, 12', 'Rio de Janeiro', 'RJ', '02389-673', 'Brazil', '(21) 555-4252', '(21) 555-4545');\nINSERT INTO customers VALUES ('QUEEN', 'Queen Cozinha', 'Lúcia Carvalho', 'Marketing Assistant', 'Alameda dos Canàrios, 891', 'Sao Paulo', 'SP', '05487-020', 'Brazil', '(11) 555-1189', NULL);\nINSERT INTO customers VALUES ('QUICK', 'QUICK-Stop', 'Horst Kloss', 'Accounting Manager', 'Taucherstraße 10', 'Cunewalde', NULL, '01307', 'Germany', '0372-035188', NULL);\nINSERT INTO customers VALUES ('RANCH', 'Rancho grande', 'Sergio Gutiérrez', 'Sales Representative', 'Av. del Libertador 900', 'Buenos Aires', NULL, '1010', 'Argentina', '(1) 123-5555', '(1) 123-5556');\nINSERT INTO customers VALUES ('RATTC', 'Rattlesnake Canyon Grocery', 'Paula Wilson', 'Assistant Sales Representative', '2817 Milton Dr.', 'Albuquerque', 'NM', '87110', 'USA', '(505) 555-5939', '(505) 555-3620');\nINSERT INTO customers VALUES ('REGGC', 'Reggiani Caseifici', 'Maurizio Moroni', 'Sales Associate', 'Strada Provinciale 124', 'Reggio Emilia', NULL, '42100', 'Italy', '0522-556721', '0522-556722');\nINSERT INTO customers VALUES ('RICAR', 'Ricardo Adocicados', 'Janete Limeira', 'Assistant Sales Agent', 'Av. Copacabana, 267', 'Rio de Janeiro', 'RJ', '02389-890', 'Brazil', '(21) 555-3412', NULL);\nINSERT INTO customers VALUES ('RICSU', 'Richter Supermarkt', 'Michael Holz', 'Sales Manager', 'Grenzacherweg 237', 'Genève', NULL, '1203', 'Switzerland', '0897-034214', NULL);\nINSERT INTO customers VALUES ('ROMEY', 'Romero y tomillo', 'Alejandra Camino', 'Accounting Manager', 'Gran Vía, 1', 'Madrid', NULL, '28001', 'Spain', '(91) 745 6200', '(91) 745 6210');\nINSERT INTO customers VALUES ('SANTG', 'Santé Gourmet', 'Jonas Bergulfsen', 'Owner', 'Erling Skakkes gate 78', 'Stavern', NULL, '4110', 'Norway', '07-98 92 35', '07-98 92 47');\nINSERT INTO customers VALUES ('SAVEA', 'Save-a-lot Markets', 'Jose Pavarotti', 'Sales Representative', '187 Suffolk Ln.', 'Boise', 'ID', '83720', 'USA', '(208) 555-8097', NULL);\nINSERT INTO customers VALUES ('SEVES', 'Seven Seas Imports', 'Hari Kumar', 'Sales Manager', '90 Wadhurst Rd.', 'London', NULL, 'OX15 4NB', 'UK', '(171) 555-1717', '(171) 555-5646');\nINSERT INTO customers VALUES ('SIMOB', 'Simons bistro', 'Jytte Petersen', 'Owner', 'Vinbæltet 34', 'Kobenhavn', NULL, '1734', 'Denmark', '31 12 34 56', '31 13 35 57');\nINSERT INTO customers VALUES ('SPECD', 'Spécialités du monde', 'Dominique Perrier', 'Marketing Manager', '25, rue Lauriston', 'Paris', NULL, '75016', 'France', '(1) 47.55.60.10', '(1) 47.55.60.20');\nINSERT INTO customers VALUES ('SPLIR', 'Split Rail Beer & Ale', 'Art Braunschweiger', 'Sales Manager', 'P.O. Box 555', 'Lander', 'WY', '82520', 'USA', '(307) 555-4680', '(307) 555-6525');\nINSERT INTO customers VALUES ('SUPRD', 'Suprêmes délices', 'Pascale Cartrain', 'Accounting Manager', 'Boulevard Tirou, 255', 'Charleroi', NULL, 'B-6000', 'Belgium', '(071) 23 67 22 20', '(071) 23 67 22 21');\nINSERT INTO customers VALUES ('THEBI', 'The Big Cheese', 'Liz Nixon', 'Marketing Manager', '89 Jefferson Way Suite 2', 'Portland', 'OR', '97201', 'USA', '(503) 555-3612', NULL);\nINSERT INTO customers VALUES ('THECR', 'The Cracker Box', 'Liu Wong', 'Marketing Assistant', '55 Grizzly Peak Rd.', 'Butte', 'MT', '59801', 'USA', '(406) 555-5834', '(406) 555-8083');\nINSERT INTO customers VALUES ('TOMSP', 'Toms Spezialitäten', 'Karin Josephs', 'Marketing Manager', 'Luisenstr. 48', 'Münster', NULL, '44087', 'Germany', '0251-031259', '0251-035695');\nINSERT INTO customers VALUES ('TORTU', 'Tortuga Restaurante', 'Miguel Angel Paolino', 'Owner', 'Avda. Azteca 123', 'México D.F.', NULL, '05033', 'Mexico', '(5) 555-2933', NULL);\nINSERT INTO customers VALUES ('TRADH', 'Tradição Hipermercados', 'Anabela Domingues', 'Sales Representative', 'Av. Inês de Castro, 414', 'Sao Paulo', 'SP', '05634-030', 'Brazil', '(11) 555-2167', '(11) 555-2168');\nINSERT INTO customers VALUES ('TRAIH', 'Trail''s Head Gourmet Provisioners', 'Helvetius Nagy', 'Sales Associate', '722 DaVinci Blvd.', 'Kirkland', 'WA', '98034', 'USA', '(206) 555-8257', '(206) 555-2174');\nINSERT INTO customers VALUES ('VAFFE', 'Vaffeljernet', 'Palle Ibsen', 'Sales Manager', 'Smagsloget 45', 'Århus', NULL, '8200', 'Denmark', '86 21 32 43', '86 22 33 44');\nINSERT INTO customers VALUES ('VICTE', 'Victuailles en stock', 'Mary Saveley', 'Sales Agent', '2, rue du Commerce', 'Lyon', NULL, '69004', 'France', '78.32.54.86', '78.32.54.87');\nINSERT INTO customers VALUES ('VINET', 'Vins et alcools Chevalier', 'Paul Henriot', 'Accounting Manager', '59 rue de l''Abbaye', 'Reims', NULL, '51100', 'France', '26.47.15.10', '26.47.15.11');\nINSERT INTO customers VALUES ('WANDK', 'Die Wandernde Kuh', 'Rita Müller', 'Sales Representative', 'Adenauerallee 900', 'Stuttgart', NULL, '70563', 'Germany', '0711-020361', '0711-035428');\nINSERT INTO customers VALUES ('WARTH', 'Wartian Herkku', 'Pirkko Koskitalo', 'Accounting Manager', 'Torikatu 38', 'Oulu', NULL, '90110', 'Finland', '981-443655', '981-443655');\nINSERT INTO customers VALUES ('WELLI', 'Wellington Importadora', 'Paula Parente', 'Sales Manager', 'Rua do Mercado, 12', 'Resende', 'SP', '08737-363', 'Brazil', '(14) 555-8122', NULL);\nINSERT INTO customers VALUES ('WHITC', 'White Clover Markets', 'Karl Jablonski', 'Owner', '305 - 14th Ave. S. Suite 3B', 'Seattle', 'WA', '98128', 'USA', '(206) 555-4112', '(206) 555-4115');\nINSERT INTO customers VALUES ('WILMK', 'Wilman Kala', 'Matti Karttunen', 'Owner/Marketing Assistant', 'Keskuskatu 45', 'Helsinki', NULL, '21240', 'Finland', '90-224 8858', '90-224 8858');\nINSERT INTO customers VALUES ('WOLZA', 'Wolski  Zajazd', 'Zbyszek Piestrzeniewicz', 'Owner', 'ul. Filtrowa 68', 'Warszawa', NULL, '01-012', 'Poland', '(26) 642-7012', '(26) 642-7012');\n\n\n--\n-- Data for Name: employees; Type: TABLE DATA; Schema: public; Owner: -\n--\n\nINSERT INTO employees VALUES (1, 'Davolio', 'Nancy', 'Sales Representative', 'Ms.', '1948-12-08', '1992-05-01', '507 - 20th Ave. E.\\nApt. 2A', 'Seattle', 'WA', '98122', 'USA', '(206) 555-9857', '5467', '\\x', 'Education includes a BA in psychology from Colorado State University in 1970.  She also completed The Art of the Cold Call.  Nancy is a member of Toastmasters International.', 2, 'http://accweb/emmployees/davolio.bmp');\nINSERT INTO employees VALUES (2, 'Fuller', 'Andrew', 'Vice President, Sales', 'Dr.', '1952-02-19', '1992-08-14', '908 W. Capital Way', 'Tacoma', 'WA', '98401', 'USA', '(206) 555-9482', '3457', '\\x', 'Andrew received his BTS commercial in 1974 and a Ph.D. in international marketing from the University of Dallas in 1981.  He is fluent in French and Italian and reads German.  He joined the company as a sales representative, was promoted to sales manager in January 1992 and to vice president of sales in March 1993.  Andrew is a member of the Sales Management Roundtable, the Seattle Chamber of Commerce, and the Pacific Rim Importers Association.', NULL, 'http://accweb/emmployees/fuller.bmp');\nINSERT INTO employees VALUES (3, 'Leverling', 'Janet', 'Sales Representative', 'Ms.', '1963-08-30', '1992-04-01', '722 Moss Bay Blvd.', 'Kirkland', 'WA', '98033', 'USA', '(206) 555-3412', '3355', '\\x', 'Janet has a BS degree in chemistry from Boston College (1984).  She has also completed a certificate program in food retailing management.  Janet was hired as a sales associate in 1991 and promoted to sales representative in February 1992.', 2, 'http://accweb/emmployees/leverling.bmp');\nINSERT INTO employees VALUES (4, 'Peacock', 'Margaret', 'Sales Representative', 'Mrs.', '1937-09-19', '1993-05-03', '4110 Old Redmond Rd.', 'Redmond', 'WA', '98052', 'USA', '(206) 555-8122', '5176', '\\x', 'Margaret holds a BA in English literature from Concordia College (1958) and an MA from the American Institute of Culinary Arts (1966).  She was assigned to the London office temporarily from July through November 1992.', 2, 'http://accweb/emmployees/peacock.bmp');\nINSERT INTO employees VALUES (5, 'Buchanan', 'Steven', 'Sales Manager', 'Mr.', '1955-03-04', '1993-10-17', '14 Garrett Hill', 'London', NULL, 'SW1 8JR', 'UK', '(71) 555-4848', '3453', '\\x', 'Steven Buchanan graduated from St. Andrews University, Scotland, with a BSC degree in 1976.  Upon joining the company as a sales representative in 1992, he spent 6 months in an orientation program at the Seattle office and then returned to his permanent post in London.  He was promoted to sales manager in March 1993.  Mr. Buchanan has completed the courses Successful Telemarketing and International Sales Management.  He is fluent in French.', 2, 'http://accweb/emmployees/buchanan.bmp');\nINSERT INTO employees VALUES (6, 'Suyama', 'Michael', 'Sales Representative', 'Mr.', '1963-07-02', '1993-10-17', 'Coventry House\\nMiner Rd.', 'London', NULL, 'EC2 7JR', 'UK', '(71) 555-7773', '428', '\\x', 'Michael is a graduate of Sussex University (MA, economics, 1983) and the University of California at Los Angeles (MBA, marketing, 1986).  He has also taken the courses Multi-Cultural Selling and Time Management for the Sales Professional.  He is fluent in Japanese and can read and write French, Portuguese, and Spanish.', 5, 'http://accweb/emmployees/davolio.bmp');\nINSERT INTO employees VALUES (7, 'King', 'Robert', 'Sales Representative', 'Mr.', '1960-05-29', '1994-01-02', 'Edgeham Hollow\\nWinchester Way', 'London', NULL, 'RG1 9SP', 'UK', '(71) 555-5598', '465', '\\x', 'Robert King served in the Peace Corps and traveled extensively before completing his degree in English at the University of Michigan in 1992, the year he joined the company.  After completing a course entitled Selling in Europe, he was transferred to the London office in March 1993.', 5, 'http://accweb/emmployees/davolio.bmp');\nINSERT INTO employees VALUES (8, 'Callahan', 'Laura', 'Inside Sales Coordinator', 'Ms.', '1958-01-09', '1994-03-05', '4726 - 11th Ave. N.E.', 'Seattle', 'WA', '98105', 'USA', '(206) 555-1189', '2344', '\\x', 'Laura received a BA in psychology from the University of Washington.  She has also completed a course in business French.  She reads and writes French.', 2, 'http://accweb/emmployees/davolio.bmp');\nINSERT INTO employees VALUES (9, 'Dodsworth', 'Anne', 'Sales Representative', 'Ms.', '1966-01-27', '1994-11-15', '7 Houndstooth Rd.', 'London', NULL, 'WG2 7LT', 'UK', '(71) 555-4444', '452', '\\x', 'Anne has a BA degree in English from St. Lawrence College.  She is fluent in French and German.', 5, 'http://accweb/emmployees/davolio.bmp');\n\n\n--\n-- Data for Name: employee_territories; Type: TABLE DATA; Schema: public; Owner: -\n--\n\nINSERT INTO employee_territories VALUES (1, '06897');\nINSERT INTO employee_territories VALUES (1, '19713');\nINSERT INTO employee_territories VALUES (2, '01581');\nINSERT INTO employee_territories VALUES (2, '01730');\nINSERT INTO employee_territories VALUES (2, '01833');\nINSERT INTO employee_territories VALUES (2, '02116');\nINSERT INTO employee_territories VALUES (2, '02139');\nINSERT INTO employee_territories VALUES (2, '02184');\nINSERT INTO employee_territories VALUES (2, '40222');\nINSERT INTO employee_territories VALUES (3, '30346');\nINSERT INTO employee_territories VALUES (3, '31406');\nINSERT INTO employee_territories VALUES (3, '32859');\nINSERT INTO employee_territories VALUES (3, '33607');\nINSERT INTO employee_territories VALUES (4, '20852');\nINSERT INTO employee_territories VALUES (4, '27403');\nINSERT INTO employee_territories VALUES (4, '27511');\nINSERT INTO employee_territories VALUES (5, '02903');\nINSERT INTO employee_territories VALUES (5, '07960');\nINSERT INTO employee_territories VALUES (5, '08837');\nINSERT INTO employee_territories VALUES (5, '10019');\nINSERT INTO employee_territories VALUES (5, '10038');\nINSERT INTO employee_territories VALUES (5, '11747');\nINSERT INTO employee_territories VALUES (5, '14450');\nINSERT INTO employee_territories VALUES (6, '85014');\nINSERT INTO employee_territories VALUES (6, '85251');\nINSERT INTO employee_territories VALUES (6, '98004');\nINSERT INTO employee_territories VALUES (6, '98052');\nINSERT INTO employee_territories VALUES (6, '98104');\nINSERT INTO employee_territories VALUES (7, '60179');\nINSERT INTO employee_territories VALUES (7, '60601');\nINSERT INTO employee_territories VALUES (7, '80202');\nINSERT INTO employee_territories VALUES (7, '80909');\nINSERT INTO employee_territories VALUES (7, '90405');\nINSERT INTO employee_territories VALUES (7, '94025');\nINSERT INTO employee_territories VALUES (7, '94105');\nINSERT INTO employee_territories VALUES (7, '95008');\nINSERT INTO employee_territories VALUES (7, '95054');\nINSERT INTO employee_territories VALUES (7, '95060');\nINSERT INTO employee_territories VALUES (8, '19428');\nINSERT INTO employee_territories VALUES (8, '44122');\nINSERT INTO employee_territories VALUES (8, '45839');\nINSERT INTO employee_territories VALUES (8, '53404');\nINSERT INTO employee_territories VALUES (9, '03049');\nINSERT INTO employee_territories VALUES (9, '03801');\nINSERT INTO employee_territories VALUES (9, '48075');\nINSERT INTO employee_territories VALUES (9, '48084');\nINSERT INTO employee_territories VALUES (9, '48304');\nINSERT INTO employee_territories VALUES (9, '55113');\nINSERT INTO employee_territories VALUES (9, '55439');\n\n\n--\n-- Data for Name: order_details; Type: TABLE DATA; Schema: public; Owner: -\n--\n\nINSERT INTO order_details VALUES (10248, 11, 14, 12, 0);\nINSERT INTO order_details VALUES (10248, 42, 9.80000019, 10, 0);\nINSERT INTO order_details VALUES (10248, 72, 34.7999992, 5, 0);\nINSERT INTO order_details VALUES (10249, 14, 18.6000004, 9, 0);\nINSERT INTO order_details VALUES (10249, 51, 42.4000015, 40, 0);\nINSERT INTO order_details VALUES (10250, 41, 7.69999981, 10, 0);\nINSERT INTO order_details VALUES (10250, 51, 42.4000015, 35, 0.150000006);\nINSERT INTO order_details VALUES (10250, 65, 16.7999992, 15, 0.150000006);\nINSERT INTO order_details VALUES (10251, 22, 16.7999992, 6, 0.0500000007);\nINSERT INTO order_details VALUES (10251, 57, 15.6000004, 15, 0.0500000007);\nINSERT INTO order_details VALUES (10251, 65, 16.7999992, 20, 0);\nINSERT INTO order_details VALUES (10252, 20, 64.8000031, 40, 0.0500000007);\nINSERT INTO order_details VALUES (10252, 33, 2, 25, 0.0500000007);\nINSERT INTO order_details VALUES (10252, 60, 27.2000008, 40, 0);\nINSERT INTO order_details VALUES (10253, 31, 10, 20, 0);\nINSERT INTO order_details VALUES (10253, 39, 14.3999996, 42, 0);\nINSERT INTO order_details VALUES (10253, 49, 16, 40, 0);\nINSERT INTO order_details VALUES (10254, 24, 3.5999999, 15, 0.150000006);\nINSERT INTO order_details VALUES (10254, 55, 19.2000008, 21, 0.150000006);\nINSERT INTO order_details VALUES (10254, 74, 8, 21, 0);\nINSERT INTO order_details VALUES (10255, 2, 15.1999998, 20, 0);\nINSERT INTO order_details VALUES (10255, 16, 13.8999996, 35, 0);\nINSERT INTO order_details VALUES (10255, 36, 15.1999998, 25, 0);\nINSERT INTO order_details VALUES (10255, 59, 44, 30, 0);\nINSERT INTO order_details VALUES (10256, 53, 26.2000008, 15, 0);\nINSERT INTO order_details VALUES (10256, 77, 10.3999996, 12, 0);\nINSERT INTO order_details VALUES (10257, 27, 35.0999985, 25, 0);\nINSERT INTO order_details VALUES (10257, 39, 14.3999996, 6, 0);\nINSERT INTO order_details VALUES (10257, 77, 10.3999996, 15, 0);\nINSERT INTO order_details VALUES (10258, 2, 15.1999998, 50, 0.200000003);\nINSERT INTO order_details VALUES (10258, 5, 17, 65, 0.200000003);\nINSERT INTO order_details VALUES (10258, 32, 25.6000004, 6, 0.200000003);\nINSERT INTO order_details VALUES (10259, 21, 8, 10, 0);\nINSERT INTO order_details VALUES (10259, 37, 20.7999992, 1, 0);\nINSERT INTO order_details VALUES (10260, 41, 7.69999981, 16, 0.25);\nINSERT INTO order_details VALUES (10260, 57, 15.6000004, 50, 0);\nINSERT INTO order_details VALUES (10260, 62, 39.4000015, 15, 0.25);\nINSERT INTO order_details VALUES (10260, 70, 12, 21, 0.25);\nINSERT INTO order_details VALUES (10261, 21, 8, 20, 0);\nINSERT INTO order_details VALUES (10261, 35, 14.3999996, 20, 0);\nINSERT INTO order_details VALUES (10262, 5, 17, 12, 0.200000003);\nINSERT INTO order_details VALUES (10262, 7, 24, 15, 0);\nINSERT INTO order_details VALUES (10262, 56, 30.3999996, 2, 0);\nINSERT INTO order_details VALUES (10263, 16, 13.8999996, 60, 0.25);\nINSERT INTO order_details VALUES (10263, 24, 3.5999999, 28, 0);\nINSERT INTO order_details VALUES (10263, 30, 20.7000008, 60, 0.25);\nINSERT INTO order_details VALUES (10263, 74, 8, 36, 0.25);\nINSERT INTO order_details VALUES (10264, 2, 15.1999998, 35, 0);\nINSERT INTO order_details VALUES (10264, 41, 7.69999981, 25, 0.150000006);\nINSERT INTO order_details VALUES (10265, 17, 31.2000008, 30, 0);\nINSERT INTO order_details VALUES (10265, 70, 12, 20, 0);\nINSERT INTO order_details VALUES (10266, 12, 30.3999996, 12, 0.0500000007);\nINSERT INTO order_details VALUES (10267, 40, 14.6999998, 50, 0);\nINSERT INTO order_details VALUES (10267, 59, 44, 70, 0.150000006);\nINSERT INTO order_details VALUES (10267, 76, 14.3999996, 15, 0.150000006);\nINSERT INTO order_details VALUES (10268, 29, 99, 10, 0);\nINSERT INTO order_details VALUES (10268, 72, 27.7999992, 4, 0);\nINSERT INTO order_details VALUES (10269, 33, 2, 60, 0.0500000007);\nINSERT INTO order_details VALUES (10269, 72, 27.7999992, 20, 0.0500000007);\nINSERT INTO order_details VALUES (10270, 36, 15.1999998, 30, 0);\nINSERT INTO order_details VALUES (10270, 43, 36.7999992, 25, 0);\nINSERT INTO order_details VALUES (10271, 33, 2, 24, 0);\nINSERT INTO order_details VALUES (10272, 20, 64.8000031, 6, 0);\nINSERT INTO order_details VALUES (10272, 31, 10, 40, 0);\nINSERT INTO order_details VALUES (10272, 72, 27.7999992, 24, 0);\nINSERT INTO order_details VALUES (10273, 10, 24.7999992, 24, 0.0500000007);\nINSERT INTO order_details VALUES (10273, 31, 10, 15, 0.0500000007);\nINSERT INTO order_details VALUES (10273, 33, 2, 20, 0);\nINSERT INTO order_details VALUES (10273, 40, 14.6999998, 60, 0.0500000007);\nINSERT INTO order_details VALUES (10273, 76, 14.3999996, 33, 0.0500000007);\nINSERT INTO order_details VALUES (10274, 71, 17.2000008, 20, 0);\nINSERT INTO order_details VALUES (10274, 72, 27.7999992, 7, 0);\nINSERT INTO order_details VALUES (10275, 24, 3.5999999, 12, 0.0500000007);\nINSERT INTO order_details VALUES (10275, 59, 44, 6, 0.0500000007);\nINSERT INTO order_details VALUES (10276, 10, 24.7999992, 15, 0);\nINSERT INTO order_details VALUES (10276, 13, 4.80000019, 10, 0);\nINSERT INTO order_details VALUES (10277, 28, 36.4000015, 20, 0);\nINSERT INTO order_details VALUES (10277, 62, 39.4000015, 12, 0);\nINSERT INTO order_details VALUES (10278, 44, 15.5, 16, 0);\nINSERT INTO order_details VALUES (10278, 59, 44, 15, 0);\nINSERT INTO order_details VALUES (10278, 63, 35.0999985, 8, 0);\nINSERT INTO order_details VALUES (10278, 73, 12, 25, 0);\nINSERT INTO order_details VALUES (10279, 17, 31.2000008, 15, 0.25);\nINSERT INTO order_details VALUES (10280, 24, 3.5999999, 12, 0);\nINSERT INTO order_details VALUES (10280, 55, 19.2000008, 20, 0);\nINSERT INTO order_details VALUES (10280, 75, 6.19999981, 30, 0);\nINSERT INTO order_details VALUES (10281, 19, 7.30000019, 1, 0);\nINSERT INTO order_details VALUES (10281, 24, 3.5999999, 6, 0);\nINSERT INTO order_details VALUES (10281, 35, 14.3999996, 4, 0);\nINSERT INTO order_details VALUES (10282, 30, 20.7000008, 6, 0);\nINSERT INTO order_details VALUES (10282, 57, 15.6000004, 2, 0);\nINSERT INTO order_details VALUES (10283, 15, 12.3999996, 20, 0);\nINSERT INTO order_details VALUES (10283, 19, 7.30000019, 18, 0);\nINSERT INTO order_details VALUES (10283, 60, 27.2000008, 35, 0);\nINSERT INTO order_details VALUES (10283, 72, 27.7999992, 3, 0);\nINSERT INTO order_details VALUES (10284, 27, 35.0999985, 15, 0.25);\nINSERT INTO order_details VALUES (10284, 44, 15.5, 21, 0);\nINSERT INTO order_details VALUES (10284, 60, 27.2000008, 20, 0.25);\nINSERT INTO order_details VALUES (10284, 67, 11.1999998, 5, 0.25);\nINSERT INTO order_details VALUES (10285, 1, 14.3999996, 45, 0.200000003);\nINSERT INTO order_details VALUES (10285, 40, 14.6999998, 40, 0.200000003);\nINSERT INTO order_details VALUES (10285, 53, 26.2000008, 36, 0.200000003);\nINSERT INTO order_details VALUES (10286, 35, 14.3999996, 100, 0);\nINSERT INTO order_details VALUES (10286, 62, 39.4000015, 40, 0);\nINSERT INTO order_details VALUES (10287, 16, 13.8999996, 40, 0.150000006);\nINSERT INTO order_details VALUES (10287, 34, 11.1999998, 20, 0);\nINSERT INTO order_details VALUES (10287, 46, 9.60000038, 15, 0.150000006);\nINSERT INTO order_details VALUES (10288, 54, 5.9000001, 10, 0.100000001);\nINSERT INTO order_details VALUES (10288, 68, 10, 3, 0.100000001);\nINSERT INTO order_details VALUES (10289, 3, 8, 30, 0);\nINSERT INTO order_details VALUES (10289, 64, 26.6000004, 9, 0);\nINSERT INTO order_details VALUES (10290, 5, 17, 20, 0);\nINSERT INTO order_details VALUES (10290, 29, 99, 15, 0);\nINSERT INTO order_details VALUES (10290, 49, 16, 15, 0);\nINSERT INTO order_details VALUES (10290, 77, 10.3999996, 10, 0);\nINSERT INTO order_details VALUES (10291, 13, 4.80000019, 20, 0.100000001);\nINSERT INTO order_details VALUES (10291, 44, 15.5, 24, 0.100000001);\nINSERT INTO order_details VALUES (10291, 51, 42.4000015, 2, 0.100000001);\nINSERT INTO order_details VALUES (10292, 20, 64.8000031, 20, 0);\nINSERT INTO order_details VALUES (10293, 18, 50, 12, 0);\nINSERT INTO order_details VALUES (10293, 24, 3.5999999, 10, 0);\nINSERT INTO order_details VALUES (10293, 63, 35.0999985, 5, 0);\nINSERT INTO order_details VALUES (10293, 75, 6.19999981, 6, 0);\nINSERT INTO order_details VALUES (10294, 1, 14.3999996, 18, 0);\nINSERT INTO order_details VALUES (10294, 17, 31.2000008, 15, 0);\nINSERT INTO order_details VALUES (10294, 43, 36.7999992, 15, 0);\nINSERT INTO order_details VALUES (10294, 60, 27.2000008, 21, 0);\nINSERT INTO order_details VALUES (10294, 75, 6.19999981, 6, 0);\nINSERT INTO order_details VALUES (10295, 56, 30.3999996, 4, 0);\nINSERT INTO order_details VALUES (10296, 11, 16.7999992, 12, 0);\nINSERT INTO order_details VALUES (10296, 16, 13.8999996, 30, 0);\nINSERT INTO order_details VALUES (10296, 69, 28.7999992, 15, 0);\nINSERT INTO order_details VALUES (10297, 39, 14.3999996, 60, 0);\nINSERT INTO order_details VALUES (10297, 72, 27.7999992, 20, 0);\nINSERT INTO order_details VALUES (10298, 2, 15.1999998, 40, 0);\nINSERT INTO order_details VALUES (10298, 36, 15.1999998, 40, 0.25);\nINSERT INTO order_details VALUES (10298, 59, 44, 30, 0.25);\nINSERT INTO order_details VALUES (10298, 62, 39.4000015, 15, 0);\nINSERT INTO order_details VALUES (10299, 19, 7.30000019, 15, 0);\nINSERT INTO order_details VALUES (10299, 70, 12, 20, 0);\nINSERT INTO order_details VALUES (10300, 66, 13.6000004, 30, 0);\nINSERT INTO order_details VALUES (10300, 68, 10, 20, 0);\nINSERT INTO order_details VALUES (10301, 40, 14.6999998, 10, 0);\nINSERT INTO order_details VALUES (10301, 56, 30.3999996, 20, 0);\nINSERT INTO order_details VALUES (10302, 17, 31.2000008, 40, 0);\nINSERT INTO order_details VALUES (10302, 28, 36.4000015, 28, 0);\nINSERT INTO order_details VALUES (10302, 43, 36.7999992, 12, 0);\nINSERT INTO order_details VALUES (10303, 40, 14.6999998, 40, 0.100000001);\nINSERT INTO order_details VALUES (10303, 65, 16.7999992, 30, 0.100000001);\nINSERT INTO order_details VALUES (10303, 68, 10, 15, 0.100000001);\nINSERT INTO order_details VALUES (10304, 49, 16, 30, 0);\nINSERT INTO order_details VALUES (10304, 59, 44, 10, 0);\nINSERT INTO order_details VALUES (10304, 71, 17.2000008, 2, 0);\nINSERT INTO order_details VALUES (10305, 18, 50, 25, 0.100000001);\nINSERT INTO order_details VALUES (10305, 29, 99, 25, 0.100000001);\nINSERT INTO order_details VALUES (10305, 39, 14.3999996, 30, 0.100000001);\nINSERT INTO order_details VALUES (10306, 30, 20.7000008, 10, 0);\nINSERT INTO order_details VALUES (10306, 53, 26.2000008, 10, 0);\nINSERT INTO order_details VALUES (10306, 54, 5.9000001, 5, 0);\nINSERT INTO order_details VALUES (10307, 62, 39.4000015, 10, 0);\nINSERT INTO order_details VALUES (10307, 68, 10, 3, 0);\nINSERT INTO order_details VALUES (10308, 69, 28.7999992, 1, 0);\nINSERT INTO order_details VALUES (10308, 70, 12, 5, 0);\nINSERT INTO order_details VALUES (10309, 4, 17.6000004, 20, 0);\nINSERT INTO order_details VALUES (10309, 6, 20, 30, 0);\nINSERT INTO order_details VALUES (10309, 42, 11.1999998, 2, 0);\nINSERT INTO order_details VALUES (10309, 43, 36.7999992, 20, 0);\nINSERT INTO order_details VALUES (10309, 71, 17.2000008, 3, 0);\nINSERT INTO order_details VALUES (10310, 16, 13.8999996, 10, 0);\nINSERT INTO order_details VALUES (10310, 62, 39.4000015, 5, 0);\nINSERT INTO order_details VALUES (10311, 42, 11.1999998, 6, 0);\nINSERT INTO order_details VALUES (10311, 69, 28.7999992, 7, 0);\nINSERT INTO order_details VALUES (10312, 28, 36.4000015, 4, 0);\nINSERT INTO order_details VALUES (10312, 43, 36.7999992, 24, 0);\nINSERT INTO order_details VALUES (10312, 53, 26.2000008, 20, 0);\nINSERT INTO order_details VALUES (10312, 75, 6.19999981, 10, 0);\nINSERT INTO order_details VALUES (10313, 36, 15.1999998, 12, 0);\nINSERT INTO order_details VALUES (10314, 32, 25.6000004, 40, 0.100000001);\nINSERT INTO order_details VALUES (10314, 58, 10.6000004, 30, 0.100000001);\nINSERT INTO order_details VALUES (10314, 62, 39.4000015, 25, 0.100000001);\nINSERT INTO order_details VALUES (10315, 34, 11.1999998, 14, 0);\nINSERT INTO order_details VALUES (10315, 70, 12, 30, 0);\nINSERT INTO order_details VALUES (10316, 41, 7.69999981, 10, 0);\nINSERT INTO order_details VALUES (10316, 62, 39.4000015, 70, 0);\nINSERT INTO order_details VALUES (10317, 1, 14.3999996, 20, 0);\nINSERT INTO order_details VALUES (10318, 41, 7.69999981, 20, 0);\nINSERT INTO order_details VALUES (10318, 76, 14.3999996, 6, 0);\nINSERT INTO order_details VALUES (10319, 17, 31.2000008, 8, 0);\nINSERT INTO order_details VALUES (10319, 28, 36.4000015, 14, 0);\nINSERT INTO order_details VALUES (10319, 76, 14.3999996, 30, 0);\nINSERT INTO order_details VALUES (10320, 71, 17.2000008, 30, 0);\nINSERT INTO order_details VALUES (10321, 35, 14.3999996, 10, 0);\nINSERT INTO order_details VALUES (10322, 52, 5.5999999, 20, 0);\nINSERT INTO order_details VALUES (10323, 15, 12.3999996, 5, 0);\nINSERT INTO order_details VALUES (10323, 25, 11.1999998, 4, 0);\nINSERT INTO order_details VALUES (10323, 39, 14.3999996, 4, 0);\nINSERT INTO order_details VALUES (10324, 16, 13.8999996, 21, 0.150000006);\nINSERT INTO order_details VALUES (10324, 35, 14.3999996, 70, 0.150000006);\nINSERT INTO order_details VALUES (10324, 46, 9.60000038, 30, 0);\nINSERT INTO order_details VALUES (10324, 59, 44, 40, 0.150000006);\nINSERT INTO order_details VALUES (10324, 63, 35.0999985, 80, 0.150000006);\nINSERT INTO order_details VALUES (10325, 6, 20, 6, 0);\nINSERT INTO order_details VALUES (10325, 13, 4.80000019, 12, 0);\nINSERT INTO order_details VALUES (10325, 14, 18.6000004, 9, 0);\nINSERT INTO order_details VALUES (10325, 31, 10, 4, 0);\nINSERT INTO order_details VALUES (10325, 72, 27.7999992, 40, 0);\nINSERT INTO order_details VALUES (10326, 4, 17.6000004, 24, 0);\nINSERT INTO order_details VALUES (10326, 57, 15.6000004, 16, 0);\nINSERT INTO order_details VALUES (10326, 75, 6.19999981, 50, 0);\nINSERT INTO order_details VALUES (10327, 2, 15.1999998, 25, 0.200000003);\nINSERT INTO order_details VALUES (10327, 11, 16.7999992, 50, 0.200000003);\nINSERT INTO order_details VALUES (10327, 30, 20.7000008, 35, 0.200000003);\nINSERT INTO order_details VALUES (10327, 58, 10.6000004, 30, 0.200000003);\nINSERT INTO order_details VALUES (10328, 59, 44, 9, 0);\nINSERT INTO order_details VALUES (10328, 65, 16.7999992, 40, 0);\nINSERT INTO order_details VALUES (10328, 68, 10, 10, 0);\nINSERT INTO order_details VALUES (10329, 19, 7.30000019, 10, 0.0500000007);\nINSERT INTO order_details VALUES (10329, 30, 20.7000008, 8, 0.0500000007);\nINSERT INTO order_details VALUES (10329, 38, 210.800003, 20, 0.0500000007);\nINSERT INTO order_details VALUES (10329, 56, 30.3999996, 12, 0.0500000007);\nINSERT INTO order_details VALUES (10330, 26, 24.8999996, 50, 0.150000006);\nINSERT INTO order_details VALUES (10330, 72, 27.7999992, 25, 0.150000006);\nINSERT INTO order_details VALUES (10331, 54, 5.9000001, 15, 0);\nINSERT INTO order_details VALUES (10332, 18, 50, 40, 0.200000003);\nINSERT INTO order_details VALUES (10332, 42, 11.1999998, 10, 0.200000003);\nINSERT INTO order_details VALUES (10332, 47, 7.5999999, 16, 0.200000003);\nINSERT INTO order_details VALUES (10333, 14, 18.6000004, 10, 0);\nINSERT INTO order_details VALUES (10333, 21, 8, 10, 0.100000001);\nINSERT INTO order_details VALUES (10333, 71, 17.2000008, 40, 0.100000001);\nINSERT INTO order_details VALUES (10334, 52, 5.5999999, 8, 0);\nINSERT INTO order_details VALUES (10334, 68, 10, 10, 0);\nINSERT INTO order_details VALUES (10335, 2, 15.1999998, 7, 0.200000003);\nINSERT INTO order_details VALUES (10335, 31, 10, 25, 0.200000003);\nINSERT INTO order_details VALUES (10335, 32, 25.6000004, 6, 0.200000003);\nINSERT INTO order_details VALUES (10335, 51, 42.4000015, 48, 0.200000003);\nINSERT INTO order_details VALUES (10336, 4, 17.6000004, 18, 0.100000001);\nINSERT INTO order_details VALUES (10337, 23, 7.19999981, 40, 0);\nINSERT INTO order_details VALUES (10337, 26, 24.8999996, 24, 0);\nINSERT INTO order_details VALUES (10337, 36, 15.1999998, 20, 0);\nINSERT INTO order_details VALUES (10337, 37, 20.7999992, 28, 0);\nINSERT INTO order_details VALUES (10337, 72, 27.7999992, 25, 0);\nINSERT INTO order_details VALUES (10338, 17, 31.2000008, 20, 0);\nINSERT INTO order_details VALUES (10338, 30, 20.7000008, 15, 0);\nINSERT INTO order_details VALUES (10339, 4, 17.6000004, 10, 0);\nINSERT INTO order_details VALUES (10339, 17, 31.2000008, 70, 0.0500000007);\nINSERT INTO order_details VALUES (10339, 62, 39.4000015, 28, 0);\nINSERT INTO order_details VALUES (10340, 18, 50, 20, 0.0500000007);\nINSERT INTO order_details VALUES (10340, 41, 7.69999981, 12, 0.0500000007);\nINSERT INTO order_details VALUES (10340, 43, 36.7999992, 40, 0.0500000007);\nINSERT INTO order_details VALUES (10341, 33, 2, 8, 0);\nINSERT INTO order_details VALUES (10341, 59, 44, 9, 0.150000006);\nINSERT INTO order_details VALUES (10342, 2, 15.1999998, 24, 0.200000003);\nINSERT INTO order_details VALUES (10342, 31, 10, 56, 0.200000003);\nINSERT INTO order_details VALUES (10342, 36, 15.1999998, 40, 0.200000003);\nINSERT INTO order_details VALUES (10342, 55, 19.2000008, 40, 0.200000003);\nINSERT INTO order_details VALUES (10343, 64, 26.6000004, 50, 0);\nINSERT INTO order_details VALUES (10343, 68, 10, 4, 0.0500000007);\nINSERT INTO order_details VALUES (10343, 76, 14.3999996, 15, 0);\nINSERT INTO order_details VALUES (10344, 4, 17.6000004, 35, 0);\nINSERT INTO order_details VALUES (10344, 8, 32, 70, 0.25);\nINSERT INTO order_details VALUES (10345, 8, 32, 70, 0);\nINSERT INTO order_details VALUES (10345, 19, 7.30000019, 80, 0);\nINSERT INTO order_details VALUES (10345, 42, 11.1999998, 9, 0);\nINSERT INTO order_details VALUES (10346, 17, 31.2000008, 36, 0.100000001);\nINSERT INTO order_details VALUES (10346, 56, 30.3999996, 20, 0);\nINSERT INTO order_details VALUES (10347, 25, 11.1999998, 10, 0);\nINSERT INTO order_details VALUES (10347, 39, 14.3999996, 50, 0.150000006);\nINSERT INTO order_details VALUES (10347, 40, 14.6999998, 4, 0);\nINSERT INTO order_details VALUES (10347, 75, 6.19999981, 6, 0.150000006);\nINSERT INTO order_details VALUES (10348, 1, 14.3999996, 15, 0.150000006);\nINSERT INTO order_details VALUES (10348, 23, 7.19999981, 25, 0);\nINSERT INTO order_details VALUES (10349, 54, 5.9000001, 24, 0);\nINSERT INTO order_details VALUES (10350, 50, 13, 15, 0.100000001);\nINSERT INTO order_details VALUES (10350, 69, 28.7999992, 18, 0.100000001);\nINSERT INTO order_details VALUES (10351, 38, 210.800003, 20, 0.0500000007);\nINSERT INTO order_details VALUES (10351, 41, 7.69999981, 13, 0);\nINSERT INTO order_details VALUES (10351, 44, 15.5, 77, 0.0500000007);\nINSERT INTO order_details VALUES (10351, 65, 16.7999992, 10, 0.0500000007);\nINSERT INTO order_details VALUES (10352, 24, 3.5999999, 10, 0);\nINSERT INTO order_details VALUES (10352, 54, 5.9000001, 20, 0.150000006);\nINSERT INTO order_details VALUES (10353, 11, 16.7999992, 12, 0.200000003);\nINSERT INTO order_details VALUES (10353, 38, 210.800003, 50, 0.200000003);\nINSERT INTO order_details VALUES (10354, 1, 14.3999996, 12, 0);\nINSERT INTO order_details VALUES (10354, 29, 99, 4, 0);\nINSERT INTO order_details VALUES (10355, 24, 3.5999999, 25, 0);\nINSERT INTO order_details VALUES (10355, 57, 15.6000004, 25, 0);\nINSERT INTO order_details VALUES (10356, 31, 10, 30, 0);\nINSERT INTO order_details VALUES (10356, 55, 19.2000008, 12, 0);\nINSERT INTO order_details VALUES (10356, 69, 28.7999992, 20, 0);\nINSERT INTO order_details VALUES (10357, 10, 24.7999992, 30, 0.200000003);\nINSERT INTO order_details VALUES (10357, 26, 24.8999996, 16, 0);\nINSERT INTO order_details VALUES (10357, 60, 27.2000008, 8, 0.200000003);\nINSERT INTO order_details VALUES (10358, 24, 3.5999999, 10, 0.0500000007);\nINSERT INTO order_details VALUES (10358, 34, 11.1999998, 10, 0.0500000007);\nINSERT INTO order_details VALUES (10358, 36, 15.1999998, 20, 0.0500000007);\nINSERT INTO order_details VALUES (10359, 16, 13.8999996, 56, 0.0500000007);\nINSERT INTO order_details VALUES (10359, 31, 10, 70, 0.0500000007);\nINSERT INTO order_details VALUES (10359, 60, 27.2000008, 80, 0.0500000007);\nINSERT INTO order_details VALUES (10360, 28, 36.4000015, 30, 0);\nINSERT INTO order_details VALUES (10360, 29, 99, 35, 0);\nINSERT INTO order_details VALUES (10360, 38, 210.800003, 10, 0);\nINSERT INTO order_details VALUES (10360, 49, 16, 35, 0);\nINSERT INTO order_details VALUES (10360, 54, 5.9000001, 28, 0);\nINSERT INTO order_details VALUES (10361, 39, 14.3999996, 54, 0.100000001);\nINSERT INTO order_details VALUES (10361, 60, 27.2000008, 55, 0.100000001);\nINSERT INTO order_details VALUES (10362, 25, 11.1999998, 50, 0);\nINSERT INTO order_details VALUES (10362, 51, 42.4000015, 20, 0);\nINSERT INTO order_details VALUES (10362, 54, 5.9000001, 24, 0);\nINSERT INTO order_details VALUES (10363, 31, 10, 20, 0);\nINSERT INTO order_details VALUES (10363, 75, 6.19999981, 12, 0);\nINSERT INTO order_details VALUES (10363, 76, 14.3999996, 12, 0);\nINSERT INTO order_details VALUES (10364, 69, 28.7999992, 30, 0);\nINSERT INTO order_details VALUES (10364, 71, 17.2000008, 5, 0);\nINSERT INTO order_details VALUES (10365, 11, 16.7999992, 24, 0);\nINSERT INTO order_details VALUES (10366, 65, 16.7999992, 5, 0);\nINSERT INTO order_details VALUES (10366, 77, 10.3999996, 5, 0);\nINSERT INTO order_details VALUES (10367, 34, 11.1999998, 36, 0);\nINSERT INTO order_details VALUES (10367, 54, 5.9000001, 18, 0);\nINSERT INTO order_details VALUES (10367, 65, 16.7999992, 15, 0);\nINSERT INTO order_details VALUES (10367, 77, 10.3999996, 7, 0);\nINSERT INTO order_details VALUES (10368, 21, 8, 5, 0.100000001);\nINSERT INTO order_details VALUES (10368, 28, 36.4000015, 13, 0.100000001);\nINSERT INTO order_details VALUES (10368, 57, 15.6000004, 25, 0);\nINSERT INTO order_details VALUES (10368, 64, 26.6000004, 35, 0.100000001);\nINSERT INTO order_details VALUES (10369, 29, 99, 20, 0);\nINSERT INTO order_details VALUES (10369, 56, 30.3999996, 18, 0.25);\nINSERT INTO order_details VALUES (10370, 1, 14.3999996, 15, 0.150000006);\nINSERT INTO order_details VALUES (10370, 64, 26.6000004, 30, 0);\nINSERT INTO order_details VALUES (10370, 74, 8, 20, 0.150000006);\nINSERT INTO order_details VALUES (10371, 36, 15.1999998, 6, 0.200000003);\nINSERT INTO order_details VALUES (10372, 20, 64.8000031, 12, 0.25);\nINSERT INTO order_details VALUES (10372, 38, 210.800003, 40, 0.25);\nINSERT INTO order_details VALUES (10372, 60, 27.2000008, 70, 0.25);\nINSERT INTO order_details VALUES (10372, 72, 27.7999992, 42, 0.25);\nINSERT INTO order_details VALUES (10373, 58, 10.6000004, 80, 0.200000003);\nINSERT INTO order_details VALUES (10373, 71, 17.2000008, 50, 0.200000003);\nINSERT INTO order_details VALUES (10374, 31, 10, 30, 0);\nINSERT INTO order_details VALUES (10374, 58, 10.6000004, 15, 0);\nINSERT INTO order_details VALUES (10375, 14, 18.6000004, 15, 0);\nINSERT INTO order_details VALUES (10375, 54, 5.9000001, 10, 0);\nINSERT INTO order_details VALUES (10376, 31, 10, 42, 0.0500000007);\nINSERT INTO order_details VALUES (10377, 28, 36.4000015, 20, 0.150000006);\nINSERT INTO order_details VALUES (10377, 39, 14.3999996, 20, 0.150000006);\nINSERT INTO order_details VALUES (10378, 71, 17.2000008, 6, 0);\nINSERT INTO order_details VALUES (10379, 41, 7.69999981, 8, 0.100000001);\nINSERT INTO order_details VALUES (10379, 63, 35.0999985, 16, 0.100000001);\nINSERT INTO order_details VALUES (10379, 65, 16.7999992, 20, 0.100000001);\nINSERT INTO order_details VALUES (10380, 30, 20.7000008, 18, 0.100000001);\nINSERT INTO order_details VALUES (10380, 53, 26.2000008, 20, 0.100000001);\nINSERT INTO order_details VALUES (10380, 60, 27.2000008, 6, 0.100000001);\nINSERT INTO order_details VALUES (10380, 70, 12, 30, 0);\nINSERT INTO order_details VALUES (10381, 74, 8, 14, 0);\nINSERT INTO order_details VALUES (10382, 5, 17, 32, 0);\nINSERT INTO order_details VALUES (10382, 18, 50, 9, 0);\nINSERT INTO order_details VALUES (10382, 29, 99, 14, 0);\nINSERT INTO order_details VALUES (10382, 33, 2, 60, 0);\nINSERT INTO order_details VALUES (10382, 74, 8, 50, 0);\nINSERT INTO order_details VALUES (10383, 13, 4.80000019, 20, 0);\nINSERT INTO order_details VALUES (10383, 50, 13, 15, 0);\nINSERT INTO order_details VALUES (10383, 56, 30.3999996, 20, 0);\nINSERT INTO order_details VALUES (10384, 20, 64.8000031, 28, 0);\nINSERT INTO order_details VALUES (10384, 60, 27.2000008, 15, 0);\nINSERT INTO order_details VALUES (10385, 7, 24, 10, 0.200000003);\nINSERT INTO order_details VALUES (10385, 60, 27.2000008, 20, 0.200000003);\nINSERT INTO order_details VALUES (10385, 68, 10, 8, 0.200000003);\nINSERT INTO order_details VALUES (10386, 24, 3.5999999, 15, 0);\nINSERT INTO order_details VALUES (10386, 34, 11.1999998, 10, 0);\nINSERT INTO order_details VALUES (10387, 24, 3.5999999, 15, 0);\nINSERT INTO order_details VALUES (10387, 28, 36.4000015, 6, 0);\nINSERT INTO order_details VALUES (10387, 59, 44, 12, 0);\nINSERT INTO order_details VALUES (10387, 71, 17.2000008, 15, 0);\nINSERT INTO order_details VALUES (10388, 45, 7.5999999, 15, 0.200000003);\nINSERT INTO order_details VALUES (10388, 52, 5.5999999, 20, 0.200000003);\nINSERT INTO order_details VALUES (10388, 53, 26.2000008, 40, 0);\nINSERT INTO order_details VALUES (10389, 10, 24.7999992, 16, 0);\nINSERT INTO order_details VALUES (10389, 55, 19.2000008, 15, 0);\nINSERT INTO order_details VALUES (10389, 62, 39.4000015, 20, 0);\nINSERT INTO order_details VALUES (10389, 70, 12, 30, 0);\nINSERT INTO order_details VALUES (10390, 31, 10, 60, 0.100000001);\nINSERT INTO order_details VALUES (10390, 35, 14.3999996, 40, 0.100000001);\nINSERT INTO order_details VALUES (10390, 46, 9.60000038, 45, 0);\nINSERT INTO order_details VALUES (10390, 72, 27.7999992, 24, 0.100000001);\nINSERT INTO order_details VALUES (10391, 13, 4.80000019, 18, 0);\nINSERT INTO order_details VALUES (10392, 69, 28.7999992, 50, 0);\nINSERT INTO order_details VALUES (10393, 2, 15.1999998, 25, 0.25);\nINSERT INTO order_details VALUES (10393, 14, 18.6000004, 42, 0.25);\nINSERT INTO order_details VALUES (10393, 25, 11.1999998, 7, 0.25);\nINSERT INTO order_details VALUES (10393, 26, 24.8999996, 70, 0.25);\nINSERT INTO order_details VALUES (10393, 31, 10, 32, 0);\nINSERT INTO order_details VALUES (10394, 13, 4.80000019, 10, 0);\nINSERT INTO order_details VALUES (10394, 62, 39.4000015, 10, 0);\nINSERT INTO order_details VALUES (10395, 46, 9.60000038, 28, 0.100000001);\nINSERT INTO order_details VALUES (10395, 53, 26.2000008, 70, 0.100000001);\nINSERT INTO order_details VALUES (10395, 69, 28.7999992, 8, 0);\nINSERT INTO order_details VALUES (10396, 23, 7.19999981, 40, 0);\nINSERT INTO order_details VALUES (10396, 71, 17.2000008, 60, 0);\nINSERT INTO order_details VALUES (10396, 72, 27.7999992, 21, 0);\nINSERT INTO order_details VALUES (10397, 21, 8, 10, 0.150000006);\nINSERT INTO order_details VALUES (10397, 51, 42.4000015, 18, 0.150000006);\nINSERT INTO order_details VALUES (10398, 35, 14.3999996, 30, 0);\nINSERT INTO order_details VALUES (10398, 55, 19.2000008, 120, 0.100000001);\nINSERT INTO order_details VALUES (10399, 68, 10, 60, 0);\nINSERT INTO order_details VALUES (10399, 71, 17.2000008, 30, 0);\nINSERT INTO order_details VALUES (10399, 76, 14.3999996, 35, 0);\nINSERT INTO order_details VALUES (10399, 77, 10.3999996, 14, 0);\nINSERT INTO order_details VALUES (10400, 29, 99, 21, 0);\nINSERT INTO order_details VALUES (10400, 35, 14.3999996, 35, 0);\nINSERT INTO order_details VALUES (10400, 49, 16, 30, 0);\nINSERT INTO order_details VALUES (10401, 30, 20.7000008, 18, 0);\nINSERT INTO order_details VALUES (10401, 56, 30.3999996, 70, 0);\nINSERT INTO order_details VALUES (10401, 65, 16.7999992, 20, 0);\nINSERT INTO order_details VALUES (10401, 71, 17.2000008, 60, 0);\nINSERT INTO order_details VALUES (10402, 23, 7.19999981, 60, 0);\nINSERT INTO order_details VALUES (10402, 63, 35.0999985, 65, 0);\nINSERT INTO order_details VALUES (10403, 16, 13.8999996, 21, 0.150000006);\nINSERT INTO order_details VALUES (10403, 48, 10.1999998, 70, 0.150000006);\nINSERT INTO order_details VALUES (10404, 26, 24.8999996, 30, 0.0500000007);\nINSERT INTO order_details VALUES (10404, 42, 11.1999998, 40, 0.0500000007);\nINSERT INTO order_details VALUES (10404, 49, 16, 30, 0.0500000007);\nINSERT INTO order_details VALUES (10405, 3, 8, 50, 0);\nINSERT INTO order_details VALUES (10406, 1, 14.3999996, 10, 0);\nINSERT INTO order_details VALUES (10406, 21, 8, 30, 0.100000001);\nINSERT INTO order_details VALUES (10406, 28, 36.4000015, 42, 0.100000001);\nINSERT INTO order_details VALUES (10406, 36, 15.1999998, 5, 0.100000001);\nINSERT INTO order_details VALUES (10406, 40, 14.6999998, 2, 0.100000001);\nINSERT INTO order_details VALUES (10407, 11, 16.7999992, 30, 0);\nINSERT INTO order_details VALUES (10407, 69, 28.7999992, 15, 0);\nINSERT INTO order_details VALUES (10407, 71, 17.2000008, 15, 0);\nINSERT INTO order_details VALUES (10408, 37, 20.7999992, 10, 0);\nINSERT INTO order_details VALUES (10408, 54, 5.9000001, 6, 0);\nINSERT INTO order_details VALUES (10408, 62, 39.4000015, 35, 0);\nINSERT INTO order_details VALUES (10409, 14, 18.6000004, 12, 0);\nINSERT INTO order_details VALUES (10409, 21, 8, 12, 0);\nINSERT INTO order_details VALUES (10410, 33, 2, 49, 0);\nINSERT INTO order_details VALUES (10410, 59, 44, 16, 0);\nINSERT INTO order_details VALUES (10411, 41, 7.69999981, 25, 0.200000003);\nINSERT INTO order_details VALUES (10411, 44, 15.5, 40, 0.200000003);\nINSERT INTO order_details VALUES (10411, 59, 44, 9, 0.200000003);\nINSERT INTO order_details VALUES (10412, 14, 18.6000004, 20, 0.100000001);\nINSERT INTO order_details VALUES (10413, 1, 14.3999996, 24, 0);\nINSERT INTO order_details VALUES (10413, 62, 39.4000015, 40, 0);\nINSERT INTO order_details VALUES (10413, 76, 14.3999996, 14, 0);\nINSERT INTO order_details VALUES (10414, 19, 7.30000019, 18, 0.0500000007);\nINSERT INTO order_details VALUES (10414, 33, 2, 50, 0);\nINSERT INTO order_details VALUES (10415, 17, 31.2000008, 2, 0);\nINSERT INTO order_details VALUES (10415, 33, 2, 20, 0);\nINSERT INTO order_details VALUES (10416, 19, 7.30000019, 20, 0);\nINSERT INTO order_details VALUES (10416, 53, 26.2000008, 10, 0);\nINSERT INTO order_details VALUES (10416, 57, 15.6000004, 20, 0);\nINSERT INTO order_details VALUES (10417, 38, 210.800003, 50, 0);\nINSERT INTO order_details VALUES (10417, 46, 9.60000038, 2, 0.25);\nINSERT INTO order_details VALUES (10417, 68, 10, 36, 0.25);\nINSERT INTO order_details VALUES (10417, 77, 10.3999996, 35, 0);\nINSERT INTO order_details VALUES (10418, 2, 15.1999998, 60, 0);\nINSERT INTO order_details VALUES (10418, 47, 7.5999999, 55, 0);\nINSERT INTO order_details VALUES (10418, 61, 22.7999992, 16, 0);\nINSERT INTO order_details VALUES (10418, 74, 8, 15, 0);\nINSERT INTO order_details VALUES (10419, 60, 27.2000008, 60, 0.0500000007);\nINSERT INTO order_details VALUES (10419, 69, 28.7999992, 20, 0.0500000007);\nINSERT INTO order_details VALUES (10420, 9, 77.5999985, 20, 0.100000001);\nINSERT INTO order_details VALUES (10420, 13, 4.80000019, 2, 0.100000001);\nINSERT INTO order_details VALUES (10420, 70, 12, 8, 0.100000001);\nINSERT INTO order_details VALUES (10420, 73, 12, 20, 0.100000001);\nINSERT INTO order_details VALUES (10421, 19, 7.30000019, 4, 0.150000006);\nINSERT INTO order_details VALUES (10421, 26, 24.8999996, 30, 0);\nINSERT INTO order_details VALUES (10421, 53, 26.2000008, 15, 0.150000006);\nINSERT INTO order_details VALUES (10421, 77, 10.3999996, 10, 0.150000006);\nINSERT INTO order_details VALUES (10422, 26, 24.8999996, 2, 0);\nINSERT INTO order_details VALUES (10423, 31, 10, 14, 0);\nINSERT INTO order_details VALUES (10423, 59, 44, 20, 0);\nINSERT INTO order_details VALUES (10424, 35, 14.3999996, 60, 0.200000003);\nINSERT INTO order_details VALUES (10424, 38, 210.800003, 49, 0.200000003);\nINSERT INTO order_details VALUES (10424, 68, 10, 30, 0.200000003);\nINSERT INTO order_details VALUES (10425, 55, 19.2000008, 10, 0.25);\nINSERT INTO order_details VALUES (10425, 76, 14.3999996, 20, 0.25);\nINSERT INTO order_details VALUES (10426, 56, 30.3999996, 5, 0);\nINSERT INTO order_details VALUES (10426, 64, 26.6000004, 7, 0);\nINSERT INTO order_details VALUES (10427, 14, 18.6000004, 35, 0);\nINSERT INTO order_details VALUES (10428, 46, 9.60000038, 20, 0);\nINSERT INTO order_details VALUES (10429, 50, 13, 40, 0);\nINSERT INTO order_details VALUES (10429, 63, 35.0999985, 35, 0.25);\nINSERT INTO order_details VALUES (10430, 17, 31.2000008, 45, 0.200000003);\nINSERT INTO order_details VALUES (10430, 21, 8, 50, 0);\nINSERT INTO order_details VALUES (10430, 56, 30.3999996, 30, 0);\nINSERT INTO order_details VALUES (10430, 59, 44, 70, 0.200000003);\nINSERT INTO order_details VALUES (10431, 17, 31.2000008, 50, 0.25);\nINSERT INTO order_details VALUES (10431, 40, 14.6999998, 50, 0.25);\nINSERT INTO order_details VALUES (10431, 47, 7.5999999, 30, 0.25);\nINSERT INTO order_details VALUES (10432, 26, 24.8999996, 10, 0);\nINSERT INTO order_details VALUES (10432, 54, 5.9000001, 40, 0);\nINSERT INTO order_details VALUES (10433, 56, 30.3999996, 28, 0);\nINSERT INTO order_details VALUES (10434, 11, 16.7999992, 6, 0);\nINSERT INTO order_details VALUES (10434, 76, 14.3999996, 18, 0.150000006);\nINSERT INTO order_details VALUES (10435, 2, 15.1999998, 10, 0);\nINSERT INTO order_details VALUES (10435, 22, 16.7999992, 12, 0);\nINSERT INTO order_details VALUES (10435, 72, 27.7999992, 10, 0);\nINSERT INTO order_details VALUES (10436, 46, 9.60000038, 5, 0);\nINSERT INTO order_details VALUES (10436, 56, 30.3999996, 40, 0.100000001);\nINSERT INTO order_details VALUES (10436, 64, 26.6000004, 30, 0.100000001);\nINSERT INTO order_details VALUES (10436, 75, 6.19999981, 24, 0.100000001);\nINSERT INTO order_details VALUES (10437, 53, 26.2000008, 15, 0);\nINSERT INTO order_details VALUES (10438, 19, 7.30000019, 15, 0.200000003);\nINSERT INTO order_details VALUES (10438, 34, 11.1999998, 20, 0.200000003);\nINSERT INTO order_details VALUES (10438, 57, 15.6000004, 15, 0.200000003);\nINSERT INTO order_details VALUES (10439, 12, 30.3999996, 15, 0);\nINSERT INTO order_details VALUES (10439, 16, 13.8999996, 16, 0);\nINSERT INTO order_details VALUES (10439, 64, 26.6000004, 6, 0);\nINSERT INTO order_details VALUES (10439, 74, 8, 30, 0);\nINSERT INTO order_details VALUES (10440, 2, 15.1999998, 45, 0.150000006);\nINSERT INTO order_details VALUES (10440, 16, 13.8999996, 49, 0.150000006);\nINSERT INTO order_details VALUES (10440, 29, 99, 24, 0.150000006);\nINSERT INTO order_details VALUES (10440, 61, 22.7999992, 90, 0.150000006);\nINSERT INTO order_details VALUES (10441, 27, 35.0999985, 50, 0);\nINSERT INTO order_details VALUES (10442, 11, 16.7999992, 30, 0);\nINSERT INTO order_details VALUES (10442, 54, 5.9000001, 80, 0);\nINSERT INTO order_details VALUES (10442, 66, 13.6000004, 60, 0);\nINSERT INTO order_details VALUES (10443, 11, 16.7999992, 6, 0.200000003);\nINSERT INTO order_details VALUES (10443, 28, 36.4000015, 12, 0);\nINSERT INTO order_details VALUES (10444, 17, 31.2000008, 10, 0);\nINSERT INTO order_details VALUES (10444, 26, 24.8999996, 15, 0);\nINSERT INTO order_details VALUES (10444, 35, 14.3999996, 8, 0);\nINSERT INTO order_details VALUES (10444, 41, 7.69999981, 30, 0);\nINSERT INTO order_details VALUES (10445, 39, 14.3999996, 6, 0);\nINSERT INTO order_details VALUES (10445, 54, 5.9000001, 15, 0);\nINSERT INTO order_details VALUES (10446, 19, 7.30000019, 12, 0.100000001);\nINSERT INTO order_details VALUES (10446, 24, 3.5999999, 20, 0.100000001);\nINSERT INTO order_details VALUES (10446, 31, 10, 3, 0.100000001);\nINSERT INTO order_details VALUES (10446, 52, 5.5999999, 15, 0.100000001);\nINSERT INTO order_details VALUES (10447, 19, 7.30000019, 40, 0);\nINSERT INTO order_details VALUES (10447, 65, 16.7999992, 35, 0);\nINSERT INTO order_details VALUES (10447, 71, 17.2000008, 2, 0);\nINSERT INTO order_details VALUES (10448, 26, 24.8999996, 6, 0);\nINSERT INTO order_details VALUES (10448, 40, 14.6999998, 20, 0);\nINSERT INTO order_details VALUES (10449, 10, 24.7999992, 14, 0);\nINSERT INTO order_details VALUES (10449, 52, 5.5999999, 20, 0);\nINSERT INTO order_details VALUES (10449, 62, 39.4000015, 35, 0);\nINSERT INTO order_details VALUES (10450, 10, 24.7999992, 20, 0.200000003);\nINSERT INTO order_details VALUES (10450, 54, 5.9000001, 6, 0.200000003);\nINSERT INTO order_details VALUES (10451, 55, 19.2000008, 120, 0.100000001);\nINSERT INTO order_details VALUES (10451, 64, 26.6000004, 35, 0.100000001);\nINSERT INTO order_details VALUES (10451, 65, 16.7999992, 28, 0.100000001);\nINSERT INTO order_details VALUES (10451, 77, 10.3999996, 55, 0.100000001);\nINSERT INTO order_details VALUES (10452, 28, 36.4000015, 15, 0);\nINSERT INTO order_details VALUES (10452, 44, 15.5, 100, 0.0500000007);\nINSERT INTO order_details VALUES (10453, 48, 10.1999998, 15, 0.100000001);\nINSERT INTO order_details VALUES (10453, 70, 12, 25, 0.100000001);\nINSERT INTO order_details VALUES (10454, 16, 13.8999996, 20, 0.200000003);\nINSERT INTO order_details VALUES (10454, 33, 2, 20, 0.200000003);\nINSERT INTO order_details VALUES (10454, 46, 9.60000038, 10, 0.200000003);\nINSERT INTO order_details VALUES (10455, 39, 14.3999996, 20, 0);\nINSERT INTO order_details VALUES (10455, 53, 26.2000008, 50, 0);\nINSERT INTO order_details VALUES (10455, 61, 22.7999992, 25, 0);\nINSERT INTO order_details VALUES (10455, 71, 17.2000008, 30, 0);\nINSERT INTO order_details VALUES (10456, 21, 8, 40, 0.150000006);\nINSERT INTO order_details VALUES (10456, 49, 16, 21, 0.150000006);\nINSERT INTO order_details VALUES (10457, 59, 44, 36, 0);\nINSERT INTO order_details VALUES (10458, 26, 24.8999996, 30, 0);\nINSERT INTO order_details VALUES (10458, 28, 36.4000015, 30, 0);\nINSERT INTO order_details VALUES (10458, 43, 36.7999992, 20, 0);\nINSERT INTO order_details VALUES (10458, 56, 30.3999996, 15, 0);\nINSERT INTO order_details VALUES (10458, 71, 17.2000008, 50, 0);\nINSERT INTO order_details VALUES (10459, 7, 24, 16, 0.0500000007);\nINSERT INTO order_details VALUES (10459, 46, 9.60000038, 20, 0.0500000007);\nINSERT INTO order_details VALUES (10459, 72, 27.7999992, 40, 0);\nINSERT INTO order_details VALUES (10460, 68, 10, 21, 0.25);\nINSERT INTO order_details VALUES (10460, 75, 6.19999981, 4, 0.25);\nINSERT INTO order_details VALUES (10461, 21, 8, 40, 0.25);\nINSERT INTO order_details VALUES (10461, 30, 20.7000008, 28, 0.25);\nINSERT INTO order_details VALUES (10461, 55, 19.2000008, 60, 0.25);\nINSERT INTO order_details VALUES (10462, 13, 4.80000019, 1, 0);\nINSERT INTO order_details VALUES (10462, 23, 7.19999981, 21, 0);\nINSERT INTO order_details VALUES (10463, 19, 7.30000019, 21, 0);\nINSERT INTO order_details VALUES (10463, 42, 11.1999998, 50, 0);\nINSERT INTO order_details VALUES (10464, 4, 17.6000004, 16, 0.200000003);\nINSERT INTO order_details VALUES (10464, 43, 36.7999992, 3, 0);\nINSERT INTO order_details VALUES (10464, 56, 30.3999996, 30, 0.200000003);\nINSERT INTO order_details VALUES (10464, 60, 27.2000008, 20, 0);\nINSERT INTO order_details VALUES (10465, 24, 3.5999999, 25, 0);\nINSERT INTO order_details VALUES (10465, 29, 99, 18, 0.100000001);\nINSERT INTO order_details VALUES (10465, 40, 14.6999998, 20, 0);\nINSERT INTO order_details VALUES (10465, 45, 7.5999999, 30, 0.100000001);\nINSERT INTO order_details VALUES (10465, 50, 13, 25, 0);\nINSERT INTO order_details VALUES (10466, 11, 16.7999992, 10, 0);\nINSERT INTO order_details VALUES (10466, 46, 9.60000038, 5, 0);\nINSERT INTO order_details VALUES (10467, 24, 3.5999999, 28, 0);\nINSERT INTO order_details VALUES (10467, 25, 11.1999998, 12, 0);\nINSERT INTO order_details VALUES (10468, 30, 20.7000008, 8, 0);\nINSERT INTO order_details VALUES (10468, 43, 36.7999992, 15, 0);\nINSERT INTO order_details VALUES (10469, 2, 15.1999998, 40, 0.150000006);\nINSERT INTO order_details VALUES (10469, 16, 13.8999996, 35, 0.150000006);\nINSERT INTO order_details VALUES (10469, 44, 15.5, 2, 0.150000006);\nINSERT INTO order_details VALUES (10470, 18, 50, 30, 0);\nINSERT INTO order_details VALUES (10470, 23, 7.19999981, 15, 0);\nINSERT INTO order_details VALUES (10470, 64, 26.6000004, 8, 0);\nINSERT INTO order_details VALUES (10471, 7, 24, 30, 0);\nINSERT INTO order_details VALUES (10471, 56, 30.3999996, 20, 0);\nINSERT INTO order_details VALUES (10472, 24, 3.5999999, 80, 0.0500000007);\nINSERT INTO order_details VALUES (10472, 51, 42.4000015, 18, 0);\nINSERT INTO order_details VALUES (10473, 33, 2, 12, 0);\nINSERT INTO order_details VALUES (10473, 71, 17.2000008, 12, 0);\nINSERT INTO order_details VALUES (10474, 14, 18.6000004, 12, 0);\nINSERT INTO order_details VALUES (10474, 28, 36.4000015, 18, 0);\nINSERT INTO order_details VALUES (10474, 40, 14.6999998, 21, 0);\nINSERT INTO order_details VALUES (10474, 75, 6.19999981, 10, 0);\nINSERT INTO order_details VALUES (10475, 31, 10, 35, 0.150000006);\nINSERT INTO order_details VALUES (10475, 66, 13.6000004, 60, 0.150000006);\nINSERT INTO order_details VALUES (10475, 76, 14.3999996, 42, 0.150000006);\nINSERT INTO order_details VALUES (10476, 55, 19.2000008, 2, 0.0500000007);\nINSERT INTO order_details VALUES (10476, 70, 12, 12, 0);\nINSERT INTO order_details VALUES (10477, 1, 14.3999996, 15, 0);\nINSERT INTO order_details VALUES (10477, 21, 8, 21, 0.25);\nINSERT INTO order_details VALUES (10477, 39, 14.3999996, 20, 0.25);\nINSERT INTO order_details VALUES (10478, 10, 24.7999992, 20, 0.0500000007);\nINSERT INTO order_details VALUES (10479, 38, 210.800003, 30, 0);\nINSERT INTO order_details VALUES (10479, 53, 26.2000008, 28, 0);\nINSERT INTO order_details VALUES (10479, 59, 44, 60, 0);\nINSERT INTO order_details VALUES (10479, 64, 26.6000004, 30, 0);\nINSERT INTO order_details VALUES (10480, 47, 7.5999999, 30, 0);\nINSERT INTO order_details VALUES (10480, 59, 44, 12, 0);\nINSERT INTO order_details VALUES (10481, 49, 16, 24, 0);\nINSERT INTO order_details VALUES (10481, 60, 27.2000008, 40, 0);\nINSERT INTO order_details VALUES (10482, 40, 14.6999998, 10, 0);\nINSERT INTO order_details VALUES (10483, 34, 11.1999998, 35, 0.0500000007);\nINSERT INTO order_details VALUES (10483, 77, 10.3999996, 30, 0.0500000007);\nINSERT INTO order_details VALUES (10484, 21, 8, 14, 0);\nINSERT INTO order_details VALUES (10484, 40, 14.6999998, 10, 0);\nINSERT INTO order_details VALUES (10484, 51, 42.4000015, 3, 0);\nINSERT INTO order_details VALUES (10485, 2, 15.1999998, 20, 0.100000001);\nINSERT INTO order_details VALUES (10485, 3, 8, 20, 0.100000001);\nINSERT INTO order_details VALUES (10485, 55, 19.2000008, 30, 0.100000001);\nINSERT INTO order_details VALUES (10485, 70, 12, 60, 0.100000001);\nINSERT INTO order_details VALUES (10486, 11, 16.7999992, 5, 0);\nINSERT INTO order_details VALUES (10486, 51, 42.4000015, 25, 0);\nINSERT INTO order_details VALUES (10486, 74, 8, 16, 0);\nINSERT INTO order_details VALUES (10487, 19, 7.30000019, 5, 0);\nINSERT INTO order_details VALUES (10487, 26, 24.8999996, 30, 0);\nINSERT INTO order_details VALUES (10487, 54, 5.9000001, 24, 0.25);\nINSERT INTO order_details VALUES (10488, 59, 44, 30, 0);\nINSERT INTO order_details VALUES (10488, 73, 12, 20, 0.200000003);\nINSERT INTO order_details VALUES (10489, 11, 16.7999992, 15, 0.25);\nINSERT INTO order_details VALUES (10489, 16, 13.8999996, 18, 0);\nINSERT INTO order_details VALUES (10490, 59, 44, 60, 0);\nINSERT INTO order_details VALUES (10490, 68, 10, 30, 0);\nINSERT INTO order_details VALUES (10490, 75, 6.19999981, 36, 0);\nINSERT INTO order_details VALUES (10491, 44, 15.5, 15, 0.150000006);\nINSERT INTO order_details VALUES (10491, 77, 10.3999996, 7, 0.150000006);\nINSERT INTO order_details VALUES (10492, 25, 11.1999998, 60, 0.0500000007);\nINSERT INTO order_details VALUES (10492, 42, 11.1999998, 20, 0.0500000007);\nINSERT INTO order_details VALUES (10493, 65, 16.7999992, 15, 0.100000001);\nINSERT INTO order_details VALUES (10493, 66, 13.6000004, 10, 0.100000001);\nINSERT INTO order_details VALUES (10493, 69, 28.7999992, 10, 0.100000001);\nINSERT INTO order_details VALUES (10494, 56, 30.3999996, 30, 0);\nINSERT INTO order_details VALUES (10495, 23, 7.19999981, 10, 0);\nINSERT INTO order_details VALUES (10495, 41, 7.69999981, 20, 0);\nINSERT INTO order_details VALUES (10495, 77, 10.3999996, 5, 0);\nINSERT INTO order_details VALUES (10496, 31, 10, 20, 0.0500000007);\nINSERT INTO order_details VALUES (10497, 56, 30.3999996, 14, 0);\nINSERT INTO order_details VALUES (10497, 72, 27.7999992, 25, 0);\nINSERT INTO order_details VALUES (10497, 77, 10.3999996, 25, 0);\nINSERT INTO order_details VALUES (10498, 24, 4.5, 14, 0);\nINSERT INTO order_details VALUES (10498, 40, 18.3999996, 5, 0);\nINSERT INTO order_details VALUES (10498, 42, 14, 30, 0);\nINSERT INTO order_details VALUES (10499, 28, 45.5999985, 20, 0);\nINSERT INTO order_details VALUES (10499, 49, 20, 25, 0);\nINSERT INTO order_details VALUES (10500, 15, 15.5, 12, 0.0500000007);\nINSERT INTO order_details VALUES (10500, 28, 45.5999985, 8, 0.0500000007);\nINSERT INTO order_details VALUES (10501, 54, 7.44999981, 20, 0);\nINSERT INTO order_details VALUES (10502, 45, 9.5, 21, 0);\nINSERT INTO order_details VALUES (10502, 53, 32.7999992, 6, 0);\nINSERT INTO order_details VALUES (10502, 67, 14, 30, 0);\nINSERT INTO order_details VALUES (10503, 14, 23.25, 70, 0);\nINSERT INTO order_details VALUES (10503, 65, 21.0499992, 20, 0);\nINSERT INTO order_details VALUES (10504, 2, 19, 12, 0);\nINSERT INTO order_details VALUES (10504, 21, 10, 12, 0);\nINSERT INTO order_details VALUES (10504, 53, 32.7999992, 10, 0);\nINSERT INTO order_details VALUES (10504, 61, 28.5, 25, 0);\nINSERT INTO order_details VALUES (10505, 62, 49.2999992, 3, 0);\nINSERT INTO order_details VALUES (10506, 25, 14, 18, 0.100000001);\nINSERT INTO order_details VALUES (10506, 70, 15, 14, 0.100000001);\nINSERT INTO order_details VALUES (10507, 43, 46, 15, 0.150000006);\nINSERT INTO order_details VALUES (10507, 48, 12.75, 15, 0.150000006);\nINSERT INTO order_details VALUES (10508, 13, 6, 10, 0);\nINSERT INTO order_details VALUES (10508, 39, 18, 10, 0);\nINSERT INTO order_details VALUES (10509, 28, 45.5999985, 3, 0);\nINSERT INTO order_details VALUES (10510, 29, 123.790001, 36, 0);\nINSERT INTO order_details VALUES (10510, 75, 7.75, 36, 0.100000001);\nINSERT INTO order_details VALUES (10511, 4, 22, 50, 0.150000006);\nINSERT INTO order_details VALUES (10511, 7, 30, 50, 0.150000006);\nINSERT INTO order_details VALUES (10511, 8, 40, 10, 0.150000006);\nINSERT INTO order_details VALUES (10512, 24, 4.5, 10, 0.150000006);\nINSERT INTO order_details VALUES (10512, 46, 12, 9, 0.150000006);\nINSERT INTO order_details VALUES (10512, 47, 9.5, 6, 0.150000006);\nINSERT INTO order_details VALUES (10512, 60, 34, 12, 0.150000006);\nINSERT INTO order_details VALUES (10513, 21, 10, 40, 0.200000003);\nINSERT INTO order_details VALUES (10513, 32, 32, 50, 0.200000003);\nINSERT INTO order_details VALUES (10513, 61, 28.5, 15, 0.200000003);\nINSERT INTO order_details VALUES (10514, 20, 81, 39, 0);\nINSERT INTO order_details VALUES (10514, 28, 45.5999985, 35, 0);\nINSERT INTO order_details VALUES (10514, 56, 38, 70, 0);\nINSERT INTO order_details VALUES (10514, 65, 21.0499992, 39, 0);\nINSERT INTO order_details VALUES (10514, 75, 7.75, 50, 0);\nINSERT INTO order_details VALUES (10515, 9, 97, 16, 0.150000006);\nINSERT INTO order_details VALUES (10515, 16, 17.4500008, 50, 0);\nINSERT INTO order_details VALUES (10515, 27, 43.9000015, 120, 0);\nINSERT INTO order_details VALUES (10515, 33, 2.5, 16, 0.150000006);\nINSERT INTO order_details VALUES (10515, 60, 34, 84, 0.150000006);\nINSERT INTO order_details VALUES (10516, 18, 62.5, 25, 0.100000001);\nINSERT INTO order_details VALUES (10516, 41, 9.64999962, 80, 0.100000001);\nINSERT INTO order_details VALUES (10516, 42, 14, 20, 0);\nINSERT INTO order_details VALUES (10517, 52, 7, 6, 0);\nINSERT INTO order_details VALUES (10517, 59, 55, 4, 0);\nINSERT INTO order_details VALUES (10517, 70, 15, 6, 0);\nINSERT INTO order_details VALUES (10518, 24, 4.5, 5, 0);\nINSERT INTO order_details VALUES (10518, 38, 263.5, 15, 0);\nINSERT INTO order_details VALUES (10518, 44, 19.4500008, 9, 0);\nINSERT INTO order_details VALUES (10519, 10, 31, 16, 0.0500000007);\nINSERT INTO order_details VALUES (10519, 56, 38, 40, 0);\nINSERT INTO order_details VALUES (10519, 60, 34, 10, 0.0500000007);\nINSERT INTO order_details VALUES (10520, 24, 4.5, 8, 0);\nINSERT INTO order_details VALUES (10520, 53, 32.7999992, 5, 0);\nINSERT INTO order_details VALUES (10521, 35, 18, 3, 0);\nINSERT INTO order_details VALUES (10521, 41, 9.64999962, 10, 0);\nINSERT INTO order_details VALUES (10521, 68, 12.5, 6, 0);\nINSERT INTO order_details VALUES (10522, 1, 18, 40, 0.200000003);\nINSERT INTO order_details VALUES (10522, 8, 40, 24, 0);\nINSERT INTO order_details VALUES (10522, 30, 25.8899994, 20, 0.200000003);\nINSERT INTO order_details VALUES (10522, 40, 18.3999996, 25, 0.200000003);\nINSERT INTO order_details VALUES (10523, 17, 39, 25, 0.100000001);\nINSERT INTO order_details VALUES (10523, 20, 81, 15, 0.100000001);\nINSERT INTO order_details VALUES (10523, 37, 26, 18, 0.100000001);\nINSERT INTO order_details VALUES (10523, 41, 9.64999962, 6, 0.100000001);\nINSERT INTO order_details VALUES (10524, 10, 31, 2, 0);\nINSERT INTO order_details VALUES (10524, 30, 25.8899994, 10, 0);\nINSERT INTO order_details VALUES (10524, 43, 46, 60, 0);\nINSERT INTO order_details VALUES (10524, 54, 7.44999981, 15, 0);\nINSERT INTO order_details VALUES (10525, 36, 19, 30, 0);\nINSERT INTO order_details VALUES (10525, 40, 18.3999996, 15, 0.100000001);\nINSERT INTO order_details VALUES (10526, 1, 18, 8, 0.150000006);\nINSERT INTO order_details VALUES (10526, 13, 6, 10, 0);\nINSERT INTO order_details VALUES (10526, 56, 38, 30, 0.150000006);\nINSERT INTO order_details VALUES (10527, 4, 22, 50, 0.100000001);\nINSERT INTO order_details VALUES (10527, 36, 19, 30, 0.100000001);\nINSERT INTO order_details VALUES (10528, 11, 21, 3, 0);\nINSERT INTO order_details VALUES (10528, 33, 2.5, 8, 0.200000003);\nINSERT INTO order_details VALUES (10528, 72, 34.7999992, 9, 0);\nINSERT INTO order_details VALUES (10529, 55, 24, 14, 0);\nINSERT INTO order_details VALUES (10529, 68, 12.5, 20, 0);\nINSERT INTO order_details VALUES (10529, 69, 36, 10, 0);\nINSERT INTO order_details VALUES (10530, 17, 39, 40, 0);\nINSERT INTO order_details VALUES (10530, 43, 46, 25, 0);\nINSERT INTO order_details VALUES (10530, 61, 28.5, 20, 0);\nINSERT INTO order_details VALUES (10530, 76, 18, 50, 0);\nINSERT INTO order_details VALUES (10531, 59, 55, 2, 0);\nINSERT INTO order_details VALUES (10532, 30, 25.8899994, 15, 0);\nINSERT INTO order_details VALUES (10532, 66, 17, 24, 0);\nINSERT INTO order_details VALUES (10533, 4, 22, 50, 0.0500000007);\nINSERT INTO order_details VALUES (10533, 72, 34.7999992, 24, 0);\nINSERT INTO order_details VALUES (10533, 73, 15, 24, 0.0500000007);\nINSERT INTO order_details VALUES (10534, 30, 25.8899994, 10, 0);\nINSERT INTO order_details VALUES (10534, 40, 18.3999996, 10, 0.200000003);\nINSERT INTO order_details VALUES (10534, 54, 7.44999981, 10, 0.200000003);\nINSERT INTO order_details VALUES (10535, 11, 21, 50, 0.100000001);\nINSERT INTO order_details VALUES (10535, 40, 18.3999996, 10, 0.100000001);\nINSERT INTO order_details VALUES (10535, 57, 19.5, 5, 0.100000001);\nINSERT INTO order_details VALUES (10535, 59, 55, 15, 0.100000001);\nINSERT INTO order_details VALUES (10536, 12, 38, 15, 0.25);\nINSERT INTO order_details VALUES (10536, 31, 12.5, 20, 0);\nINSERT INTO order_details VALUES (10536, 33, 2.5, 30, 0);\nINSERT INTO order_details VALUES (10536, 60, 34, 35, 0.25);\nINSERT INTO order_details VALUES (10537, 31, 12.5, 30, 0);\nINSERT INTO order_details VALUES (10537, 51, 53, 6, 0);\nINSERT INTO order_details VALUES (10537, 58, 13.25, 20, 0);\nINSERT INTO order_details VALUES (10537, 72, 34.7999992, 21, 0);\nINSERT INTO order_details VALUES (10537, 73, 15, 9, 0);\nINSERT INTO order_details VALUES (10538, 70, 15, 7, 0);\nINSERT INTO order_details VALUES (10538, 72, 34.7999992, 1, 0);\nINSERT INTO order_details VALUES (10539, 13, 6, 8, 0);\nINSERT INTO order_details VALUES (10539, 21, 10, 15, 0);\nINSERT INTO order_details VALUES (10539, 33, 2.5, 15, 0);\nINSERT INTO order_details VALUES (10539, 49, 20, 6, 0);\nINSERT INTO order_details VALUES (10540, 3, 10, 60, 0);\nINSERT INTO order_details VALUES (10540, 26, 31.2299995, 40, 0);\nINSERT INTO order_details VALUES (10540, 38, 263.5, 30, 0);\nINSERT INTO order_details VALUES (10540, 68, 12.5, 35, 0);\nINSERT INTO order_details VALUES (10541, 24, 4.5, 35, 0.100000001);\nINSERT INTO order_details VALUES (10541, 38, 263.5, 4, 0.100000001);\nINSERT INTO order_details VALUES (10541, 65, 21.0499992, 36, 0.100000001);\nINSERT INTO order_details VALUES (10541, 71, 21.5, 9, 0.100000001);\nINSERT INTO order_details VALUES (10542, 11, 21, 15, 0.0500000007);\nINSERT INTO order_details VALUES (10542, 54, 7.44999981, 24, 0.0500000007);\nINSERT INTO order_details VALUES (10543, 12, 38, 30, 0.150000006);\nINSERT INTO order_details VALUES (10543, 23, 9, 70, 0.150000006);\nINSERT INTO order_details VALUES (10544, 28, 45.5999985, 7, 0);\nINSERT INTO order_details VALUES (10544, 67, 14, 7, 0);\nINSERT INTO order_details VALUES (10545, 11, 21, 10, 0);\nINSERT INTO order_details VALUES (10546, 7, 30, 10, 0);\nINSERT INTO order_details VALUES (10546, 35, 18, 30, 0);\nINSERT INTO order_details VALUES (10546, 62, 49.2999992, 40, 0);\nINSERT INTO order_details VALUES (10547, 32, 32, 24, 0.150000006);\nINSERT INTO order_details VALUES (10547, 36, 19, 60, 0);\nINSERT INTO order_details VALUES (10548, 34, 14, 10, 0.25);\nINSERT INTO order_details VALUES (10548, 41, 9.64999962, 14, 0);\nINSERT INTO order_details VALUES (10549, 31, 12.5, 55, 0.150000006);\nINSERT INTO order_details VALUES (10549, 45, 9.5, 100, 0.150000006);\nINSERT INTO order_details VALUES (10549, 51, 53, 48, 0.150000006);\nINSERT INTO order_details VALUES (10550, 17, 39, 8, 0.100000001);\nINSERT INTO order_details VALUES (10550, 19, 9.19999981, 10, 0);\nINSERT INTO order_details VALUES (10550, 21, 10, 6, 0.100000001);\nINSERT INTO order_details VALUES (10550, 61, 28.5, 10, 0.100000001);\nINSERT INTO order_details VALUES (10551, 16, 17.4500008, 40, 0.150000006);\nINSERT INTO order_details VALUES (10551, 35, 18, 20, 0.150000006);\nINSERT INTO order_details VALUES (10551, 44, 19.4500008, 40, 0);\nINSERT INTO order_details VALUES (10552, 69, 36, 18, 0);\nINSERT INTO order_details VALUES (10552, 75, 7.75, 30, 0);\nINSERT INTO order_details VALUES (10553, 11, 21, 15, 0);\nINSERT INTO order_details VALUES (10553, 16, 17.4500008, 14, 0);\nINSERT INTO order_details VALUES (10553, 22, 21, 24, 0);\nINSERT INTO order_details VALUES (10553, 31, 12.5, 30, 0);\nINSERT INTO order_details VALUES (10553, 35, 18, 6, 0);\nINSERT INTO order_details VALUES (10554, 16, 17.4500008, 30, 0.0500000007);\nINSERT INTO order_details VALUES (10554, 23, 9, 20, 0.0500000007);\nINSERT INTO order_details VALUES (10554, 62, 49.2999992, 20, 0.0500000007);\nINSERT INTO order_details VALUES (10554, 77, 13, 10, 0.0500000007);\nINSERT INTO order_details VALUES (10555, 14, 23.25, 30, 0.200000003);\nINSERT INTO order_details VALUES (10555, 19, 9.19999981, 35, 0.200000003);\nINSERT INTO order_details VALUES (10555, 24, 4.5, 18, 0.200000003);\nINSERT INTO order_details VALUES (10555, 51, 53, 20, 0.200000003);\nINSERT INTO order_details VALUES (10555, 56, 38, 40, 0.200000003);\nINSERT INTO order_details VALUES (10556, 72, 34.7999992, 24, 0);\nINSERT INTO order_details VALUES (10557, 64, 33.25, 30, 0);\nINSERT INTO order_details VALUES (10557, 75, 7.75, 20, 0);\nINSERT INTO order_details VALUES (10558, 47, 9.5, 25, 0);\nINSERT INTO order_details VALUES (10558, 51, 53, 20, 0);\nINSERT INTO order_details VALUES (10558, 52, 7, 30, 0);\nINSERT INTO order_details VALUES (10558, 53, 32.7999992, 18, 0);\nINSERT INTO order_details VALUES (10558, 73, 15, 3, 0);\nINSERT INTO order_details VALUES (10559, 41, 9.64999962, 12, 0.0500000007);\nINSERT INTO order_details VALUES (10559, 55, 24, 18, 0.0500000007);\nINSERT INTO order_details VALUES (10560, 30, 25.8899994, 20, 0);\nINSERT INTO order_details VALUES (10560, 62, 49.2999992, 15, 0.25);\nINSERT INTO order_details VALUES (10561, 44, 19.4500008, 10, 0);\nINSERT INTO order_details VALUES (10561, 51, 53, 50, 0);\nINSERT INTO order_details VALUES (10562, 33, 2.5, 20, 0.100000001);\nINSERT INTO order_details VALUES (10562, 62, 49.2999992, 10, 0.100000001);\nINSERT INTO order_details VALUES (10563, 36, 19, 25, 0);\nINSERT INTO order_details VALUES (10563, 52, 7, 70, 0);\nINSERT INTO order_details VALUES (10564, 17, 39, 16, 0.0500000007);\nINSERT INTO order_details VALUES (10564, 31, 12.5, 6, 0.0500000007);\nINSERT INTO order_details VALUES (10564, 55, 24, 25, 0.0500000007);\nINSERT INTO order_details VALUES (10565, 24, 4.5, 25, 0.100000001);\nINSERT INTO order_details VALUES (10565, 64, 33.25, 18, 0.100000001);\nINSERT INTO order_details VALUES (10566, 11, 21, 35, 0.150000006);\nINSERT INTO order_details VALUES (10566, 18, 62.5, 18, 0.150000006);\nINSERT INTO order_details VALUES (10566, 76, 18, 10, 0);\nINSERT INTO order_details VALUES (10567, 31, 12.5, 60, 0.200000003);\nINSERT INTO order_details VALUES (10567, 51, 53, 3, 0);\nINSERT INTO order_details VALUES (10567, 59, 55, 40, 0.200000003);\nINSERT INTO order_details VALUES (10568, 10, 31, 5, 0);\nINSERT INTO order_details VALUES (10569, 31, 12.5, 35, 0.200000003);\nINSERT INTO order_details VALUES (10569, 76, 18, 30, 0);\nINSERT INTO order_details VALUES (10570, 11, 21, 15, 0.0500000007);\nINSERT INTO order_details VALUES (10570, 56, 38, 60, 0.0500000007);\nINSERT INTO order_details VALUES (10571, 14, 23.25, 11, 0.150000006);\nINSERT INTO order_details VALUES (10571, 42, 14, 28, 0.150000006);\nINSERT INTO order_details VALUES (10572, 16, 17.4500008, 12, 0.100000001);\nINSERT INTO order_details VALUES (10572, 32, 32, 10, 0.100000001);\nINSERT INTO order_details VALUES (10572, 40, 18.3999996, 50, 0);\nINSERT INTO order_details VALUES (10572, 75, 7.75, 15, 0.100000001);\nINSERT INTO order_details VALUES (10573, 17, 39, 18, 0);\nINSERT INTO order_details VALUES (10573, 34, 14, 40, 0);\nINSERT INTO order_details VALUES (10573, 53, 32.7999992, 25, 0);\nINSERT INTO order_details VALUES (10574, 33, 2.5, 14, 0);\nINSERT INTO order_details VALUES (10574, 40, 18.3999996, 2, 0);\nINSERT INTO order_details VALUES (10574, 62, 49.2999992, 10, 0);\nINSERT INTO order_details VALUES (10574, 64, 33.25, 6, 0);\nINSERT INTO order_details VALUES (10575, 59, 55, 12, 0);\nINSERT INTO order_details VALUES (10575, 63, 43.9000015, 6, 0);\nINSERT INTO order_details VALUES (10575, 72, 34.7999992, 30, 0);\nINSERT INTO order_details VALUES (10575, 76, 18, 10, 0);\nINSERT INTO order_details VALUES (10576, 1, 18, 10, 0);\nINSERT INTO order_details VALUES (10576, 31, 12.5, 20, 0);\nINSERT INTO order_details VALUES (10576, 44, 19.4500008, 21, 0);\nINSERT INTO order_details VALUES (10577, 39, 18, 10, 0);\nINSERT INTO order_details VALUES (10577, 75, 7.75, 20, 0);\nINSERT INTO order_details VALUES (10577, 77, 13, 18, 0);\nINSERT INTO order_details VALUES (10578, 35, 18, 20, 0);\nINSERT INTO order_details VALUES (10578, 57, 19.5, 6, 0);\nINSERT INTO order_details VALUES (10579, 15, 15.5, 10, 0);\nINSERT INTO order_details VALUES (10579, 75, 7.75, 21, 0);\nINSERT INTO order_details VALUES (10580, 14, 23.25, 15, 0.0500000007);\nINSERT INTO order_details VALUES (10580, 41, 9.64999962, 9, 0.0500000007);\nINSERT INTO order_details VALUES (10580, 65, 21.0499992, 30, 0.0500000007);\nINSERT INTO order_details VALUES (10581, 75, 7.75, 50, 0.200000003);\nINSERT INTO order_details VALUES (10582, 57, 19.5, 4, 0);\nINSERT INTO order_details VALUES (10582, 76, 18, 14, 0);\nINSERT INTO order_details VALUES (10583, 29, 123.790001, 10, 0);\nINSERT INTO order_details VALUES (10583, 60, 34, 24, 0.150000006);\nINSERT INTO order_details VALUES (10583, 69, 36, 10, 0.150000006);\nINSERT INTO order_details VALUES (10584, 31, 12.5, 50, 0.0500000007);\nINSERT INTO order_details VALUES (10585, 47, 9.5, 15, 0);\nINSERT INTO order_details VALUES (10586, 52, 7, 4, 0.150000006);\nINSERT INTO order_details VALUES (10587, 26, 31.2299995, 6, 0);\nINSERT INTO order_details VALUES (10587, 35, 18, 20, 0);\nINSERT INTO order_details VALUES (10587, 77, 13, 20, 0);\nINSERT INTO order_details VALUES (10588, 18, 62.5, 40, 0.200000003);\nINSERT INTO order_details VALUES (10588, 42, 14, 100, 0.200000003);\nINSERT INTO order_details VALUES (10589, 35, 18, 4, 0);\nINSERT INTO order_details VALUES (10590, 1, 18, 20, 0);\nINSERT INTO order_details VALUES (10590, 77, 13, 60, 0.0500000007);\nINSERT INTO order_details VALUES (10591, 3, 10, 14, 0);\nINSERT INTO order_details VALUES (10591, 7, 30, 10, 0);\nINSERT INTO order_details VALUES (10591, 54, 7.44999981, 50, 0);\nINSERT INTO order_details VALUES (10592, 15, 15.5, 25, 0.0500000007);\nINSERT INTO order_details VALUES (10592, 26, 31.2299995, 5, 0.0500000007);\nINSERT INTO order_details VALUES (10593, 20, 81, 21, 0.200000003);\nINSERT INTO order_details VALUES (10593, 69, 36, 20, 0.200000003);\nINSERT INTO order_details VALUES (10593, 76, 18, 4, 0.200000003);\nINSERT INTO order_details VALUES (10594, 52, 7, 24, 0);\nINSERT INTO order_details VALUES (10594, 58, 13.25, 30, 0);\nINSERT INTO order_details VALUES (10595, 35, 18, 30, 0.25);\nINSERT INTO order_details VALUES (10595, 61, 28.5, 120, 0.25);\nINSERT INTO order_details VALUES (10595, 69, 36, 65, 0.25);\nINSERT INTO order_details VALUES (10596, 56, 38, 5, 0.200000003);\nINSERT INTO order_details VALUES (10596, 63, 43.9000015, 24, 0.200000003);\nINSERT INTO order_details VALUES (10596, 75, 7.75, 30, 0.200000003);\nINSERT INTO order_details VALUES (10597, 24, 4.5, 35, 0.200000003);\nINSERT INTO order_details VALUES (10597, 57, 19.5, 20, 0);\nINSERT INTO order_details VALUES (10597, 65, 21.0499992, 12, 0.200000003);\nINSERT INTO order_details VALUES (10598, 27, 43.9000015, 50, 0);\nINSERT INTO order_details VALUES (10598, 71, 21.5, 9, 0);\nINSERT INTO order_details VALUES (10599, 62, 49.2999992, 10, 0);\nINSERT INTO order_details VALUES (10600, 54, 7.44999981, 4, 0);\nINSERT INTO order_details VALUES (10600, 73, 15, 30, 0);\nINSERT INTO order_details VALUES (10601, 13, 6, 60, 0);\nINSERT INTO order_details VALUES (10601, 59, 55, 35, 0);\nINSERT INTO order_details VALUES (10602, 77, 13, 5, 0.25);\nINSERT INTO order_details VALUES (10603, 22, 21, 48, 0);\nINSERT INTO order_details VALUES (10603, 49, 20, 25, 0.0500000007);\nINSERT INTO order_details VALUES (10604, 48, 12.75, 6, 0.100000001);\nINSERT INTO order_details VALUES (10604, 76, 18, 10, 0.100000001);\nINSERT INTO order_details VALUES (10605, 16, 17.4500008, 30, 0.0500000007);\nINSERT INTO order_details VALUES (10605, 59, 55, 20, 0.0500000007);\nINSERT INTO order_details VALUES (10605, 60, 34, 70, 0.0500000007);\nINSERT INTO order_details VALUES (10605, 71, 21.5, 15, 0.0500000007);\nINSERT INTO order_details VALUES (10606, 4, 22, 20, 0.200000003);\nINSERT INTO order_details VALUES (10606, 55, 24, 20, 0.200000003);\nINSERT INTO order_details VALUES (10606, 62, 49.2999992, 10, 0.200000003);\nINSERT INTO order_details VALUES (10607, 7, 30, 45, 0);\nINSERT INTO order_details VALUES (10607, 17, 39, 100, 0);\nINSERT INTO order_details VALUES (10607, 33, 2.5, 14, 0);\nINSERT INTO order_details VALUES (10607, 40, 18.3999996, 42, 0);\nINSERT INTO order_details VALUES (10607, 72, 34.7999992, 12, 0);\nINSERT INTO order_details VALUES (10608, 56, 38, 28, 0);\nINSERT INTO order_details VALUES (10609, 1, 18, 3, 0);\nINSERT INTO order_details VALUES (10609, 10, 31, 10, 0);\nINSERT INTO order_details VALUES (10609, 21, 10, 6, 0);\nINSERT INTO order_details VALUES (10610, 36, 19, 21, 0.25);\nINSERT INTO order_details VALUES (10611, 1, 18, 6, 0);\nINSERT INTO order_details VALUES (10611, 2, 19, 10, 0);\nINSERT INTO order_details VALUES (10611, 60, 34, 15, 0);\nINSERT INTO order_details VALUES (10612, 10, 31, 70, 0);\nINSERT INTO order_details VALUES (10612, 36, 19, 55, 0);\nINSERT INTO order_details VALUES (10612, 49, 20, 18, 0);\nINSERT INTO order_details VALUES (10612, 60, 34, 40, 0);\nINSERT INTO order_details VALUES (10612, 76, 18, 80, 0);\nINSERT INTO order_details VALUES (10613, 13, 6, 8, 0.100000001);\nINSERT INTO order_details VALUES (10613, 75, 7.75, 40, 0);\nINSERT INTO order_details VALUES (10614, 11, 21, 14, 0);\nINSERT INTO order_details VALUES (10614, 21, 10, 8, 0);\nINSERT INTO order_details VALUES (10614, 39, 18, 5, 0);\nINSERT INTO order_details VALUES (10615, 55, 24, 5, 0);\nINSERT INTO order_details VALUES (10616, 38, 263.5, 15, 0.0500000007);\nINSERT INTO order_details VALUES (10616, 56, 38, 14, 0);\nINSERT INTO order_details VALUES (10616, 70, 15, 15, 0.0500000007);\nINSERT INTO order_details VALUES (10616, 71, 21.5, 15, 0.0500000007);\nINSERT INTO order_details VALUES (10617, 59, 55, 30, 0.150000006);\nINSERT INTO order_details VALUES (10618, 6, 25, 70, 0);\nINSERT INTO order_details VALUES (10618, 56, 38, 20, 0);\nINSERT INTO order_details VALUES (10618, 68, 12.5, 15, 0);\nINSERT INTO order_details VALUES (10619, 21, 10, 42, 0);\nINSERT INTO order_details VALUES (10619, 22, 21, 40, 0);\nINSERT INTO order_details VALUES (10620, 24, 4.5, 5, 0);\nINSERT INTO order_details VALUES (10620, 52, 7, 5, 0);\nINSERT INTO order_details VALUES (10621, 19, 9.19999981, 5, 0);\nINSERT INTO order_details VALUES (10621, 23, 9, 10, 0);\nINSERT INTO order_details VALUES (10621, 70, 15, 20, 0);\nINSERT INTO order_details VALUES (10621, 71, 21.5, 15, 0);\nINSERT INTO order_details VALUES (10622, 2, 19, 20, 0);\nINSERT INTO order_details VALUES (10622, 68, 12.5, 18, 0.200000003);\nINSERT INTO order_details VALUES (10623, 14, 23.25, 21, 0);\nINSERT INTO order_details VALUES (10623, 19, 9.19999981, 15, 0.100000001);\nINSERT INTO order_details VALUES (10623, 21, 10, 25, 0.100000001);\nINSERT INTO order_details VALUES (10623, 24, 4.5, 3, 0);\nINSERT INTO order_details VALUES (10623, 35, 18, 30, 0.100000001);\nINSERT INTO order_details VALUES (10624, 28, 45.5999985, 10, 0);\nINSERT INTO order_details VALUES (10624, 29, 123.790001, 6, 0);\nINSERT INTO order_details VALUES (10624, 44, 19.4500008, 10, 0);\nINSERT INTO order_details VALUES (10625, 14, 23.25, 3, 0);\nINSERT INTO order_details VALUES (10625, 42, 14, 5, 0);\nINSERT INTO order_details VALUES (10625, 60, 34, 10, 0);\nINSERT INTO order_details VALUES (10626, 53, 32.7999992, 12, 0);\nINSERT INTO order_details VALUES (10626, 60, 34, 20, 0);\nINSERT INTO order_details VALUES (10626, 71, 21.5, 20, 0);\nINSERT INTO order_details VALUES (10627, 62, 49.2999992, 15, 0);\nINSERT INTO order_details VALUES (10627, 73, 15, 35, 0.150000006);\nINSERT INTO order_details VALUES (10628, 1, 18, 25, 0);\nINSERT INTO order_details VALUES (10629, 29, 123.790001, 20, 0);\nINSERT INTO order_details VALUES (10629, 64, 33.25, 9, 0);\nINSERT INTO order_details VALUES (10630, 55, 24, 12, 0.0500000007);\nINSERT INTO order_details VALUES (10630, 76, 18, 35, 0);\nINSERT INTO order_details VALUES (10631, 75, 7.75, 8, 0.100000001);\nINSERT INTO order_details VALUES (10632, 2, 19, 30, 0.0500000007);\nINSERT INTO order_details VALUES (10632, 33, 2.5, 20, 0.0500000007);\nINSERT INTO order_details VALUES (10633, 12, 38, 36, 0.150000006);\nINSERT INTO order_details VALUES (10633, 13, 6, 13, 0.150000006);\nINSERT INTO order_details VALUES (10633, 26, 31.2299995, 35, 0.150000006);\nINSERT INTO order_details VALUES (10633, 62, 49.2999992, 80, 0.150000006);\nINSERT INTO order_details VALUES (10634, 7, 30, 35, 0);\nINSERT INTO order_details VALUES (10634, 18, 62.5, 50, 0);\nINSERT INTO order_details VALUES (10634, 51, 53, 15, 0);\nINSERT INTO order_details VALUES (10634, 75, 7.75, 2, 0);\nINSERT INTO order_details VALUES (10635, 4, 22, 10, 0.100000001);\nINSERT INTO order_details VALUES (10635, 5, 21.3500004, 15, 0.100000001);\nINSERT INTO order_details VALUES (10635, 22, 21, 40, 0);\nINSERT INTO order_details VALUES (10636, 4, 22, 25, 0);\nINSERT INTO order_details VALUES (10636, 58, 13.25, 6, 0);\nINSERT INTO order_details VALUES (10637, 11, 21, 10, 0);\nINSERT INTO order_details VALUES (10637, 50, 16.25, 25, 0.0500000007);\nINSERT INTO order_details VALUES (10637, 56, 38, 60, 0.0500000007);\nINSERT INTO order_details VALUES (10638, 45, 9.5, 20, 0);\nINSERT INTO order_details VALUES (10638, 65, 21.0499992, 21, 0);\nINSERT INTO order_details VALUES (10638, 72, 34.7999992, 60, 0);\nINSERT INTO order_details VALUES (10639, 18, 62.5, 8, 0);\nINSERT INTO order_details VALUES (10640, 69, 36, 20, 0.25);\nINSERT INTO order_details VALUES (10640, 70, 15, 15, 0.25);\nINSERT INTO order_details VALUES (10641, 2, 19, 50, 0);\nINSERT INTO order_details VALUES (10641, 40, 18.3999996, 60, 0);\nINSERT INTO order_details VALUES (10642, 21, 10, 30, 0.200000003);\nINSERT INTO order_details VALUES (10642, 61, 28.5, 20, 0.200000003);\nINSERT INTO order_details VALUES (10643, 28, 45.5999985, 15, 0.25);\nINSERT INTO order_details VALUES (10643, 39, 18, 21, 0.25);\nINSERT INTO order_details VALUES (10643, 46, 12, 2, 0.25);\nINSERT INTO order_details VALUES (10644, 18, 62.5, 4, 0.100000001);\nINSERT INTO order_details VALUES (10644, 43, 46, 20, 0);\nINSERT INTO order_details VALUES (10644, 46, 12, 21, 0.100000001);\nINSERT INTO order_details VALUES (10645, 18, 62.5, 20, 0);\nINSERT INTO order_details VALUES (10645, 36, 19, 15, 0);\nINSERT INTO order_details VALUES (10646, 1, 18, 15, 0.25);\nINSERT INTO order_details VALUES (10646, 10, 31, 18, 0.25);\nINSERT INTO order_details VALUES (10646, 71, 21.5, 30, 0.25);\nINSERT INTO order_details VALUES (10646, 77, 13, 35, 0.25);\nINSERT INTO order_details VALUES (10647, 19, 9.19999981, 30, 0);\nINSERT INTO order_details VALUES (10647, 39, 18, 20, 0);\nINSERT INTO order_details VALUES (10648, 22, 21, 15, 0);\nINSERT INTO order_details VALUES (10648, 24, 4.5, 15, 0.150000006);\nINSERT INTO order_details VALUES (10649, 28, 45.5999985, 20, 0);\nINSERT INTO order_details VALUES (10649, 72, 34.7999992, 15, 0);\nINSERT INTO order_details VALUES (10650, 30, 25.8899994, 30, 0);\nINSERT INTO order_details VALUES (10650, 53, 32.7999992, 25, 0.0500000007);\nINSERT INTO order_details VALUES (10650, 54, 7.44999981, 30, 0);\nINSERT INTO order_details VALUES (10651, 19, 9.19999981, 12, 0.25);\nINSERT INTO order_details VALUES (10651, 22, 21, 20, 0.25);\nINSERT INTO order_details VALUES (10652, 30, 25.8899994, 2, 0.25);\nINSERT INTO order_details VALUES (10652, 42, 14, 20, 0);\nINSERT INTO order_details VALUES (10653, 16, 17.4500008, 30, 0.100000001);\nINSERT INTO order_details VALUES (10653, 60, 34, 20, 0.100000001);\nINSERT INTO order_details VALUES (10654, 4, 22, 12, 0.100000001);\nINSERT INTO order_details VALUES (10654, 39, 18, 20, 0.100000001);\nINSERT INTO order_details VALUES (10654, 54, 7.44999981, 6, 0.100000001);\nINSERT INTO order_details VALUES (10655, 41, 9.64999962, 20, 0.200000003);\nINSERT INTO order_details VALUES (10656, 14, 23.25, 3, 0.100000001);\nINSERT INTO order_details VALUES (10656, 44, 19.4500008, 28, 0.100000001);\nINSERT INTO order_details VALUES (10656, 47, 9.5, 6, 0.100000001);\nINSERT INTO order_details VALUES (10657, 15, 15.5, 50, 0);\nINSERT INTO order_details VALUES (10657, 41, 9.64999962, 24, 0);\nINSERT INTO order_details VALUES (10657, 46, 12, 45, 0);\nINSERT INTO order_details VALUES (10657, 47, 9.5, 10, 0);\nINSERT INTO order_details VALUES (10657, 56, 38, 45, 0);\nINSERT INTO order_details VALUES (10657, 60, 34, 30, 0);\nINSERT INTO order_details VALUES (10658, 21, 10, 60, 0);\nINSERT INTO order_details VALUES (10658, 40, 18.3999996, 70, 0.0500000007);\nINSERT INTO order_details VALUES (10658, 60, 34, 55, 0.0500000007);\nINSERT INTO order_details VALUES (10658, 77, 13, 70, 0.0500000007);\nINSERT INTO order_details VALUES (10659, 31, 12.5, 20, 0.0500000007);\nINSERT INTO order_details VALUES (10659, 40, 18.3999996, 24, 0.0500000007);\nINSERT INTO order_details VALUES (10659, 70, 15, 40, 0.0500000007);\nINSERT INTO order_details VALUES (10660, 20, 81, 21, 0);\nINSERT INTO order_details VALUES (10661, 39, 18, 3, 0.200000003);\nINSERT INTO order_details VALUES (10661, 58, 13.25, 49, 0.200000003);\nINSERT INTO order_details VALUES (10662, 68, 12.5, 10, 0);\nINSERT INTO order_details VALUES (10663, 40, 18.3999996, 30, 0.0500000007);\nINSERT INTO order_details VALUES (10663, 42, 14, 30, 0.0500000007);\nINSERT INTO order_details VALUES (10663, 51, 53, 20, 0.0500000007);\nINSERT INTO order_details VALUES (10664, 10, 31, 24, 0.150000006);\nINSERT INTO order_details VALUES (10664, 56, 38, 12, 0.150000006);\nINSERT INTO order_details VALUES (10664, 65, 21.0499992, 15, 0.150000006);\nINSERT INTO order_details VALUES (10665, 51, 53, 20, 0);\nINSERT INTO order_details VALUES (10665, 59, 55, 1, 0);\nINSERT INTO order_details VALUES (10665, 76, 18, 10, 0);\nINSERT INTO order_details VALUES (10666, 29, 123.790001, 36, 0);\nINSERT INTO order_details VALUES (10666, 65, 21.0499992, 10, 0);\nINSERT INTO order_details VALUES (10667, 69, 36, 45, 0.200000003);\nINSERT INTO order_details VALUES (10667, 71, 21.5, 14, 0.200000003);\nINSERT INTO order_details VALUES (10668, 31, 12.5, 8, 0.100000001);\nINSERT INTO order_details VALUES (10668, 55, 24, 4, 0.100000001);\nINSERT INTO order_details VALUES (10668, 64, 33.25, 15, 0.100000001);\nINSERT INTO order_details VALUES (10669, 36, 19, 30, 0);\nINSERT INTO order_details VALUES (10670, 23, 9, 32, 0);\nINSERT INTO order_details VALUES (10670, 46, 12, 60, 0);\nINSERT INTO order_details VALUES (10670, 67, 14, 25, 0);\nINSERT INTO order_details VALUES (10670, 73, 15, 50, 0);\nINSERT INTO order_details VALUES (10670, 75, 7.75, 25, 0);\nINSERT INTO order_details VALUES (10671, 16, 17.4500008, 10, 0);\nINSERT INTO order_details VALUES (10671, 62, 49.2999992, 10, 0);\nINSERT INTO order_details VALUES (10671, 65, 21.0499992, 12, 0);\nINSERT INTO order_details VALUES (10672, 38, 263.5, 15, 0.100000001);\nINSERT INTO order_details VALUES (10672, 71, 21.5, 12, 0);\nINSERT INTO order_details VALUES (10673, 16, 17.4500008, 3, 0);\nINSERT INTO order_details VALUES (10673, 42, 14, 6, 0);\nINSERT INTO order_details VALUES (10673, 43, 46, 6, 0);\nINSERT INTO order_details VALUES (10674, 23, 9, 5, 0);\nINSERT INTO order_details VALUES (10675, 14, 23.25, 30, 0);\nINSERT INTO order_details VALUES (10675, 53, 32.7999992, 10, 0);\nINSERT INTO order_details VALUES (10675, 58, 13.25, 30, 0);\nINSERT INTO order_details VALUES (10676, 10, 31, 2, 0);\nINSERT INTO order_details VALUES (10676, 19, 9.19999981, 7, 0);\nINSERT INTO order_details VALUES (10676, 44, 19.4500008, 21, 0);\nINSERT INTO order_details VALUES (10677, 26, 31.2299995, 30, 0.150000006);\nINSERT INTO order_details VALUES (10677, 33, 2.5, 8, 0.150000006);\nINSERT INTO order_details VALUES (10678, 12, 38, 100, 0);\nINSERT INTO order_details VALUES (10678, 33, 2.5, 30, 0);\nINSERT INTO order_details VALUES (10678, 41, 9.64999962, 120, 0);\nINSERT INTO order_details VALUES (10678, 54, 7.44999981, 30, 0);\nINSERT INTO order_details VALUES (10679, 59, 55, 12, 0);\nINSERT INTO order_details VALUES (10680, 16, 17.4500008, 50, 0.25);\nINSERT INTO order_details VALUES (10680, 31, 12.5, 20, 0.25);\nINSERT INTO order_details VALUES (10680, 42, 14, 40, 0.25);\nINSERT INTO order_details VALUES (10681, 19, 9.19999981, 30, 0.100000001);\nINSERT INTO order_details VALUES (10681, 21, 10, 12, 0.100000001);\nINSERT INTO order_details VALUES (10681, 64, 33.25, 28, 0);\nINSERT INTO order_details VALUES (10682, 33, 2.5, 30, 0);\nINSERT INTO order_details VALUES (10682, 66, 17, 4, 0);\nINSERT INTO order_details VALUES (10682, 75, 7.75, 30, 0);\nINSERT INTO order_details VALUES (10683, 52, 7, 9, 0);\nINSERT INTO order_details VALUES (10684, 40, 18.3999996, 20, 0);\nINSERT INTO order_details VALUES (10684, 47, 9.5, 40, 0);\nINSERT INTO order_details VALUES (10684, 60, 34, 30, 0);\nINSERT INTO order_details VALUES (10685, 10, 31, 20, 0);\nINSERT INTO order_details VALUES (10685, 41, 9.64999962, 4, 0);\nINSERT INTO order_details VALUES (10685, 47, 9.5, 15, 0);\nINSERT INTO order_details VALUES (10686, 17, 39, 30, 0.200000003);\nINSERT INTO order_details VALUES (10686, 26, 31.2299995, 15, 0);\nINSERT INTO order_details VALUES (10687, 9, 97, 50, 0.25);\nINSERT INTO order_details VALUES (10687, 29, 123.790001, 10, 0);\nINSERT INTO order_details VALUES (10687, 36, 19, 6, 0.25);\nINSERT INTO order_details VALUES (10688, 10, 31, 18, 0.100000001);\nINSERT INTO order_details VALUES (10688, 28, 45.5999985, 60, 0.100000001);\nINSERT INTO order_details VALUES (10688, 34, 14, 14, 0);\nINSERT INTO order_details VALUES (10689, 1, 18, 35, 0.25);\nINSERT INTO order_details VALUES (10690, 56, 38, 20, 0.25);\nINSERT INTO order_details VALUES (10690, 77, 13, 30, 0.25);\nINSERT INTO order_details VALUES (10691, 1, 18, 30, 0);\nINSERT INTO order_details VALUES (10691, 29, 123.790001, 40, 0);\nINSERT INTO order_details VALUES (10691, 43, 46, 40, 0);\nINSERT INTO order_details VALUES (10691, 44, 19.4500008, 24, 0);\nINSERT INTO order_details VALUES (10691, 62, 49.2999992, 48, 0);\nINSERT INTO order_details VALUES (10692, 63, 43.9000015, 20, 0);\nINSERT INTO order_details VALUES (10693, 9, 97, 6, 0);\nINSERT INTO order_details VALUES (10693, 54, 7.44999981, 60, 0.150000006);\nINSERT INTO order_details VALUES (10693, 69, 36, 30, 0.150000006);\nINSERT INTO order_details VALUES (10693, 73, 15, 15, 0.150000006);\nINSERT INTO order_details VALUES (10694, 7, 30, 90, 0);\nINSERT INTO order_details VALUES (10694, 59, 55, 25, 0);\nINSERT INTO order_details VALUES (10694, 70, 15, 50, 0);\nINSERT INTO order_details VALUES (10695, 8, 40, 10, 0);\nINSERT INTO order_details VALUES (10695, 12, 38, 4, 0);\nINSERT INTO order_details VALUES (10695, 24, 4.5, 20, 0);\nINSERT INTO order_details VALUES (10696, 17, 39, 20, 0);\nINSERT INTO order_details VALUES (10696, 46, 12, 18, 0);\nINSERT INTO order_details VALUES (10697, 19, 9.19999981, 7, 0.25);\nINSERT INTO order_details VALUES (10697, 35, 18, 9, 0.25);\nINSERT INTO order_details VALUES (10697, 58, 13.25, 30, 0.25);\nINSERT INTO order_details VALUES (10697, 70, 15, 30, 0.25);\nINSERT INTO order_details VALUES (10698, 11, 21, 15, 0);\nINSERT INTO order_details VALUES (10698, 17, 39, 8, 0.0500000007);\nINSERT INTO order_details VALUES (10698, 29, 123.790001, 12, 0.0500000007);\nINSERT INTO order_details VALUES (10698, 65, 21.0499992, 65, 0.0500000007);\nINSERT INTO order_details VALUES (10698, 70, 15, 8, 0.0500000007);\nINSERT INTO order_details VALUES (10699, 47, 9.5, 12, 0);\nINSERT INTO order_details VALUES (10700, 1, 18, 5, 0.200000003);\nINSERT INTO order_details VALUES (10700, 34, 14, 12, 0.200000003);\nINSERT INTO order_details VALUES (10700, 68, 12.5, 40, 0.200000003);\nINSERT INTO order_details VALUES (10700, 71, 21.5, 60, 0.200000003);\nINSERT INTO order_details VALUES (10701, 59, 55, 42, 0.150000006);\nINSERT INTO order_details VALUES (10701, 71, 21.5, 20, 0.150000006);\nINSERT INTO order_details VALUES (10701, 76, 18, 35, 0.150000006);\nINSERT INTO order_details VALUES (10702, 3, 10, 6, 0);\nINSERT INTO order_details VALUES (10702, 76, 18, 15, 0);\nINSERT INTO order_details VALUES (10703, 2, 19, 5, 0);\nINSERT INTO order_details VALUES (10703, 59, 55, 35, 0);\nINSERT INTO order_details VALUES (10703, 73, 15, 35, 0);\nINSERT INTO order_details VALUES (10704, 4, 22, 6, 0);\nINSERT INTO order_details VALUES (10704, 24, 4.5, 35, 0);\nINSERT INTO order_details VALUES (10704, 48, 12.75, 24, 0);\nINSERT INTO order_details VALUES (10705, 31, 12.5, 20, 0);\nINSERT INTO order_details VALUES (10705, 32, 32, 4, 0);\nINSERT INTO order_details VALUES (10706, 16, 17.4500008, 20, 0);\nINSERT INTO order_details VALUES (10706, 43, 46, 24, 0);\nINSERT INTO order_details VALUES (10706, 59, 55, 8, 0);\nINSERT INTO order_details VALUES (10707, 55, 24, 21, 0);\nINSERT INTO order_details VALUES (10707, 57, 19.5, 40, 0);\nINSERT INTO order_details VALUES (10707, 70, 15, 28, 0.150000006);\nINSERT INTO order_details VALUES (10708, 5, 21.3500004, 4, 0);\nINSERT INTO order_details VALUES (10708, 36, 19, 5, 0);\nINSERT INTO order_details VALUES (10709, 8, 40, 40, 0);\nINSERT INTO order_details VALUES (10709, 51, 53, 28, 0);\nINSERT INTO order_details VALUES (10709, 60, 34, 10, 0);\nINSERT INTO order_details VALUES (10710, 19, 9.19999981, 5, 0);\nINSERT INTO order_details VALUES (10710, 47, 9.5, 5, 0);\nINSERT INTO order_details VALUES (10711, 19, 9.19999981, 12, 0);\nINSERT INTO order_details VALUES (10711, 41, 9.64999962, 42, 0);\nINSERT INTO order_details VALUES (10711, 53, 32.7999992, 120, 0);\nINSERT INTO order_details VALUES (10712, 53, 32.7999992, 3, 0.0500000007);\nINSERT INTO order_details VALUES (10712, 56, 38, 30, 0);\nINSERT INTO order_details VALUES (10713, 10, 31, 18, 0);\nINSERT INTO order_details VALUES (10713, 26, 31.2299995, 30, 0);\nINSERT INTO order_details VALUES (10713, 45, 9.5, 110, 0);\nINSERT INTO order_details VALUES (10713, 46, 12, 24, 0);\nINSERT INTO order_details VALUES (10714, 2, 19, 30, 0.25);\nINSERT INTO order_details VALUES (10714, 17, 39, 27, 0.25);\nINSERT INTO order_details VALUES (10714, 47, 9.5, 50, 0.25);\nINSERT INTO order_details VALUES (10714, 56, 38, 18, 0.25);\nINSERT INTO order_details VALUES (10714, 58, 13.25, 12, 0.25);\nINSERT INTO order_details VALUES (10715, 10, 31, 21, 0);\nINSERT INTO order_details VALUES (10715, 71, 21.5, 30, 0);\nINSERT INTO order_details VALUES (10716, 21, 10, 5, 0);\nINSERT INTO order_details VALUES (10716, 51, 53, 7, 0);\nINSERT INTO order_details VALUES (10716, 61, 28.5, 10, 0);\nINSERT INTO order_details VALUES (10717, 21, 10, 32, 0.0500000007);\nINSERT INTO order_details VALUES (10717, 54, 7.44999981, 15, 0);\nINSERT INTO order_details VALUES (10717, 69, 36, 25, 0.0500000007);\nINSERT INTO order_details VALUES (10718, 12, 38, 36, 0);\nINSERT INTO order_details VALUES (10718, 16, 17.4500008, 20, 0);\nINSERT INTO order_details VALUES (10718, 36, 19, 40, 0);\nINSERT INTO order_details VALUES (10718, 62, 49.2999992, 20, 0);\nINSERT INTO order_details VALUES (10719, 18, 62.5, 12, 0.25);\nINSERT INTO order_details VALUES (10719, 30, 25.8899994, 3, 0.25);\nINSERT INTO order_details VALUES (10719, 54, 7.44999981, 40, 0.25);\nINSERT INTO order_details VALUES (10720, 35, 18, 21, 0);\nINSERT INTO order_details VALUES (10720, 71, 21.5, 8, 0);\nINSERT INTO order_details VALUES (10721, 44, 19.4500008, 50, 0.0500000007);\nINSERT INTO order_details VALUES (10722, 2, 19, 3, 0);\nINSERT INTO order_details VALUES (10722, 31, 12.5, 50, 0);\nINSERT INTO order_details VALUES (10722, 68, 12.5, 45, 0);\nINSERT INTO order_details VALUES (10722, 75, 7.75, 42, 0);\nINSERT INTO order_details VALUES (10723, 26, 31.2299995, 15, 0);\nINSERT INTO order_details VALUES (10724, 10, 31, 16, 0);\nINSERT INTO order_details VALUES (10724, 61, 28.5, 5, 0);\nINSERT INTO order_details VALUES (10725, 41, 9.64999962, 12, 0);\nINSERT INTO order_details VALUES (10725, 52, 7, 4, 0);\nINSERT INTO order_details VALUES (10725, 55, 24, 6, 0);\nINSERT INTO order_details VALUES (10726, 4, 22, 25, 0);\nINSERT INTO order_details VALUES (10726, 11, 21, 5, 0);\nINSERT INTO order_details VALUES (10727, 17, 39, 20, 0.0500000007);\nINSERT INTO order_details VALUES (10727, 56, 38, 10, 0.0500000007);\nINSERT INTO order_details VALUES (10727, 59, 55, 10, 0.0500000007);\nINSERT INTO order_details VALUES (10728, 30, 25.8899994, 15, 0);\nINSERT INTO order_details VALUES (10728, 40, 18.3999996, 6, 0);\nINSERT INTO order_details VALUES (10728, 55, 24, 12, 0);\nINSERT INTO order_details VALUES (10728, 60, 34, 15, 0);\nINSERT INTO order_details VALUES (10729, 1, 18, 50, 0);\nINSERT INTO order_details VALUES (10729, 21, 10, 30, 0);\nINSERT INTO order_details VALUES (10729, 50, 16.25, 40, 0);\nINSERT INTO order_details VALUES (10730, 16, 17.4500008, 15, 0.0500000007);\nINSERT INTO order_details VALUES (10730, 31, 12.5, 3, 0.0500000007);\nINSERT INTO order_details VALUES (10730, 65, 21.0499992, 10, 0.0500000007);\nINSERT INTO order_details VALUES (10731, 21, 10, 40, 0.0500000007);\nINSERT INTO order_details VALUES (10731, 51, 53, 30, 0.0500000007);\nINSERT INTO order_details VALUES (10732, 76, 18, 20, 0);\nINSERT INTO order_details VALUES (10733, 14, 23.25, 16, 0);\nINSERT INTO order_details VALUES (10733, 28, 45.5999985, 20, 0);\nINSERT INTO order_details VALUES (10733, 52, 7, 25, 0);\nINSERT INTO order_details VALUES (10734, 6, 25, 30, 0);\nINSERT INTO order_details VALUES (10734, 30, 25.8899994, 15, 0);\nINSERT INTO order_details VALUES (10734, 76, 18, 20, 0);\nINSERT INTO order_details VALUES (10735, 61, 28.5, 20, 0.100000001);\nINSERT INTO order_details VALUES (10735, 77, 13, 2, 0.100000001);\nINSERT INTO order_details VALUES (10736, 65, 21.0499992, 40, 0);\nINSERT INTO order_details VALUES (10736, 75, 7.75, 20, 0);\nINSERT INTO order_details VALUES (10737, 13, 6, 4, 0);\nINSERT INTO order_details VALUES (10737, 41, 9.64999962, 12, 0);\nINSERT INTO order_details VALUES (10738, 16, 17.4500008, 3, 0);\nINSERT INTO order_details VALUES (10739, 36, 19, 6, 0);\nINSERT INTO order_details VALUES (10739, 52, 7, 18, 0);\nINSERT INTO order_details VALUES (10740, 28, 45.5999985, 5, 0.200000003);\nINSERT INTO order_details VALUES (10740, 35, 18, 35, 0.200000003);\nINSERT INTO order_details VALUES (10740, 45, 9.5, 40, 0.200000003);\nINSERT INTO order_details VALUES (10740, 56, 38, 14, 0.200000003);\nINSERT INTO order_details VALUES (10741, 2, 19, 15, 0.200000003);\nINSERT INTO order_details VALUES (10742, 3, 10, 20, 0);\nINSERT INTO order_details VALUES (10742, 60, 34, 50, 0);\nINSERT INTO order_details VALUES (10742, 72, 34.7999992, 35, 0);\nINSERT INTO order_details VALUES (10743, 46, 12, 28, 0.0500000007);\nINSERT INTO order_details VALUES (10744, 40, 18.3999996, 50, 0.200000003);\nINSERT INTO order_details VALUES (10745, 18, 62.5, 24, 0);\nINSERT INTO order_details VALUES (10745, 44, 19.4500008, 16, 0);\nINSERT INTO order_details VALUES (10745, 59, 55, 45, 0);\nINSERT INTO order_details VALUES (10745, 72, 34.7999992, 7, 0);\nINSERT INTO order_details VALUES (10746, 13, 6, 6, 0);\nINSERT INTO order_details VALUES (10746, 42, 14, 28, 0);\nINSERT INTO order_details VALUES (10746, 62, 49.2999992, 9, 0);\nINSERT INTO order_details VALUES (10746, 69, 36, 40, 0);\nINSERT INTO order_details VALUES (10747, 31, 12.5, 8, 0);\nINSERT INTO order_details VALUES (10747, 41, 9.64999962, 35, 0);\nINSERT INTO order_details VALUES (10747, 63, 43.9000015, 9, 0);\nINSERT INTO order_details VALUES (10747, 69, 36, 30, 0);\nINSERT INTO order_details VALUES (10748, 23, 9, 44, 0);\nINSERT INTO order_details VALUES (10748, 40, 18.3999996, 40, 0);\nINSERT INTO order_details VALUES (10748, 56, 38, 28, 0);\nINSERT INTO order_details VALUES (10749, 56, 38, 15, 0);\nINSERT INTO order_details VALUES (10749, 59, 55, 6, 0);\nINSERT INTO order_details VALUES (10749, 76, 18, 10, 0);\nINSERT INTO order_details VALUES (10750, 14, 23.25, 5, 0.150000006);\nINSERT INTO order_details VALUES (10750, 45, 9.5, 40, 0.150000006);\nINSERT INTO order_details VALUES (10750, 59, 55, 25, 0.150000006);\nINSERT INTO order_details VALUES (10751, 26, 31.2299995, 12, 0.100000001);\nINSERT INTO order_details VALUES (10751, 30, 25.8899994, 30, 0);\nINSERT INTO order_details VALUES (10751, 50, 16.25, 20, 0.100000001);\nINSERT INTO order_details VALUES (10751, 73, 15, 15, 0);\nINSERT INTO order_details VALUES (10752, 1, 18, 8, 0);\nINSERT INTO order_details VALUES (10752, 69, 36, 3, 0);\nINSERT INTO order_details VALUES (10753, 45, 9.5, 4, 0);\nINSERT INTO order_details VALUES (10753, 74, 10, 5, 0);\nINSERT INTO order_details VALUES (10754, 40, 18.3999996, 3, 0);\nINSERT INTO order_details VALUES (10755, 47, 9.5, 30, 0.25);\nINSERT INTO order_details VALUES (10755, 56, 38, 30, 0.25);\nINSERT INTO order_details VALUES (10755, 57, 19.5, 14, 0.25);\nINSERT INTO order_details VALUES (10755, 69, 36, 25, 0.25);\nINSERT INTO order_details VALUES (10756, 18, 62.5, 21, 0.200000003);\nINSERT INTO order_details VALUES (10756, 36, 19, 20, 0.200000003);\nINSERT INTO order_details VALUES (10756, 68, 12.5, 6, 0.200000003);\nINSERT INTO order_details VALUES (10756, 69, 36, 20, 0.200000003);\nINSERT INTO order_details VALUES (10757, 34, 14, 30, 0);\nINSERT INTO order_details VALUES (10757, 59, 55, 7, 0);\nINSERT INTO order_details VALUES (10757, 62, 49.2999992, 30, 0);\nINSERT INTO order_details VALUES (10757, 64, 33.25, 24, 0);\nINSERT INTO order_details VALUES (10758, 26, 31.2299995, 20, 0);\nINSERT INTO order_details VALUES (10758, 52, 7, 60, 0);\nINSERT INTO order_details VALUES (10758, 70, 15, 40, 0);\nINSERT INTO order_details VALUES (10759, 32, 32, 10, 0);\nINSERT INTO order_details VALUES (10760, 25, 14, 12, 0.25);\nINSERT INTO order_details VALUES (10760, 27, 43.9000015, 40, 0);\nINSERT INTO order_details VALUES (10760, 43, 46, 30, 0.25);\nINSERT INTO order_details VALUES (10761, 25, 14, 35, 0.25);\nINSERT INTO order_details VALUES (10761, 75, 7.75, 18, 0);\nINSERT INTO order_details VALUES (10762, 39, 18, 16, 0);\nINSERT INTO order_details VALUES (10762, 47, 9.5, 30, 0);\nINSERT INTO order_details VALUES (10762, 51, 53, 28, 0);\nINSERT INTO order_details VALUES (10762, 56, 38, 60, 0);\nINSERT INTO order_details VALUES (10763, 21, 10, 40, 0);\nINSERT INTO order_details VALUES (10763, 22, 21, 6, 0);\nINSERT INTO order_details VALUES (10763, 24, 4.5, 20, 0);\nINSERT INTO order_details VALUES (10764, 3, 10, 20, 0.100000001);\nINSERT INTO order_details VALUES (10764, 39, 18, 130, 0.100000001);\nINSERT INTO order_details VALUES (10765, 65, 21.0499992, 80, 0.100000001);\nINSERT INTO order_details VALUES (10766, 2, 19, 40, 0);\nINSERT INTO order_details VALUES (10766, 7, 30, 35, 0);\nINSERT INTO order_details VALUES (10766, 68, 12.5, 40, 0);\nINSERT INTO order_details VALUES (10767, 42, 14, 2, 0);\nINSERT INTO order_details VALUES (10768, 22, 21, 4, 0);\nINSERT INTO order_details VALUES (10768, 31, 12.5, 50, 0);\nINSERT INTO order_details VALUES (10768, 60, 34, 15, 0);\nINSERT INTO order_details VALUES (10768, 71, 21.5, 12, 0);\nINSERT INTO order_details VALUES (10769, 41, 9.64999962, 30, 0.0500000007);\nINSERT INTO order_details VALUES (10769, 52, 7, 15, 0.0500000007);\nINSERT INTO order_details VALUES (10769, 61, 28.5, 20, 0);\nINSERT INTO order_details VALUES (10769, 62, 49.2999992, 15, 0);\nINSERT INTO order_details VALUES (10770, 11, 21, 15, 0.25);\nINSERT INTO order_details VALUES (10771, 71, 21.5, 16, 0);\nINSERT INTO order_details VALUES (10772, 29, 123.790001, 18, 0);\nINSERT INTO order_details VALUES (10772, 59, 55, 25, 0);\nINSERT INTO order_details VALUES (10773, 17, 39, 33, 0);\nINSERT INTO order_details VALUES (10773, 31, 12.5, 70, 0.200000003);\nINSERT INTO order_details VALUES (10773, 75, 7.75, 7, 0.200000003);\nINSERT INTO order_details VALUES (10774, 31, 12.5, 2, 0.25);\nINSERT INTO order_details VALUES (10774, 66, 17, 50, 0);\nINSERT INTO order_details VALUES (10775, 10, 31, 6, 0);\nINSERT INTO order_details VALUES (10775, 67, 14, 3, 0);\nINSERT INTO order_details VALUES (10776, 31, 12.5, 16, 0.0500000007);\nINSERT INTO order_details VALUES (10776, 42, 14, 12, 0.0500000007);\nINSERT INTO order_details VALUES (10776, 45, 9.5, 27, 0.0500000007);\nINSERT INTO order_details VALUES (10776, 51, 53, 120, 0.0500000007);\nINSERT INTO order_details VALUES (10777, 42, 14, 20, 0.200000003);\nINSERT INTO order_details VALUES (10778, 41, 9.64999962, 10, 0);\nINSERT INTO order_details VALUES (10779, 16, 17.4500008, 20, 0);\nINSERT INTO order_details VALUES (10779, 62, 49.2999992, 20, 0);\nINSERT INTO order_details VALUES (10780, 70, 15, 35, 0);\nINSERT INTO order_details VALUES (10780, 77, 13, 15, 0);\nINSERT INTO order_details VALUES (10781, 54, 7.44999981, 3, 0.200000003);\nINSERT INTO order_details VALUES (10781, 56, 38, 20, 0.200000003);\nINSERT INTO order_details VALUES (10781, 74, 10, 35, 0);\nINSERT INTO order_details VALUES (10782, 31, 12.5, 1, 0);\nINSERT INTO order_details VALUES (10783, 31, 12.5, 10, 0);\nINSERT INTO order_details VALUES (10783, 38, 263.5, 5, 0);\nINSERT INTO order_details VALUES (10784, 36, 19, 30, 0);\nINSERT INTO order_details VALUES (10784, 39, 18, 2, 0.150000006);\nINSERT INTO order_details VALUES (10784, 72, 34.7999992, 30, 0.150000006);\nINSERT INTO order_details VALUES (10785, 10, 31, 10, 0);\nINSERT INTO order_details VALUES (10785, 75, 7.75, 10, 0);\nINSERT INTO order_details VALUES (10786, 8, 40, 30, 0.200000003);\nINSERT INTO order_details VALUES (10786, 30, 25.8899994, 15, 0.200000003);\nINSERT INTO order_details VALUES (10786, 75, 7.75, 42, 0.200000003);\nINSERT INTO order_details VALUES (10787, 2, 19, 15, 0.0500000007);\nINSERT INTO order_details VALUES (10787, 29, 123.790001, 20, 0.0500000007);\nINSERT INTO order_details VALUES (10788, 19, 9.19999981, 50, 0.0500000007);\nINSERT INTO order_details VALUES (10788, 75, 7.75, 40, 0.0500000007);\nINSERT INTO order_details VALUES (10789, 18, 62.5, 30, 0);\nINSERT INTO order_details VALUES (10789, 35, 18, 15, 0);\nINSERT INTO order_details VALUES (10789, 63, 43.9000015, 30, 0);\nINSERT INTO order_details VALUES (10789, 68, 12.5, 18, 0);\nINSERT INTO order_details VALUES (10790, 7, 30, 3, 0.150000006);\nINSERT INTO order_details VALUES (10790, 56, 38, 20, 0.150000006);\nINSERT INTO order_details VALUES (10791, 29, 123.790001, 14, 0.0500000007);\nINSERT INTO order_details VALUES (10791, 41, 9.64999962, 20, 0.0500000007);\nINSERT INTO order_details VALUES (10792, 2, 19, 10, 0);\nINSERT INTO order_details VALUES (10792, 54, 7.44999981, 3, 0);\nINSERT INTO order_details VALUES (10792, 68, 12.5, 15, 0);\nINSERT INTO order_details VALUES (10793, 41, 9.64999962, 14, 0);\nINSERT INTO order_details VALUES (10793, 52, 7, 8, 0);\nINSERT INTO order_details VALUES (10794, 14, 23.25, 15, 0.200000003);\nINSERT INTO order_details VALUES (10794, 54, 7.44999981, 6, 0.200000003);\nINSERT INTO order_details VALUES (10795, 16, 17.4500008, 65, 0);\nINSERT INTO order_details VALUES (10795, 17, 39, 35, 0.25);\nINSERT INTO order_details VALUES (10796, 26, 31.2299995, 21, 0.200000003);\nINSERT INTO order_details VALUES (10796, 44, 19.4500008, 10, 0);\nINSERT INTO order_details VALUES (10796, 64, 33.25, 35, 0.200000003);\nINSERT INTO order_details VALUES (10796, 69, 36, 24, 0.200000003);\nINSERT INTO order_details VALUES (10797, 11, 21, 20, 0);\nINSERT INTO order_details VALUES (10798, 62, 49.2999992, 2, 0);\nINSERT INTO order_details VALUES (10798, 72, 34.7999992, 10, 0);\nINSERT INTO order_details VALUES (10799, 13, 6, 20, 0.150000006);\nINSERT INTO order_details VALUES (10799, 24, 4.5, 20, 0.150000006);\nINSERT INTO order_details VALUES (10799, 59, 55, 25, 0);\nINSERT INTO order_details VALUES (10800, 11, 21, 50, 0.100000001);\nINSERT INTO order_details VALUES (10800, 51, 53, 10, 0.100000001);\nINSERT INTO order_details VALUES (10800, 54, 7.44999981, 7, 0.100000001);\nINSERT INTO order_details VALUES (10801, 17, 39, 40, 0.25);\nINSERT INTO order_details VALUES (10801, 29, 123.790001, 20, 0.25);\nINSERT INTO order_details VALUES (10802, 30, 25.8899994, 25, 0.25);\nINSERT INTO order_details VALUES (10802, 51, 53, 30, 0.25);\nINSERT INTO order_details VALUES (10802, 55, 24, 60, 0.25);\nINSERT INTO order_details VALUES (10802, 62, 49.2999992, 5, 0.25);\nINSERT INTO order_details VALUES (10803, 19, 9.19999981, 24, 0.0500000007);\nINSERT INTO order_details VALUES (10803, 25, 14, 15, 0.0500000007);\nINSERT INTO order_details VALUES (10803, 59, 55, 15, 0.0500000007);\nINSERT INTO order_details VALUES (10804, 10, 31, 36, 0);\nINSERT INTO order_details VALUES (10804, 28, 45.5999985, 24, 0);\nINSERT INTO order_details VALUES (10804, 49, 20, 4, 0.150000006);\nINSERT INTO order_details VALUES (10805, 34, 14, 10, 0);\nINSERT INTO order_details VALUES (10805, 38, 263.5, 10, 0);\nINSERT INTO order_details VALUES (10806, 2, 19, 20, 0.25);\nINSERT INTO order_details VALUES (10806, 65, 21.0499992, 2, 0);\nINSERT INTO order_details VALUES (10806, 74, 10, 15, 0.25);\nINSERT INTO order_details VALUES (10807, 40, 18.3999996, 1, 0);\nINSERT INTO order_details VALUES (10808, 56, 38, 20, 0.150000006);\nINSERT INTO order_details VALUES (10808, 76, 18, 50, 0.150000006);\nINSERT INTO order_details VALUES (10809, 52, 7, 20, 0);\nINSERT INTO order_details VALUES (10810, 13, 6, 7, 0);\nINSERT INTO order_details VALUES (10810, 25, 14, 5, 0);\nINSERT INTO order_details VALUES (10810, 70, 15, 5, 0);\nINSERT INTO order_details VALUES (10811, 19, 9.19999981, 15, 0);\nINSERT INTO order_details VALUES (10811, 23, 9, 18, 0);\nINSERT INTO order_details VALUES (10811, 40, 18.3999996, 30, 0);\nINSERT INTO order_details VALUES (10812, 31, 12.5, 16, 0.100000001);\nINSERT INTO order_details VALUES (10812, 72, 34.7999992, 40, 0.100000001);\nINSERT INTO order_details VALUES (10812, 77, 13, 20, 0);\nINSERT INTO order_details VALUES (10813, 2, 19, 12, 0.200000003);\nINSERT INTO order_details VALUES (10813, 46, 12, 35, 0);\nINSERT INTO order_details VALUES (10814, 41, 9.64999962, 20, 0);\nINSERT INTO order_details VALUES (10814, 43, 46, 20, 0.150000006);\nINSERT INTO order_details VALUES (10814, 48, 12.75, 8, 0.150000006);\nINSERT INTO order_details VALUES (10814, 61, 28.5, 30, 0.150000006);\nINSERT INTO order_details VALUES (10815, 33, 2.5, 16, 0);\nINSERT INTO order_details VALUES (10816, 38, 263.5, 30, 0.0500000007);\nINSERT INTO order_details VALUES (10816, 62, 49.2999992, 20, 0.0500000007);\nINSERT INTO order_details VALUES (10817, 26, 31.2299995, 40, 0.150000006);\nINSERT INTO order_details VALUES (10817, 38, 263.5, 30, 0);\nINSERT INTO order_details VALUES (10817, 40, 18.3999996, 60, 0.150000006);\nINSERT INTO order_details VALUES (10817, 62, 49.2999992, 25, 0.150000006);\nINSERT INTO order_details VALUES (10818, 32, 32, 20, 0);\nINSERT INTO order_details VALUES (10818, 41, 9.64999962, 20, 0);\nINSERT INTO order_details VALUES (10819, 43, 46, 7, 0);\nINSERT INTO order_details VALUES (10819, 75, 7.75, 20, 0);\nINSERT INTO order_details VALUES (10820, 56, 38, 30, 0);\nINSERT INTO order_details VALUES (10821, 35, 18, 20, 0);\nINSERT INTO order_details VALUES (10821, 51, 53, 6, 0);\nINSERT INTO order_details VALUES (10822, 62, 49.2999992, 3, 0);\nINSERT INTO order_details VALUES (10822, 70, 15, 6, 0);\nINSERT INTO order_details VALUES (10823, 11, 21, 20, 0.100000001);\nINSERT INTO order_details VALUES (10823, 57, 19.5, 15, 0);\nINSERT INTO order_details VALUES (10823, 59, 55, 40, 0.100000001);\nINSERT INTO order_details VALUES (10823, 77, 13, 15, 0.100000001);\nINSERT INTO order_details VALUES (10824, 41, 9.64999962, 12, 0);\nINSERT INTO order_details VALUES (10824, 70, 15, 9, 0);\nINSERT INTO order_details VALUES (10825, 26, 31.2299995, 12, 0);\nINSERT INTO order_details VALUES (10825, 53, 32.7999992, 20, 0);\nINSERT INTO order_details VALUES (10826, 31, 12.5, 35, 0);\nINSERT INTO order_details VALUES (10826, 57, 19.5, 15, 0);\nINSERT INTO order_details VALUES (10827, 10, 31, 15, 0);\nINSERT INTO order_details VALUES (10827, 39, 18, 21, 0);\nINSERT INTO order_details VALUES (10828, 20, 81, 5, 0);\nINSERT INTO order_details VALUES (10828, 38, 263.5, 2, 0);\nINSERT INTO order_details VALUES (10829, 2, 19, 10, 0);\nINSERT INTO order_details VALUES (10829, 8, 40, 20, 0);\nINSERT INTO order_details VALUES (10829, 13, 6, 10, 0);\nINSERT INTO order_details VALUES (10829, 60, 34, 21, 0);\nINSERT INTO order_details VALUES (10830, 6, 25, 6, 0);\nINSERT INTO order_details VALUES (10830, 39, 18, 28, 0);\nINSERT INTO order_details VALUES (10830, 60, 34, 30, 0);\nINSERT INTO order_details VALUES (10830, 68, 12.5, 24, 0);\nINSERT INTO order_details VALUES (10831, 19, 9.19999981, 2, 0);\nINSERT INTO order_details VALUES (10831, 35, 18, 8, 0);\nINSERT INTO order_details VALUES (10831, 38, 263.5, 8, 0);\nINSERT INTO order_details VALUES (10831, 43, 46, 9, 0);\nINSERT INTO order_details VALUES (10832, 13, 6, 3, 0.200000003);\nINSERT INTO order_details VALUES (10832, 25, 14, 10, 0.200000003);\nINSERT INTO order_details VALUES (10832, 44, 19.4500008, 16, 0.200000003);\nINSERT INTO order_details VALUES (10832, 64, 33.25, 3, 0);\nINSERT INTO order_details VALUES (10833, 7, 30, 20, 0.100000001);\nINSERT INTO order_details VALUES (10833, 31, 12.5, 9, 0.100000001);\nINSERT INTO order_details VALUES (10833, 53, 32.7999992, 9, 0.100000001);\nINSERT INTO order_details VALUES (10834, 29, 123.790001, 8, 0.0500000007);\nINSERT INTO order_details VALUES (10834, 30, 25.8899994, 20, 0.0500000007);\nINSERT INTO order_details VALUES (10835, 59, 55, 15, 0);\nINSERT INTO order_details VALUES (10835, 77, 13, 2, 0.200000003);\nINSERT INTO order_details VALUES (10836, 22, 21, 52, 0);\nINSERT INTO order_details VALUES (10836, 35, 18, 6, 0);\nINSERT INTO order_details VALUES (10836, 57, 19.5, 24, 0);\nINSERT INTO order_details VALUES (10836, 60, 34, 60, 0);\nINSERT INTO order_details VALUES (10836, 64, 33.25, 30, 0);\nINSERT INTO order_details VALUES (10837, 13, 6, 6, 0);\nINSERT INTO order_details VALUES (10837, 40, 18.3999996, 25, 0);\nINSERT INTO order_details VALUES (10837, 47, 9.5, 40, 0.25);\nINSERT INTO order_details VALUES (10837, 76, 18, 21, 0.25);\nINSERT INTO order_details VALUES (10838, 1, 18, 4, 0.25);\nINSERT INTO order_details VALUES (10838, 18, 62.5, 25, 0.25);\nINSERT INTO order_details VALUES (10838, 36, 19, 50, 0.25);\nINSERT INTO order_details VALUES (10839, 58, 13.25, 30, 0.100000001);\nINSERT INTO order_details VALUES (10839, 72, 34.7999992, 15, 0.100000001);\nINSERT INTO order_details VALUES (10840, 25, 14, 6, 0.200000003);\nINSERT INTO order_details VALUES (10840, 39, 18, 10, 0.200000003);\nINSERT INTO order_details VALUES (10841, 10, 31, 16, 0);\nINSERT INTO order_details VALUES (10841, 56, 38, 30, 0);\nINSERT INTO order_details VALUES (10841, 59, 55, 50, 0);\nINSERT INTO order_details VALUES (10841, 77, 13, 15, 0);\nINSERT INTO order_details VALUES (10842, 11, 21, 15, 0);\nINSERT INTO order_details VALUES (10842, 43, 46, 5, 0);\nINSERT INTO order_details VALUES (10842, 68, 12.5, 20, 0);\nINSERT INTO order_details VALUES (10842, 70, 15, 12, 0);\nINSERT INTO order_details VALUES (10843, 51, 53, 4, 0.25);\nINSERT INTO order_details VALUES (10844, 22, 21, 35, 0);\nINSERT INTO order_details VALUES (10845, 23, 9, 70, 0.100000001);\nINSERT INTO order_details VALUES (10845, 35, 18, 25, 0.100000001);\nINSERT INTO order_details VALUES (10845, 42, 14, 42, 0.100000001);\nINSERT INTO order_details VALUES (10845, 58, 13.25, 60, 0.100000001);\nINSERT INTO order_details VALUES (10845, 64, 33.25, 48, 0);\nINSERT INTO order_details VALUES (10846, 4, 22, 21, 0);\nINSERT INTO order_details VALUES (10846, 70, 15, 30, 0);\nINSERT INTO order_details VALUES (10846, 74, 10, 20, 0);\nINSERT INTO order_details VALUES (10847, 1, 18, 80, 0.200000003);\nINSERT INTO order_details VALUES (10847, 19, 9.19999981, 12, 0.200000003);\nINSERT INTO order_details VALUES (10847, 37, 26, 60, 0.200000003);\nINSERT INTO order_details VALUES (10847, 45, 9.5, 36, 0.200000003);\nINSERT INTO order_details VALUES (10847, 60, 34, 45, 0.200000003);\nINSERT INTO order_details VALUES (10847, 71, 21.5, 55, 0.200000003);\nINSERT INTO order_details VALUES (10848, 5, 21.3500004, 30, 0);\nINSERT INTO order_details VALUES (10848, 9, 97, 3, 0);\nINSERT INTO order_details VALUES (10849, 3, 10, 49, 0);\nINSERT INTO order_details VALUES (10849, 26, 31.2299995, 18, 0.150000006);\nINSERT INTO order_details VALUES (10850, 25, 14, 20, 0.150000006);\nINSERT INTO order_details VALUES (10850, 33, 2.5, 4, 0.150000006);\nINSERT INTO order_details VALUES (10850, 70, 15, 30, 0.150000006);\nINSERT INTO order_details VALUES (10851, 2, 19, 5, 0.0500000007);\nINSERT INTO order_details VALUES (10851, 25, 14, 10, 0.0500000007);\nINSERT INTO order_details VALUES (10851, 57, 19.5, 10, 0.0500000007);\nINSERT INTO order_details VALUES (10851, 59, 55, 42, 0.0500000007);\nINSERT INTO order_details VALUES (10852, 2, 19, 15, 0);\nINSERT INTO order_details VALUES (10852, 17, 39, 6, 0);\nINSERT INTO order_details VALUES (10852, 62, 49.2999992, 50, 0);\nINSERT INTO order_details VALUES (10853, 18, 62.5, 10, 0);\nINSERT INTO order_details VALUES (10854, 10, 31, 100, 0.150000006);\nINSERT INTO order_details VALUES (10854, 13, 6, 65, 0.150000006);\nINSERT INTO order_details VALUES (10855, 16, 17.4500008, 50, 0);\nINSERT INTO order_details VALUES (10855, 31, 12.5, 14, 0);\nINSERT INTO order_details VALUES (10855, 56, 38, 24, 0);\nINSERT INTO order_details VALUES (10855, 65, 21.0499992, 15, 0.150000006);\nINSERT INTO order_details VALUES (10856, 2, 19, 20, 0);\nINSERT INTO order_details VALUES (10856, 42, 14, 20, 0);\nINSERT INTO order_details VALUES (10857, 3, 10, 30, 0);\nINSERT INTO order_details VALUES (10857, 26, 31.2299995, 35, 0.25);\nINSERT INTO order_details VALUES (10857, 29, 123.790001, 10, 0.25);\nINSERT INTO order_details VALUES (10858, 7, 30, 5, 0);\nINSERT INTO order_details VALUES (10858, 27, 43.9000015, 10, 0);\nINSERT INTO order_details VALUES (10858, 70, 15, 4, 0);\nINSERT INTO order_details VALUES (10859, 24, 4.5, 40, 0.25);\nINSERT INTO order_details VALUES (10859, 54, 7.44999981, 35, 0.25);\nINSERT INTO order_details VALUES (10859, 64, 33.25, 30, 0.25);\nINSERT INTO order_details VALUES (10860, 51, 53, 3, 0);\nINSERT INTO order_details VALUES (10860, 76, 18, 20, 0);\nINSERT INTO order_details VALUES (10861, 17, 39, 42, 0);\nINSERT INTO order_details VALUES (10861, 18, 62.5, 20, 0);\nINSERT INTO order_details VALUES (10861, 21, 10, 40, 0);\nINSERT INTO order_details VALUES (10861, 33, 2.5, 35, 0);\nINSERT INTO order_details VALUES (10861, 62, 49.2999992, 3, 0);\nINSERT INTO order_details VALUES (10862, 11, 21, 25, 0);\nINSERT INTO order_details VALUES (10862, 52, 7, 8, 0);\nINSERT INTO order_details VALUES (10863, 1, 18, 20, 0.150000006);\nINSERT INTO order_details VALUES (10863, 58, 13.25, 12, 0.150000006);\nINSERT INTO order_details VALUES (10864, 35, 18, 4, 0);\nINSERT INTO order_details VALUES (10864, 67, 14, 15, 0);\nINSERT INTO order_details VALUES (10865, 38, 263.5, 60, 0.0500000007);\nINSERT INTO order_details VALUES (10865, 39, 18, 80, 0.0500000007);\nINSERT INTO order_details VALUES (10866, 2, 19, 21, 0.25);\nINSERT INTO order_details VALUES (10866, 24, 4.5, 6, 0.25);\nINSERT INTO order_details VALUES (10866, 30, 25.8899994, 40, 0.25);\nINSERT INTO order_details VALUES (10867, 53, 32.7999992, 3, 0);\nINSERT INTO order_details VALUES (10868, 26, 31.2299995, 20, 0);\nINSERT INTO order_details VALUES (10868, 35, 18, 30, 0);\nINSERT INTO order_details VALUES (10868, 49, 20, 42, 0.100000001);\nINSERT INTO order_details VALUES (10869, 1, 18, 40, 0);\nINSERT INTO order_details VALUES (10869, 11, 21, 10, 0);\nINSERT INTO order_details VALUES (10869, 23, 9, 50, 0);\nINSERT INTO order_details VALUES (10869, 68, 12.5, 20, 0);\nINSERT INTO order_details VALUES (10870, 35, 18, 3, 0);\nINSERT INTO order_details VALUES (10870, 51, 53, 2, 0);\nINSERT INTO order_details VALUES (10871, 6, 25, 50, 0.0500000007);\nINSERT INTO order_details VALUES (10871, 16, 17.4500008, 12, 0.0500000007);\nINSERT INTO order_details VALUES (10871, 17, 39, 16, 0.0500000007);\nINSERT INTO order_details VALUES (10872, 55, 24, 10, 0.0500000007);\nINSERT INTO order_details VALUES (10872, 62, 49.2999992, 20, 0.0500000007);\nINSERT INTO order_details VALUES (10872, 64, 33.25, 15, 0.0500000007);\nINSERT INTO order_details VALUES (10872, 65, 21.0499992, 21, 0.0500000007);\nINSERT INTO order_details VALUES (10873, 21, 10, 20, 0);\nINSERT INTO order_details VALUES (10873, 28, 45.5999985, 3, 0);\nINSERT INTO order_details VALUES (10874, 10, 31, 10, 0);\nINSERT INTO order_details VALUES (10875, 19, 9.19999981, 25, 0);\nINSERT INTO order_details VALUES (10875, 47, 9.5, 21, 0.100000001);\nINSERT INTO order_details VALUES (10875, 49, 20, 15, 0);\nINSERT INTO order_details VALUES (10876, 46, 12, 21, 0);\nINSERT INTO order_details VALUES (10876, 64, 33.25, 20, 0);\nINSERT INTO order_details VALUES (10877, 16, 17.4500008, 30, 0.25);\nINSERT INTO order_details VALUES (10877, 18, 62.5, 25, 0);\nINSERT INTO order_details VALUES (10878, 20, 81, 20, 0.0500000007);\nINSERT INTO order_details VALUES (10879, 40, 18.3999996, 12, 0);\nINSERT INTO order_details VALUES (10879, 65, 21.0499992, 10, 0);\nINSERT INTO order_details VALUES (10879, 76, 18, 10, 0);\nINSERT INTO order_details VALUES (10880, 23, 9, 30, 0.200000003);\nINSERT INTO order_details VALUES (10880, 61, 28.5, 30, 0.200000003);\nINSERT INTO order_details VALUES (10880, 70, 15, 50, 0.200000003);\nINSERT INTO order_details VALUES (10881, 73, 15, 10, 0);\nINSERT INTO order_details VALUES (10882, 42, 14, 25, 0);\nINSERT INTO order_details VALUES (10882, 49, 20, 20, 0.150000006);\nINSERT INTO order_details VALUES (10882, 54, 7.44999981, 32, 0.150000006);\nINSERT INTO order_details VALUES (10883, 24, 4.5, 8, 0);\nINSERT INTO order_details VALUES (10884, 21, 10, 40, 0.0500000007);\nINSERT INTO order_details VALUES (10884, 56, 38, 21, 0.0500000007);\nINSERT INTO order_details VALUES (10884, 65, 21.0499992, 12, 0.0500000007);\nINSERT INTO order_details VALUES (10885, 2, 19, 20, 0);\nINSERT INTO order_details VALUES (10885, 24, 4.5, 12, 0);\nINSERT INTO order_details VALUES (10885, 70, 15, 30, 0);\nINSERT INTO order_details VALUES (10885, 77, 13, 25, 0);\nINSERT INTO order_details VALUES (10886, 10, 31, 70, 0);\nINSERT INTO order_details VALUES (10886, 31, 12.5, 35, 0);\nINSERT INTO order_details VALUES (10886, 77, 13, 40, 0);\nINSERT INTO order_details VALUES (10887, 25, 14, 5, 0);\nINSERT INTO order_details VALUES (10888, 2, 19, 20, 0);\nINSERT INTO order_details VALUES (10888, 68, 12.5, 18, 0);\nINSERT INTO order_details VALUES (10889, 11, 21, 40, 0);\nINSERT INTO order_details VALUES (10889, 38, 263.5, 40, 0);\nINSERT INTO order_details VALUES (10890, 17, 39, 15, 0);\nINSERT INTO order_details VALUES (10890, 34, 14, 10, 0);\nINSERT INTO order_details VALUES (10890, 41, 9.64999962, 14, 0);\nINSERT INTO order_details VALUES (10891, 30, 25.8899994, 15, 0.0500000007);\nINSERT INTO order_details VALUES (10892, 59, 55, 40, 0.0500000007);\nINSERT INTO order_details VALUES (10893, 8, 40, 30, 0);\nINSERT INTO order_details VALUES (10893, 24, 4.5, 10, 0);\nINSERT INTO order_details VALUES (10893, 29, 123.790001, 24, 0);\nINSERT INTO order_details VALUES (10893, 30, 25.8899994, 35, 0);\nINSERT INTO order_details VALUES (10893, 36, 19, 20, 0);\nINSERT INTO order_details VALUES (10894, 13, 6, 28, 0.0500000007);\nINSERT INTO order_details VALUES (10894, 69, 36, 50, 0.0500000007);\nINSERT INTO order_details VALUES (10894, 75, 7.75, 120, 0.0500000007);\nINSERT INTO order_details VALUES (10895, 24, 4.5, 110, 0);\nINSERT INTO order_details VALUES (10895, 39, 18, 45, 0);\nINSERT INTO order_details VALUES (10895, 40, 18.3999996, 91, 0);\nINSERT INTO order_details VALUES (10895, 60, 34, 100, 0);\nINSERT INTO order_details VALUES (10896, 45, 9.5, 15, 0);\nINSERT INTO order_details VALUES (10896, 56, 38, 16, 0);\nINSERT INTO order_details VALUES (10897, 29, 123.790001, 80, 0);\nINSERT INTO order_details VALUES (10897, 30, 25.8899994, 36, 0);\nINSERT INTO order_details VALUES (10898, 13, 6, 5, 0);\nINSERT INTO order_details VALUES (10899, 39, 18, 8, 0.150000006);\nINSERT INTO order_details VALUES (10900, 70, 15, 3, 0.25);\nINSERT INTO order_details VALUES (10901, 41, 9.64999962, 30, 0);\nINSERT INTO order_details VALUES (10901, 71, 21.5, 30, 0);\nINSERT INTO order_details VALUES (10902, 55, 24, 30, 0.150000006);\nINSERT INTO order_details VALUES (10902, 62, 49.2999992, 6, 0.150000006);\nINSERT INTO order_details VALUES (10903, 13, 6, 40, 0);\nINSERT INTO order_details VALUES (10903, 65, 21.0499992, 21, 0);\nINSERT INTO order_details VALUES (10903, 68, 12.5, 20, 0);\nINSERT INTO order_details VALUES (10904, 58, 13.25, 15, 0);\nINSERT INTO order_details VALUES (10904, 62, 49.2999992, 35, 0);\nINSERT INTO order_details VALUES (10905, 1, 18, 20, 0.0500000007);\nINSERT INTO order_details VALUES (10906, 61, 28.5, 15, 0);\nINSERT INTO order_details VALUES (10907, 75, 7.75, 14, 0);\nINSERT INTO order_details VALUES (10908, 7, 30, 20, 0.0500000007);\nINSERT INTO order_details VALUES (10908, 52, 7, 14, 0.0500000007);\nINSERT INTO order_details VALUES (10909, 7, 30, 12, 0);\nINSERT INTO order_details VALUES (10909, 16, 17.4500008, 15, 0);\nINSERT INTO order_details VALUES (10909, 41, 9.64999962, 5, 0);\nINSERT INTO order_details VALUES (10910, 19, 9.19999981, 12, 0);\nINSERT INTO order_details VALUES (10910, 49, 20, 10, 0);\nINSERT INTO order_details VALUES (10910, 61, 28.5, 5, 0);\nINSERT INTO order_details VALUES (10911, 1, 18, 10, 0);\nINSERT INTO order_details VALUES (10911, 17, 39, 12, 0);\nINSERT INTO order_details VALUES (10911, 67, 14, 15, 0);\nINSERT INTO order_details VALUES (10912, 11, 21, 40, 0.25);\nINSERT INTO order_details VALUES (10912, 29, 123.790001, 60, 0.25);\nINSERT INTO order_details VALUES (10913, 4, 22, 30, 0.25);\nINSERT INTO order_details VALUES (10913, 33, 2.5, 40, 0.25);\nINSERT INTO order_details VALUES (10913, 58, 13.25, 15, 0);\nINSERT INTO order_details VALUES (10914, 71, 21.5, 25, 0);\nINSERT INTO order_details VALUES (10915, 17, 39, 10, 0);\nINSERT INTO order_details VALUES (10915, 33, 2.5, 30, 0);\nINSERT INTO order_details VALUES (10915, 54, 7.44999981, 10, 0);\nINSERT INTO order_details VALUES (10916, 16, 17.4500008, 6, 0);\nINSERT INTO order_details VALUES (10916, 32, 32, 6, 0);\nINSERT INTO order_details VALUES (10916, 57, 19.5, 20, 0);\nINSERT INTO order_details VALUES (10917, 30, 25.8899994, 1, 0);\nINSERT INTO order_details VALUES (10917, 60, 34, 10, 0);\nINSERT INTO order_details VALUES (10918, 1, 18, 60, 0.25);\nINSERT INTO order_details VALUES (10918, 60, 34, 25, 0.25);\nINSERT INTO order_details VALUES (10919, 16, 17.4500008, 24, 0);\nINSERT INTO order_details VALUES (10919, 25, 14, 24, 0);\nINSERT INTO order_details VALUES (10919, 40, 18.3999996, 20, 0);\nINSERT INTO order_details VALUES (10920, 50, 16.25, 24, 0);\nINSERT INTO order_details VALUES (10921, 35, 18, 10, 0);\nINSERT INTO order_details VALUES (10921, 63, 43.9000015, 40, 0);\nINSERT INTO order_details VALUES (10922, 17, 39, 15, 0);\nINSERT INTO order_details VALUES (10922, 24, 4.5, 35, 0);\nINSERT INTO order_details VALUES (10923, 42, 14, 10, 0.200000003);\nINSERT INTO order_details VALUES (10923, 43, 46, 10, 0.200000003);\nINSERT INTO order_details VALUES (10923, 67, 14, 24, 0.200000003);\nINSERT INTO order_details VALUES (10924, 10, 31, 20, 0.100000001);\nINSERT INTO order_details VALUES (10924, 28, 45.5999985, 30, 0.100000001);\nINSERT INTO order_details VALUES (10924, 75, 7.75, 6, 0);\nINSERT INTO order_details VALUES (10925, 36, 19, 25, 0.150000006);\nINSERT INTO order_details VALUES (10925, 52, 7, 12, 0.150000006);\nINSERT INTO order_details VALUES (10926, 11, 21, 2, 0);\nINSERT INTO order_details VALUES (10926, 13, 6, 10, 0);\nINSERT INTO order_details VALUES (10926, 19, 9.19999981, 7, 0);\nINSERT INTO order_details VALUES (10926, 72, 34.7999992, 10, 0);\nINSERT INTO order_details VALUES (10927, 20, 81, 5, 0);\nINSERT INTO order_details VALUES (10927, 52, 7, 5, 0);\nINSERT INTO order_details VALUES (10927, 76, 18, 20, 0);\nINSERT INTO order_details VALUES (10928, 47, 9.5, 5, 0);\nINSERT INTO order_details VALUES (10928, 76, 18, 5, 0);\nINSERT INTO order_details VALUES (10929, 21, 10, 60, 0);\nINSERT INTO order_details VALUES (10929, 75, 7.75, 49, 0);\nINSERT INTO order_details VALUES (10929, 77, 13, 15, 0);\nINSERT INTO order_details VALUES (10930, 21, 10, 36, 0);\nINSERT INTO order_details VALUES (10930, 27, 43.9000015, 25, 0);\nINSERT INTO order_details VALUES (10930, 55, 24, 25, 0.200000003);\nINSERT INTO order_details VALUES (10930, 58, 13.25, 30, 0.200000003);\nINSERT INTO order_details VALUES (10931, 13, 6, 42, 0.150000006);\nINSERT INTO order_details VALUES (10931, 57, 19.5, 30, 0);\nINSERT INTO order_details VALUES (10932, 16, 17.4500008, 30, 0.100000001);\nINSERT INTO order_details VALUES (10932, 62, 49.2999992, 14, 0.100000001);\nINSERT INTO order_details VALUES (10932, 72, 34.7999992, 16, 0);\nINSERT INTO order_details VALUES (10932, 75, 7.75, 20, 0.100000001);\nINSERT INTO order_details VALUES (10933, 53, 32.7999992, 2, 0);\nINSERT INTO order_details VALUES (10933, 61, 28.5, 30, 0);\nINSERT INTO order_details VALUES (10934, 6, 25, 20, 0);\nINSERT INTO order_details VALUES (10935, 1, 18, 21, 0);\nINSERT INTO order_details VALUES (10935, 18, 62.5, 4, 0.25);\nINSERT INTO order_details VALUES (10935, 23, 9, 8, 0.25);\nINSERT INTO order_details VALUES (10936, 36, 19, 30, 0.200000003);\nINSERT INTO order_details VALUES (10937, 28, 45.5999985, 8, 0);\nINSERT INTO order_details VALUES (10937, 34, 14, 20, 0);\nINSERT INTO order_details VALUES (10938, 13, 6, 20, 0.25);\nINSERT INTO order_details VALUES (10938, 43, 46, 24, 0.25);\nINSERT INTO order_details VALUES (10938, 60, 34, 49, 0.25);\nINSERT INTO order_details VALUES (10938, 71, 21.5, 35, 0.25);\nINSERT INTO order_details VALUES (10939, 2, 19, 10, 0.150000006);\nINSERT INTO order_details VALUES (10939, 67, 14, 40, 0.150000006);\nINSERT INTO order_details VALUES (10940, 7, 30, 8, 0);\nINSERT INTO order_details VALUES (10940, 13, 6, 20, 0);\nINSERT INTO order_details VALUES (10941, 31, 12.5, 44, 0.25);\nINSERT INTO order_details VALUES (10941, 62, 49.2999992, 30, 0.25);\nINSERT INTO order_details VALUES (10941, 68, 12.5, 80, 0.25);\nINSERT INTO order_details VALUES (10941, 72, 34.7999992, 50, 0);\nINSERT INTO order_details VALUES (10942, 49, 20, 28, 0);\nINSERT INTO order_details VALUES (10943, 13, 6, 15, 0);\nINSERT INTO order_details VALUES (10943, 22, 21, 21, 0);\nINSERT INTO order_details VALUES (10943, 46, 12, 15, 0);\nINSERT INTO order_details VALUES (10944, 11, 21, 5, 0.25);\nINSERT INTO order_details VALUES (10944, 44, 19.4500008, 18, 0.25);\nINSERT INTO order_details VALUES (10944, 56, 38, 18, 0);\nINSERT INTO order_details VALUES (10945, 13, 6, 20, 0);\nINSERT INTO order_details VALUES (10945, 31, 12.5, 10, 0);\nINSERT INTO order_details VALUES (10946, 10, 31, 25, 0);\nINSERT INTO order_details VALUES (10946, 24, 4.5, 25, 0);\nINSERT INTO order_details VALUES (10946, 77, 13, 40, 0);\nINSERT INTO order_details VALUES (10947, 59, 55, 4, 0);\nINSERT INTO order_details VALUES (10948, 50, 16.25, 9, 0);\nINSERT INTO order_details VALUES (10948, 51, 53, 40, 0);\nINSERT INTO order_details VALUES (10948, 55, 24, 4, 0);\nINSERT INTO order_details VALUES (10949, 6, 25, 12, 0);\nINSERT INTO order_details VALUES (10949, 10, 31, 30, 0);\nINSERT INTO order_details VALUES (10949, 17, 39, 6, 0);\nINSERT INTO order_details VALUES (10949, 62, 49.2999992, 60, 0);\nINSERT INTO order_details VALUES (10950, 4, 22, 5, 0);\nINSERT INTO order_details VALUES (10951, 33, 2.5, 15, 0.0500000007);\nINSERT INTO order_details VALUES (10951, 41, 9.64999962, 6, 0.0500000007);\nINSERT INTO order_details VALUES (10951, 75, 7.75, 50, 0.0500000007);\nINSERT INTO order_details VALUES (10952, 6, 25, 16, 0.0500000007);\nINSERT INTO order_details VALUES (10952, 28, 45.5999985, 2, 0);\nINSERT INTO order_details VALUES (10953, 20, 81, 50, 0.0500000007);\nINSERT INTO order_details VALUES (10953, 31, 12.5, 50, 0.0500000007);\nINSERT INTO order_details VALUES (10954, 16, 17.4500008, 28, 0.150000006);\nINSERT INTO order_details VALUES (10954, 31, 12.5, 25, 0.150000006);\nINSERT INTO order_details VALUES (10954, 45, 9.5, 30, 0);\nINSERT INTO order_details VALUES (10954, 60, 34, 24, 0.150000006);\nINSERT INTO order_details VALUES (10955, 75, 7.75, 12, 0.200000003);\nINSERT INTO order_details VALUES (10956, 21, 10, 12, 0);\nINSERT INTO order_details VALUES (10956, 47, 9.5, 14, 0);\nINSERT INTO order_details VALUES (10956, 51, 53, 8, 0);\nINSERT INTO order_details VALUES (10957, 30, 25.8899994, 30, 0);\nINSERT INTO order_details VALUES (10957, 35, 18, 40, 0);\nINSERT INTO order_details VALUES (10957, 64, 33.25, 8, 0);\nINSERT INTO order_details VALUES (10958, 5, 21.3500004, 20, 0);\nINSERT INTO order_details VALUES (10958, 7, 30, 6, 0);\nINSERT INTO order_details VALUES (10958, 72, 34.7999992, 5, 0);\nINSERT INTO order_details VALUES (10959, 75, 7.75, 20, 0.150000006);\nINSERT INTO order_details VALUES (10960, 24, 4.5, 10, 0.25);\nINSERT INTO order_details VALUES (10960, 41, 9.64999962, 24, 0);\nINSERT INTO order_details VALUES (10961, 52, 7, 6, 0.0500000007);\nINSERT INTO order_details VALUES (10961, 76, 18, 60, 0);\nINSERT INTO order_details VALUES (10962, 7, 30, 45, 0);\nINSERT INTO order_details VALUES (10962, 13, 6, 77, 0);\nINSERT INTO order_details VALUES (10962, 53, 32.7999992, 20, 0);\nINSERT INTO order_details VALUES (10962, 69, 36, 9, 0);\nINSERT INTO order_details VALUES (10962, 76, 18, 44, 0);\nINSERT INTO order_details VALUES (10963, 60, 34, 2, 0.150000006);\nINSERT INTO order_details VALUES (10964, 18, 62.5, 6, 0);\nINSERT INTO order_details VALUES (10964, 38, 263.5, 5, 0);\nINSERT INTO order_details VALUES (10964, 69, 36, 10, 0);\nINSERT INTO order_details VALUES (10965, 51, 53, 16, 0);\nINSERT INTO order_details VALUES (10966, 37, 26, 8, 0);\nINSERT INTO order_details VALUES (10966, 56, 38, 12, 0.150000006);\nINSERT INTO order_details VALUES (10966, 62, 49.2999992, 12, 0.150000006);\nINSERT INTO order_details VALUES (10967, 19, 9.19999981, 12, 0);\nINSERT INTO order_details VALUES (10967, 49, 20, 40, 0);\nINSERT INTO order_details VALUES (10968, 12, 38, 30, 0);\nINSERT INTO order_details VALUES (10968, 24, 4.5, 30, 0);\nINSERT INTO order_details VALUES (10968, 64, 33.25, 4, 0);\nINSERT INTO order_details VALUES (10969, 46, 12, 9, 0);\nINSERT INTO order_details VALUES (10970, 52, 7, 40, 0.200000003);\nINSERT INTO order_details VALUES (10971, 29, 123.790001, 14, 0);\nINSERT INTO order_details VALUES (10972, 17, 39, 6, 0);\nINSERT INTO order_details VALUES (10972, 33, 2.5, 7, 0);\nINSERT INTO order_details VALUES (10973, 26, 31.2299995, 5, 0);\nINSERT INTO order_details VALUES (10973, 41, 9.64999962, 6, 0);\nINSERT INTO order_details VALUES (10973, 75, 7.75, 10, 0);\nINSERT INTO order_details VALUES (10974, 63, 43.9000015, 10, 0);\nINSERT INTO order_details VALUES (10975, 8, 40, 16, 0);\nINSERT INTO order_details VALUES (10975, 75, 7.75, 10, 0);\nINSERT INTO order_details VALUES (10976, 28, 45.5999985, 20, 0);\nINSERT INTO order_details VALUES (10977, 39, 18, 30, 0);\nINSERT INTO order_details VALUES (10977, 47, 9.5, 30, 0);\nINSERT INTO order_details VALUES (10977, 51, 53, 10, 0);\nINSERT INTO order_details VALUES (10977, 63, 43.9000015, 20, 0);\nINSERT INTO order_details VALUES (10978, 8, 40, 20, 0.150000006);\nINSERT INTO order_details VALUES (10978, 21, 10, 40, 0.150000006);\nINSERT INTO order_details VALUES (10978, 40, 18.3999996, 10, 0);\nINSERT INTO order_details VALUES (10978, 44, 19.4500008, 6, 0.150000006);\nINSERT INTO order_details VALUES (10979, 7, 30, 18, 0);\nINSERT INTO order_details VALUES (10979, 12, 38, 20, 0);\nINSERT INTO order_details VALUES (10979, 24, 4.5, 80, 0);\nINSERT INTO order_details VALUES (10979, 27, 43.9000015, 30, 0);\nINSERT INTO order_details VALUES (10979, 31, 12.5, 24, 0);\nINSERT INTO order_details VALUES (10979, 63, 43.9000015, 35, 0);\nINSERT INTO order_details VALUES (10980, 75, 7.75, 40, 0.200000003);\nINSERT INTO order_details VALUES (10981, 38, 263.5, 60, 0);\nINSERT INTO order_details VALUES (10982, 7, 30, 20, 0);\nINSERT INTO order_details VALUES (10982, 43, 46, 9, 0);\nINSERT INTO order_details VALUES (10983, 13, 6, 84, 0.150000006);\nINSERT INTO order_details VALUES (10983, 57, 19.5, 15, 0);\nINSERT INTO order_details VALUES (10984, 16, 17.4500008, 55, 0);\nINSERT INTO order_details VALUES (10984, 24, 4.5, 20, 0);\nINSERT INTO order_details VALUES (10984, 36, 19, 40, 0);\nINSERT INTO order_details VALUES (10985, 16, 17.4500008, 36, 0.100000001);\nINSERT INTO order_details VALUES (10985, 18, 62.5, 8, 0.100000001);\nINSERT INTO order_details VALUES (10985, 32, 32, 35, 0.100000001);\nINSERT INTO order_details VALUES (10986, 11, 21, 30, 0);\nINSERT INTO order_details VALUES (10986, 20, 81, 15, 0);\nINSERT INTO order_details VALUES (10986, 76, 18, 10, 0);\nINSERT INTO order_details VALUES (10986, 77, 13, 15, 0);\nINSERT INTO order_details VALUES (10987, 7, 30, 60, 0);\nINSERT INTO order_details VALUES (10987, 43, 46, 6, 0);\nINSERT INTO order_details VALUES (10987, 72, 34.7999992, 20, 0);\nINSERT INTO order_details VALUES (10988, 7, 30, 60, 0);\nINSERT INTO order_details VALUES (10988, 62, 49.2999992, 40, 0.100000001);\nINSERT INTO order_details VALUES (10989, 6, 25, 40, 0);\nINSERT INTO order_details VALUES (10989, 11, 21, 15, 0);\nINSERT INTO order_details VALUES (10989, 41, 9.64999962, 4, 0);\nINSERT INTO order_details VALUES (10990, 21, 10, 65, 0);\nINSERT INTO order_details VALUES (10990, 34, 14, 60, 0.150000006);\nINSERT INTO order_details VALUES (10990, 55, 24, 65, 0.150000006);\nINSERT INTO order_details VALUES (10990, 61, 28.5, 66, 0.150000006);\nINSERT INTO order_details VALUES (10991, 2, 19, 50, 0.200000003);\nINSERT INTO order_details VALUES (10991, 70, 15, 20, 0.200000003);\nINSERT INTO order_details VALUES (10991, 76, 18, 90, 0.200000003);\nINSERT INTO order_details VALUES (10992, 72, 34.7999992, 2, 0);\nINSERT INTO order_details VALUES (10993, 29, 123.790001, 50, 0.25);\nINSERT INTO order_details VALUES (10993, 41, 9.64999962, 35, 0.25);\nINSERT INTO order_details VALUES (10994, 59, 55, 18, 0.0500000007);\nINSERT INTO order_details VALUES (10995, 51, 53, 20, 0);\nINSERT INTO order_details VALUES (10995, 60, 34, 4, 0);\nINSERT INTO order_details VALUES (10996, 42, 14, 40, 0);\nINSERT INTO order_details VALUES (10997, 32, 32, 50, 0);\nINSERT INTO order_details VALUES (10997, 46, 12, 20, 0.25);\nINSERT INTO order_details VALUES (10997, 52, 7, 20, 0.25);\nINSERT INTO order_details VALUES (10998, 24, 4.5, 12, 0);\nINSERT INTO order_details VALUES (10998, 61, 28.5, 7, 0);\nINSERT INTO order_details VALUES (10998, 74, 10, 20, 0);\nINSERT INTO order_details VALUES (10998, 75, 7.75, 30, 0);\nINSERT INTO order_details VALUES (10999, 41, 9.64999962, 20, 0.0500000007);\nINSERT INTO order_details VALUES (10999, 51, 53, 15, 0.0500000007);\nINSERT INTO order_details VALUES (10999, 77, 13, 21, 0.0500000007);\nINSERT INTO order_details VALUES (11000, 4, 22, 25, 0.25);\nINSERT INTO order_details VALUES (11000, 24, 4.5, 30, 0.25);\nINSERT INTO order_details VALUES (11000, 77, 13, 30, 0);\nINSERT INTO order_details VALUES (11001, 7, 30, 60, 0);\nINSERT INTO order_details VALUES (11001, 22, 21, 25, 0);\nINSERT INTO order_details VALUES (11001, 46, 12, 25, 0);\nINSERT INTO order_details VALUES (11001, 55, 24, 6, 0);\nINSERT INTO order_details VALUES (11002, 13, 6, 56, 0);\nINSERT INTO order_details VALUES (11002, 35, 18, 15, 0.150000006);\nINSERT INTO order_details VALUES (11002, 42, 14, 24, 0.150000006);\nINSERT INTO order_details VALUES (11002, 55, 24, 40, 0);\nINSERT INTO order_details VALUES (11003, 1, 18, 4, 0);\nINSERT INTO order_details VALUES (11003, 40, 18.3999996, 10, 0);\nINSERT INTO order_details VALUES (11003, 52, 7, 10, 0);\nINSERT INTO order_details VALUES (11004, 26, 31.2299995, 6, 0);\nINSERT INTO order_details VALUES (11004, 76, 18, 6, 0);\nINSERT INTO order_details VALUES (11005, 1, 18, 2, 0);\nINSERT INTO order_details VALUES (11005, 59, 55, 10, 0);\nINSERT INTO order_details VALUES (11006, 1, 18, 8, 0);\nINSERT INTO order_details VALUES (11006, 29, 123.790001, 2, 0.25);\nINSERT INTO order_details VALUES (11007, 8, 40, 30, 0);\nINSERT INTO order_details VALUES (11007, 29, 123.790001, 10, 0);\nINSERT INTO order_details VALUES (11007, 42, 14, 14, 0);\nINSERT INTO order_details VALUES (11008, 28, 45.5999985, 70, 0.0500000007);\nINSERT INTO order_details VALUES (11008, 34, 14, 90, 0.0500000007);\nINSERT INTO order_details VALUES (11008, 71, 21.5, 21, 0);\nINSERT INTO order_details VALUES (11009, 24, 4.5, 12, 0);\nINSERT INTO order_details VALUES (11009, 36, 19, 18, 0.25);\nINSERT INTO order_details VALUES (11009, 60, 34, 9, 0);\nINSERT INTO order_details VALUES (11010, 7, 30, 20, 0);\nINSERT INTO order_details VALUES (11010, 24, 4.5, 10, 0);\nINSERT INTO order_details VALUES (11011, 58, 13.25, 40, 0.0500000007);\nINSERT INTO order_details VALUES (11011, 71, 21.5, 20, 0);\nINSERT INTO order_details VALUES (11012, 19, 9.19999981, 50, 0.0500000007);\nINSERT INTO order_details VALUES (11012, 60, 34, 36, 0.0500000007);\nINSERT INTO order_details VALUES (11012, 71, 21.5, 60, 0.0500000007);\nINSERT INTO order_details VALUES (11013, 23, 9, 10, 0);\nINSERT INTO order_details VALUES (11013, 42, 14, 4, 0);\nINSERT INTO order_details VALUES (11013, 45, 9.5, 20, 0);\nINSERT INTO order_details VALUES (11013, 68, 12.5, 2, 0);\nINSERT INTO order_details VALUES (11014, 41, 9.64999962, 28, 0.100000001);\nINSERT INTO order_details VALUES (11015, 30, 25.8899994, 15, 0);\nINSERT INTO order_details VALUES (11015, 77, 13, 18, 0);\nINSERT INTO order_details VALUES (11016, 31, 12.5, 15, 0);\nINSERT INTO order_details VALUES (11016, 36, 19, 16, 0);\nINSERT INTO order_details VALUES (11017, 3, 10, 25, 0);\nINSERT INTO order_details VALUES (11017, 59, 55, 110, 0);\nINSERT INTO order_details VALUES (11017, 70, 15, 30, 0);\nINSERT INTO order_details VALUES (11018, 12, 38, 20, 0);\nINSERT INTO order_details VALUES (11018, 18, 62.5, 10, 0);\nINSERT INTO order_details VALUES (11018, 56, 38, 5, 0);\nINSERT INTO order_details VALUES (11019, 46, 12, 3, 0);\nINSERT INTO order_details VALUES (11019, 49, 20, 2, 0);\nINSERT INTO order_details VALUES (11020, 10, 31, 24, 0.150000006);\nINSERT INTO order_details VALUES (11021, 2, 19, 11, 0.25);\nINSERT INTO order_details VALUES (11021, 20, 81, 15, 0);\nINSERT INTO order_details VALUES (11021, 26, 31.2299995, 63, 0);\nINSERT INTO order_details VALUES (11021, 51, 53, 44, 0.25);\nINSERT INTO order_details VALUES (11021, 72, 34.7999992, 35, 0);\nINSERT INTO order_details VALUES (11022, 19, 9.19999981, 35, 0);\nINSERT INTO order_details VALUES (11022, 69, 36, 30, 0);\nINSERT INTO order_details VALUES (11023, 7, 30, 4, 0);\nINSERT INTO order_details VALUES (11023, 43, 46, 30, 0);\nINSERT INTO order_details VALUES (11024, 26, 31.2299995, 12, 0);\nINSERT INTO order_details VALUES (11024, 33, 2.5, 30, 0);\nINSERT INTO order_details VALUES (11024, 65, 21.0499992, 21, 0);\nINSERT INTO order_details VALUES (11024, 71, 21.5, 50, 0);\nINSERT INTO order_details VALUES (11025, 1, 18, 10, 0.100000001);\nINSERT INTO order_details VALUES (11025, 13, 6, 20, 0.100000001);\nINSERT INTO order_details VALUES (11026, 18, 62.5, 8, 0);\nINSERT INTO order_details VALUES (11026, 51, 53, 10, 0);\nINSERT INTO order_details VALUES (11027, 24, 4.5, 30, 0.25);\nINSERT INTO order_details VALUES (11027, 62, 49.2999992, 21, 0.25);\nINSERT INTO order_details VALUES (11028, 55, 24, 35, 0);\nINSERT INTO order_details VALUES (11028, 59, 55, 24, 0);\nINSERT INTO order_details VALUES (11029, 56, 38, 20, 0);\nINSERT INTO order_details VALUES (11029, 63, 43.9000015, 12, 0);\nINSERT INTO order_details VALUES (11030, 2, 19, 100, 0.25);\nINSERT INTO order_details VALUES (11030, 5, 21.3500004, 70, 0);\nINSERT INTO order_details VALUES (11030, 29, 123.790001, 60, 0.25);\nINSERT INTO order_details VALUES (11030, 59, 55, 100, 0.25);\nINSERT INTO order_details VALUES (11031, 1, 18, 45, 0);\nINSERT INTO order_details VALUES (11031, 13, 6, 80, 0);\nINSERT INTO order_details VALUES (11031, 24, 4.5, 21, 0);\nINSERT INTO order_details VALUES (11031, 64, 33.25, 20, 0);\nINSERT INTO order_details VALUES (11031, 71, 21.5, 16, 0);\nINSERT INTO order_details VALUES (11032, 36, 19, 35, 0);\nINSERT INTO order_details VALUES (11032, 38, 263.5, 25, 0);\nINSERT INTO order_details VALUES (11032, 59, 55, 30, 0);\nINSERT INTO order_details VALUES (11033, 53, 32.7999992, 70, 0.100000001);\nINSERT INTO order_details VALUES (11033, 69, 36, 36, 0.100000001);\nINSERT INTO order_details VALUES (11034, 21, 10, 15, 0.100000001);\nINSERT INTO order_details VALUES (11034, 44, 19.4500008, 12, 0);\nINSERT INTO order_details VALUES (11034, 61, 28.5, 6, 0);\nINSERT INTO order_details VALUES (11035, 1, 18, 10, 0);\nINSERT INTO order_details VALUES (11035, 35, 18, 60, 0);\nINSERT INTO order_details VALUES (11035, 42, 14, 30, 0);\nINSERT INTO order_details VALUES (11035, 54, 7.44999981, 10, 0);\nINSERT INTO order_details VALUES (11036, 13, 6, 7, 0);\nINSERT INTO order_details VALUES (11036, 59, 55, 30, 0);\nINSERT INTO order_details VALUES (11037, 70, 15, 4, 0);\nINSERT INTO order_details VALUES (11038, 40, 18.3999996, 5, 0.200000003);\nINSERT INTO order_details VALUES (11038, 52, 7, 2, 0);\nINSERT INTO order_details VALUES (11038, 71, 21.5, 30, 0);\nINSERT INTO order_details VALUES (11039, 28, 45.5999985, 20, 0);\nINSERT INTO order_details VALUES (11039, 35, 18, 24, 0);\nINSERT INTO order_details VALUES (11039, 49, 20, 60, 0);\nINSERT INTO order_details VALUES (11039, 57, 19.5, 28, 0);\nINSERT INTO order_details VALUES (11040, 21, 10, 20, 0);\nINSERT INTO order_details VALUES (11041, 2, 19, 30, 0.200000003);\nINSERT INTO order_details VALUES (11041, 63, 43.9000015, 30, 0);\nINSERT INTO order_details VALUES (11042, 44, 19.4500008, 15, 0);\nINSERT INTO order_details VALUES (11042, 61, 28.5, 4, 0);\nINSERT INTO order_details VALUES (11043, 11, 21, 10, 0);\nINSERT INTO order_details VALUES (11044, 62, 49.2999992, 12, 0);\nINSERT INTO order_details VALUES (11045, 33, 2.5, 15, 0);\nINSERT INTO order_details VALUES (11045, 51, 53, 24, 0);\nINSERT INTO order_details VALUES (11046, 12, 38, 20, 0.0500000007);\nINSERT INTO order_details VALUES (11046, 32, 32, 15, 0.0500000007);\nINSERT INTO order_details VALUES (11046, 35, 18, 18, 0.0500000007);\nINSERT INTO order_details VALUES (11047, 1, 18, 25, 0.25);\nINSERT INTO order_details VALUES (11047, 5, 21.3500004, 30, 0.25);\nINSERT INTO order_details VALUES (11048, 68, 12.5, 42, 0);\nINSERT INTO order_details VALUES (11049, 2, 19, 10, 0.200000003);\nINSERT INTO order_details VALUES (11049, 12, 38, 4, 0.200000003);\nINSERT INTO order_details VALUES (11050, 76, 18, 50, 0.100000001);\nINSERT INTO order_details VALUES (11051, 24, 4.5, 10, 0.200000003);\nINSERT INTO order_details VALUES (11052, 43, 46, 30, 0.200000003);\nINSERT INTO order_details VALUES (11052, 61, 28.5, 10, 0.200000003);\nINSERT INTO order_details VALUES (11053, 18, 62.5, 35, 0.200000003);\nINSERT INTO order_details VALUES (11053, 32, 32, 20, 0);\nINSERT INTO order_details VALUES (11053, 64, 33.25, 25, 0.200000003);\nINSERT INTO order_details VALUES (11054, 33, 2.5, 10, 0);\nINSERT INTO order_details VALUES (11054, 67, 14, 20, 0);\nINSERT INTO order_details VALUES (11055, 24, 4.5, 15, 0);\nINSERT INTO order_details VALUES (11055, 25, 14, 15, 0);\nINSERT INTO order_details VALUES (11055, 51, 53, 20, 0);\nINSERT INTO order_details VALUES (11055, 57, 19.5, 20, 0);\nINSERT INTO order_details VALUES (11056, 7, 30, 40, 0);\nINSERT INTO order_details VALUES (11056, 55, 24, 35, 0);\nINSERT INTO order_details VALUES (11056, 60, 34, 50, 0);\nINSERT INTO order_details VALUES (11057, 70, 15, 3, 0);\nINSERT INTO order_details VALUES (11058, 21, 10, 3, 0);\nINSERT INTO order_details VALUES (11058, 60, 34, 21, 0);\nINSERT INTO order_details VALUES (11058, 61, 28.5, 4, 0);\nINSERT INTO order_details VALUES (11059, 13, 6, 30, 0);\nINSERT INTO order_details VALUES (11059, 17, 39, 12, 0);\nINSERT INTO order_details VALUES (11059, 60, 34, 35, 0);\nINSERT INTO order_details VALUES (11060, 60, 34, 4, 0);\nINSERT INTO order_details VALUES (11060, 77, 13, 10, 0);\nINSERT INTO order_details VALUES (11061, 60, 34, 15, 0);\nINSERT INTO order_details VALUES (11062, 53, 32.7999992, 10, 0.200000003);\nINSERT INTO order_details VALUES (11062, 70, 15, 12, 0.200000003);\nINSERT INTO order_details VALUES (11063, 34, 14, 30, 0);\nINSERT INTO order_details VALUES (11063, 40, 18.3999996, 40, 0.100000001);\nINSERT INTO order_details VALUES (11063, 41, 9.64999962, 30, 0.100000001);\nINSERT INTO order_details VALUES (11064, 17, 39, 77, 0.100000001);\nINSERT INTO order_details VALUES (11064, 41, 9.64999962, 12, 0);\nINSERT INTO order_details VALUES (11064, 53, 32.7999992, 25, 0.100000001);\nINSERT INTO order_details VALUES (11064, 55, 24, 4, 0.100000001);\nINSERT INTO order_details VALUES (11064, 68, 12.5, 55, 0);\nINSERT INTO order_details VALUES (11065, 30, 25.8899994, 4, 0.25);\nINSERT INTO order_details VALUES (11065, 54, 7.44999981, 20, 0.25);\nINSERT INTO order_details VALUES (11066, 16, 17.4500008, 3, 0);\nINSERT INTO order_details VALUES (11066, 19, 9.19999981, 42, 0);\nINSERT INTO order_details VALUES (11066, 34, 14, 35, 0);\nINSERT INTO order_details VALUES (11067, 41, 9.64999962, 9, 0);\nINSERT INTO order_details VALUES (11068, 28, 45.5999985, 8, 0.150000006);\nINSERT INTO order_details VALUES (11068, 43, 46, 36, 0.150000006);\nINSERT INTO order_details VALUES (11068, 77, 13, 28, 0.150000006);\nINSERT INTO order_details VALUES (11069, 39, 18, 20, 0);\nINSERT INTO order_details VALUES (11070, 1, 18, 40, 0.150000006);\nINSERT INTO order_details VALUES (11070, 2, 19, 20, 0.150000006);\nINSERT INTO order_details VALUES (11070, 16, 17.4500008, 30, 0.150000006);\nINSERT INTO order_details VALUES (11070, 31, 12.5, 20, 0);\nINSERT INTO order_details VALUES (11071, 7, 30, 15, 0.0500000007);\nINSERT INTO order_details VALUES (11071, 13, 6, 10, 0.0500000007);\nINSERT INTO order_details VALUES (11072, 2, 19, 8, 0);\nINSERT INTO order_details VALUES (11072, 41, 9.64999962, 40, 0);\nINSERT INTO order_details VALUES (11072, 50, 16.25, 22, 0);\nINSERT INTO order_details VALUES (11072, 64, 33.25, 130, 0);\nINSERT INTO order_details VALUES (11073, 11, 21, 10, 0);\nINSERT INTO order_details VALUES (11073, 24, 4.5, 20, 0);\nINSERT INTO order_details VALUES (11074, 16, 17.4500008, 14, 0.0500000007);\nINSERT INTO order_details VALUES (11075, 2, 19, 10, 0.150000006);\nINSERT INTO order_details VALUES (11075, 46, 12, 30, 0.150000006);\nINSERT INTO order_details VALUES (11075, 76, 18, 2, 0.150000006);\nINSERT INTO order_details VALUES (11076, 6, 25, 20, 0.25);\nINSERT INTO order_details VALUES (11076, 14, 23.25, 20, 0.25);\nINSERT INTO order_details VALUES (11076, 19, 9.19999981, 10, 0.25);\nINSERT INTO order_details VALUES (11077, 2, 19, 24, 0.200000003);\nINSERT INTO order_details VALUES (11077, 3, 10, 4, 0);\nINSERT INTO order_details VALUES (11077, 4, 22, 1, 0);\nINSERT INTO order_details VALUES (11077, 6, 25, 1, 0.0199999996);\nINSERT INTO order_details VALUES (11077, 7, 30, 1, 0.0500000007);\nINSERT INTO order_details VALUES (11077, 8, 40, 2, 0.100000001);\nINSERT INTO order_details VALUES (11077, 10, 31, 1, 0);\nINSERT INTO order_details VALUES (11077, 12, 38, 2, 0.0500000007);\nINSERT INTO order_details VALUES (11077, 13, 6, 4, 0);\nINSERT INTO order_details VALUES (11077, 14, 23.25, 1, 0.0299999993);\nINSERT INTO order_details VALUES (11077, 16, 17.4500008, 2, 0.0299999993);\nINSERT INTO order_details VALUES (11077, 20, 81, 1, 0.0399999991);\nINSERT INTO order_details VALUES (11077, 23, 9, 2, 0);\nINSERT INTO order_details VALUES (11077, 32, 32, 1, 0);\nINSERT INTO order_details VALUES (11077, 39, 18, 2, 0.0500000007);\nINSERT INTO order_details VALUES (11077, 41, 9.64999962, 3, 0);\nINSERT INTO order_details VALUES (11077, 46, 12, 3, 0.0199999996);\nINSERT INTO order_details VALUES (11077, 52, 7, 2, 0);\nINSERT INTO order_details VALUES (11077, 55, 24, 2, 0);\nINSERT INTO order_details VALUES (11077, 60, 34, 2, 0.0599999987);\nINSERT INTO order_details VALUES (11077, 64, 33.25, 2, 0.0299999993);\nINSERT INTO order_details VALUES (11077, 66, 17, 1, 0);\nINSERT INTO order_details VALUES (11077, 73, 15, 2, 0.00999999978);\nINSERT INTO order_details VALUES (11077, 75, 7.75, 4, 0);\nINSERT INTO order_details VALUES (11077, 77, 13, 2, 0);\n\n\n--\n-- Data for Name: orders; Type: TABLE DATA; Schema: public; Owner: -\n--\n\nINSERT INTO orders VALUES (10248, 'VINET', 5, '1996-07-04', '1996-08-01', '1996-07-16', 3, 32.3800011, 'Vins et alcools Chevalier', '59 rue de l''Abbaye', 'Reims', NULL, '51100', 'France');\nINSERT INTO orders VALUES (10249, 'TOMSP', 6, '1996-07-05', '1996-08-16', '1996-07-10', 1, 11.6099997, 'Toms Spezialitäten', 'Luisenstr. 48', 'Münster', NULL, '44087', 'Germany');\nINSERT INTO orders VALUES (10250, 'HANAR', 4, '1996-07-08', '1996-08-05', '1996-07-12', 2, 65.8300018, 'Hanari Carnes', 'Rua do Paço, 67', 'Rio de Janeiro', 'RJ', '05454-876', 'Brazil');\nINSERT INTO orders VALUES (10251, 'VICTE', 3, '1996-07-08', '1996-08-05', '1996-07-15', 1, 41.3400002, 'Victuailles en stock', '2, rue du Commerce', 'Lyon', NULL, '69004', 'France');\nINSERT INTO orders VALUES (10252, 'SUPRD', 4, '1996-07-09', '1996-08-06', '1996-07-11', 2, 51.2999992, 'Suprêmes délices', 'Boulevard Tirou, 255', 'Charleroi', NULL, 'B-6000', 'Belgium');\nINSERT INTO orders VALUES (10253, 'HANAR', 3, '1996-07-10', '1996-07-24', '1996-07-16', 2, 58.1699982, 'Hanari Carnes', 'Rua do Paço, 67', 'Rio de Janeiro', 'RJ', '05454-876', 'Brazil');\nINSERT INTO orders VALUES (10254, 'CHOPS', 5, '1996-07-11', '1996-08-08', '1996-07-23', 2, 22.9799995, 'Chop-suey Chinese', 'Hauptstr. 31', 'Bern', NULL, '3012', 'Switzerland');\nINSERT INTO orders VALUES (10255, 'RICSU', 9, '1996-07-12', '1996-08-09', '1996-07-15', 3, 148.330002, 'Richter Supermarkt', 'Starenweg 5', 'Genève', NULL, '1204', 'Switzerland');\nINSERT INTO orders VALUES (10256, 'WELLI', 3, '1996-07-15', '1996-08-12', '1996-07-17', 2, 13.9700003, 'Wellington Importadora', 'Rua do Mercado, 12', 'Resende', 'SP', '08737-363', 'Brazil');\nINSERT INTO orders VALUES (10257, 'HILAA', 4, '1996-07-16', '1996-08-13', '1996-07-22', 3, 81.9100037, 'HILARION-Abastos', 'Carrera 22 con Ave. Carlos Soublette #8-35', 'San Cristóbal', 'Táchira', '5022', 'Venezuela');\nINSERT INTO orders VALUES (10258, 'ERNSH', 1, '1996-07-17', '1996-08-14', '1996-07-23', 1, 140.509995, 'Ernst Handel', 'Kirchgasse 6', 'Graz', NULL, '8010', 'Austria');\nINSERT INTO orders VALUES (10259, 'CENTC', 4, '1996-07-18', '1996-08-15', '1996-07-25', 3, 3.25, 'Centro comercial Moctezuma', 'Sierras de Granada 9993', 'México D.F.', NULL, '05022', 'Mexico');\nINSERT INTO orders VALUES (10260, 'OTTIK', 4, '1996-07-19', '1996-08-16', '1996-07-29', 1, 55.0900002, 'Ottilies Käseladen', 'Mehrheimerstr. 369', 'Köln', NULL, '50739', 'Germany');\nINSERT INTO orders VALUES (10261, 'QUEDE', 4, '1996-07-19', '1996-08-16', '1996-07-30', 2, 3.04999995, 'Que Delícia', 'Rua da Panificadora, 12', 'Rio de Janeiro', 'RJ', '02389-673', 'Brazil');\nINSERT INTO orders VALUES (10262, 'RATTC', 8, '1996-07-22', '1996-08-19', '1996-07-25', 3, 48.2900009, 'Rattlesnake Canyon Grocery', '2817 Milton Dr.', 'Albuquerque', 'NM', '87110', 'USA');\nINSERT INTO orders VALUES (10263, 'ERNSH', 9, '1996-07-23', '1996-08-20', '1996-07-31', 3, 146.059998, 'Ernst Handel', 'Kirchgasse 6', 'Graz', NULL, '8010', 'Austria');\nINSERT INTO orders VALUES (10264, 'FOLKO', 6, '1996-07-24', '1996-08-21', '1996-08-23', 3, 3.67000008, 'Folk och fä HB', 'Åkergatan 24', 'Bräcke', NULL, 'S-844 67', 'Sweden');\nINSERT INTO orders VALUES (10265, 'BLONP', 2, '1996-07-25', '1996-08-22', '1996-08-12', 1, 55.2799988, 'Blondel père et fils', '24, place Kléber', 'Strasbourg', NULL, '67000', 'France');\nINSERT INTO orders VALUES (10266, 'WARTH', 3, '1996-07-26', '1996-09-06', '1996-07-31', 3, 25.7299995, 'Wartian Herkku', 'Torikatu 38', 'Oulu', NULL, '90110', 'Finland');\nINSERT INTO orders VALUES (10267, 'FRANK', 4, '1996-07-29', '1996-08-26', '1996-08-06', 1, 208.580002, 'Frankenversand', 'Berliner Platz 43', 'München', NULL, '80805', 'Germany');\nINSERT INTO orders VALUES (10268, 'GROSR', 8, '1996-07-30', '1996-08-27', '1996-08-02', 3, 66.2900009, 'GROSELLA-Restaurante', '5ª Ave. Los Palos Grandes', 'Caracas', 'DF', '1081', 'Venezuela');\nINSERT INTO orders VALUES (10269, 'WHITC', 5, '1996-07-31', '1996-08-14', '1996-08-09', 1, 4.55999994, 'White Clover Markets', '1029 - 12th Ave. S.', 'Seattle', 'WA', '98124', 'USA');\nINSERT INTO orders VALUES (10270, 'WARTH', 1, '1996-08-01', '1996-08-29', '1996-08-02', 1, 136.539993, 'Wartian Herkku', 'Torikatu 38', 'Oulu', NULL, '90110', 'Finland');\nINSERT INTO orders VALUES (10271, 'SPLIR', 6, '1996-08-01', '1996-08-29', '1996-08-30', 2, 4.53999996, 'Split Rail Beer & Ale', 'P.O. Box 555', 'Lander', 'WY', '82520', 'USA');\nINSERT INTO orders VALUES (10272, 'RATTC', 6, '1996-08-02', '1996-08-30', '1996-08-06', 2, 98.0299988, 'Rattlesnake Canyon Grocery', '2817 Milton Dr.', 'Albuquerque', 'NM', '87110', 'USA');\nINSERT INTO orders VALUES (10273, 'QUICK', 3, '1996-08-05', '1996-09-02', '1996-08-12', 3, 76.0699997, 'QUICK-Stop', 'Taucherstraße 10', 'Cunewalde', NULL, '01307', 'Germany');\nINSERT INTO orders VALUES (10274, 'VINET', 6, '1996-08-06', '1996-09-03', '1996-08-16', 1, 6.01000023, 'Vins et alcools Chevalier', '59 rue de l''Abbaye', 'Reims', NULL, '51100', 'France');\nINSERT INTO orders VALUES (10275, 'MAGAA', 1, '1996-08-07', '1996-09-04', '1996-08-09', 1, 26.9300003, 'Magazzini Alimentari Riuniti', 'Via Ludovico il Moro 22', 'Bergamo', NULL, '24100', 'Italy');\nINSERT INTO orders VALUES (10276, 'TORTU', 8, '1996-08-08', '1996-08-22', '1996-08-14', 3, 13.8400002, 'Tortuga Restaurante', 'Avda. Azteca 123', 'México D.F.', NULL, '05033', 'Mexico');\nINSERT INTO orders VALUES (10277, 'MORGK', 2, '1996-08-09', '1996-09-06', '1996-08-13', 3, 125.769997, 'Morgenstern Gesundkost', 'Heerstr. 22', 'Leipzig', NULL, '04179', 'Germany');\nINSERT INTO orders VALUES (10278, 'BERGS', 8, '1996-08-12', '1996-09-09', '1996-08-16', 2, 92.6900024, 'Berglunds snabbköp', 'Berguvsvägen  8', 'Luleå', NULL, 'S-958 22', 'Sweden');\nINSERT INTO orders VALUES (10279, 'LEHMS', 8, '1996-08-13', '1996-09-10', '1996-08-16', 2, 25.8299999, 'Lehmanns Marktstand', 'Magazinweg 7', 'Frankfurt a.M.', NULL, '60528', 'Germany');\nINSERT INTO orders VALUES (10280, 'BERGS', 2, '1996-08-14', '1996-09-11', '1996-09-12', 1, 8.97999954, 'Berglunds snabbköp', 'Berguvsvägen  8', 'Luleå', NULL, 'S-958 22', 'Sweden');\nINSERT INTO orders VALUES (10281, 'ROMEY', 4, '1996-08-14', '1996-08-28', '1996-08-21', 1, 2.94000006, 'Romero y tomillo', 'Gran Vía, 1', 'Madrid', NULL, '28001', 'Spain');\nINSERT INTO orders VALUES (10282, 'ROMEY', 4, '1996-08-15', '1996-09-12', '1996-08-21', 1, 12.6899996, 'Romero y tomillo', 'Gran Vía, 1', 'Madrid', NULL, '28001', 'Spain');\nINSERT INTO orders VALUES (10283, 'LILAS', 3, '1996-08-16', '1996-09-13', '1996-08-23', 3, 84.8099976, 'LILA-Supermercado', 'Carrera 52 con Ave. Bolívar #65-98 Llano Largo', 'Barquisimeto', 'Lara', '3508', 'Venezuela');\nINSERT INTO orders VALUES (10284, 'LEHMS', 4, '1996-08-19', '1996-09-16', '1996-08-27', 1, 76.5599976, 'Lehmanns Marktstand', 'Magazinweg 7', 'Frankfurt a.M.', NULL, '60528', 'Germany');\nINSERT INTO orders VALUES (10285, 'QUICK', 1, '1996-08-20', '1996-09-17', '1996-08-26', 2, 76.8300018, 'QUICK-Stop', 'Taucherstraße 10', 'Cunewalde', NULL, '01307', 'Germany');\nINSERT INTO orders VALUES (10286, 'QUICK', 8, '1996-08-21', '1996-09-18', '1996-08-30', 3, 229.240005, 'QUICK-Stop', 'Taucherstraße 10', 'Cunewalde', NULL, '01307', 'Germany');\nINSERT INTO orders VALUES (10287, 'RICAR', 8, '1996-08-22', '1996-09-19', '1996-08-28', 3, 12.7600002, 'Ricardo Adocicados', 'Av. Copacabana, 267', 'Rio de Janeiro', 'RJ', '02389-890', 'Brazil');\nINSERT INTO orders VALUES (10288, 'REGGC', 4, '1996-08-23', '1996-09-20', '1996-09-03', 1, 7.44999981, 'Reggiani Caseifici', 'Strada Provinciale 124', 'Reggio Emilia', NULL, '42100', 'Italy');\nINSERT INTO orders VALUES (10289, 'BSBEV', 7, '1996-08-26', '1996-09-23', '1996-08-28', 3, 22.7700005, 'B''s Beverages', 'Fauntleroy Circus', 'London', NULL, 'EC2 5NT', 'UK');\nINSERT INTO orders VALUES (10290, 'COMMI', 8, '1996-08-27', '1996-09-24', '1996-09-03', 1, 79.6999969, 'Comércio Mineiro', 'Av. dos Lusíadas, 23', 'Sao Paulo', 'SP', '05432-043', 'Brazil');\nINSERT INTO orders VALUES (10291, 'QUEDE', 6, '1996-08-27', '1996-09-24', '1996-09-04', 2, 6.4000001, 'Que Delícia', 'Rua da Panificadora, 12', 'Rio de Janeiro', 'RJ', '02389-673', 'Brazil');\nINSERT INTO orders VALUES (10292, 'TRADH', 1, '1996-08-28', '1996-09-25', '1996-09-02', 2, 1.35000002, 'Tradiçao Hipermercados', 'Av. Inês de Castro, 414', 'Sao Paulo', 'SP', '05634-030', 'Brazil');\nINSERT INTO orders VALUES (10293, 'TORTU', 1, '1996-08-29', '1996-09-26', '1996-09-11', 3, 21.1800003, 'Tortuga Restaurante', 'Avda. Azteca 123', 'México D.F.', NULL, '05033', 'Mexico');\nINSERT INTO orders VALUES (10294, 'RATTC', 4, '1996-08-30', '1996-09-27', '1996-09-05', 2, 147.259995, 'Rattlesnake Canyon Grocery', '2817 Milton Dr.', 'Albuquerque', 'NM', '87110', 'USA');\nINSERT INTO orders VALUES (10295, 'VINET', 2, '1996-09-02', '1996-09-30', '1996-09-10', 2, 1.14999998, 'Vins et alcools Chevalier', '59 rue de l''Abbaye', 'Reims', NULL, '51100', 'France');\nINSERT INTO orders VALUES (10296, 'LILAS', 6, '1996-09-03', '1996-10-01', '1996-09-11', 1, 0.119999997, 'LILA-Supermercado', 'Carrera 52 con Ave. Bolívar #65-98 Llano Largo', 'Barquisimeto', 'Lara', '3508', 'Venezuela');\nINSERT INTO orders VALUES (10297, 'BLONP', 5, '1996-09-04', '1996-10-16', '1996-09-10', 2, 5.73999977, 'Blondel père et fils', '24, place Kléber', 'Strasbourg', NULL, '67000', 'France');\nINSERT INTO orders VALUES (10298, 'HUNGO', 6, '1996-09-05', '1996-10-03', '1996-09-11', 2, 168.220001, 'Hungry Owl All-Night Grocers', '8 Johnstown Road', 'Cork', 'Co. Cork', NULL, 'Ireland');\nINSERT INTO orders VALUES (10299, 'RICAR', 4, '1996-09-06', '1996-10-04', '1996-09-13', 2, 29.7600002, 'Ricardo Adocicados', 'Av. Copacabana, 267', 'Rio de Janeiro', 'RJ', '02389-890', 'Brazil');\nINSERT INTO orders VALUES (10300, 'MAGAA', 2, '1996-09-09', '1996-10-07', '1996-09-18', 2, 17.6800003, 'Magazzini Alimentari Riuniti', 'Via Ludovico il Moro 22', 'Bergamo', NULL, '24100', 'Italy');\nINSERT INTO orders VALUES (10301, 'WANDK', 8, '1996-09-09', '1996-10-07', '1996-09-17', 2, 45.0800018, 'Die Wandernde Kuh', 'Adenauerallee 900', 'Stuttgart', NULL, '70563', 'Germany');\nINSERT INTO orders VALUES (10302, 'SUPRD', 4, '1996-09-10', '1996-10-08', '1996-10-09', 2, 6.26999998, 'Suprêmes délices', 'Boulevard Tirou, 255', 'Charleroi', NULL, 'B-6000', 'Belgium');\nINSERT INTO orders VALUES (10303, 'GODOS', 7, '1996-09-11', '1996-10-09', '1996-09-18', 2, 107.830002, 'Godos Cocina Típica', 'C/ Romero, 33', 'Sevilla', NULL, '41101', 'Spain');\nINSERT INTO orders VALUES (10304, 'TORTU', 1, '1996-09-12', '1996-10-10', '1996-09-17', 2, 63.7900009, 'Tortuga Restaurante', 'Avda. Azteca 123', 'México D.F.', NULL, '05033', 'Mexico');\nINSERT INTO orders VALUES (10305, 'OLDWO', 8, '1996-09-13', '1996-10-11', '1996-10-09', 3, 257.619995, 'Old World Delicatessen', '2743 Bering St.', 'Anchorage', 'AK', '99508', 'USA');\nINSERT INTO orders VALUES (10306, 'ROMEY', 1, '1996-09-16', '1996-10-14', '1996-09-23', 3, 7.55999994, 'Romero y tomillo', 'Gran Vía, 1', 'Madrid', NULL, '28001', 'Spain');\nINSERT INTO orders VALUES (10307, 'LONEP', 2, '1996-09-17', '1996-10-15', '1996-09-25', 2, 0.560000002, 'Lonesome Pine Restaurant', '89 Chiaroscuro Rd.', 'Portland', 'OR', '97219', 'USA');\nINSERT INTO orders VALUES (10308, 'ANATR', 7, '1996-09-18', '1996-10-16', '1996-09-24', 3, 1.61000001, 'Ana Trujillo Emparedados y helados', 'Avda. de la Constitución 2222', 'México D.F.', NULL, '05021', 'Mexico');\nINSERT INTO orders VALUES (10309, 'HUNGO', 3, '1996-09-19', '1996-10-17', '1996-10-23', 1, 47.2999992, 'Hungry Owl All-Night Grocers', '8 Johnstown Road', 'Cork', 'Co. Cork', NULL, 'Ireland');\nINSERT INTO orders VALUES (10310, 'THEBI', 8, '1996-09-20', '1996-10-18', '1996-09-27', 2, 17.5200005, 'The Big Cheese', '89 Jefferson Way Suite 2', 'Portland', 'OR', '97201', 'USA');\nINSERT INTO orders VALUES (10311, 'DUMON', 1, '1996-09-20', '1996-10-04', '1996-09-26', 3, 24.6900005, 'Du monde entier', '67, rue des Cinquante Otages', 'Nantes', NULL, '44000', 'France');\nINSERT INTO orders VALUES (10312, 'WANDK', 2, '1996-09-23', '1996-10-21', '1996-10-03', 2, 40.2599983, 'Die Wandernde Kuh', 'Adenauerallee 900', 'Stuttgart', NULL, '70563', 'Germany');\nINSERT INTO orders VALUES (10313, 'QUICK', 2, '1996-09-24', '1996-10-22', '1996-10-04', 2, 1.96000004, 'QUICK-Stop', 'Taucherstraße 10', 'Cunewalde', NULL, '01307', 'Germany');\nINSERT INTO orders VALUES (10314, 'RATTC', 1, '1996-09-25', '1996-10-23', '1996-10-04', 2, 74.1600037, 'Rattlesnake Canyon Grocery', '2817 Milton Dr.', 'Albuquerque', 'NM', '87110', 'USA');\nINSERT INTO orders VALUES (10315, 'ISLAT', 4, '1996-09-26', '1996-10-24', '1996-10-03', 2, 41.7599983, 'Island Trading', 'Garden House Crowther Way', 'Cowes', 'Isle of Wight', 'PO31 7PJ', 'UK');\nINSERT INTO orders VALUES (10316, 'RATTC', 1, '1996-09-27', '1996-10-25', '1996-10-08', 3, 150.149994, 'Rattlesnake Canyon Grocery', '2817 Milton Dr.', 'Albuquerque', 'NM', '87110', 'USA');\nINSERT INTO orders VALUES (10317, 'LONEP', 6, '1996-09-30', '1996-10-28', '1996-10-10', 1, 12.6899996, 'Lonesome Pine Restaurant', '89 Chiaroscuro Rd.', 'Portland', 'OR', '97219', 'USA');\nINSERT INTO orders VALUES (10318, 'ISLAT', 8, '1996-10-01', '1996-10-29', '1996-10-04', 2, 4.73000002, 'Island Trading', 'Garden House Crowther Way', 'Cowes', 'Isle of Wight', 'PO31 7PJ', 'UK');\nINSERT INTO orders VALUES (10319, 'TORTU', 7, '1996-10-02', '1996-10-30', '1996-10-11', 3, 64.5, 'Tortuga Restaurante', 'Avda. Azteca 123', 'México D.F.', NULL, '05033', 'Mexico');\nINSERT INTO orders VALUES (10320, 'WARTH', 5, '1996-10-03', '1996-10-17', '1996-10-18', 3, 34.5699997, 'Wartian Herkku', 'Torikatu 38', 'Oulu', NULL, '90110', 'Finland');\nINSERT INTO orders VALUES (10321, 'ISLAT', 3, '1996-10-03', '1996-10-31', '1996-10-11', 2, 3.43000007, 'Island Trading', 'Garden House Crowther Way', 'Cowes', 'Isle of Wight', 'PO31 7PJ', 'UK');\nINSERT INTO orders VALUES (10322, 'PERIC', 7, '1996-10-04', '1996-11-01', '1996-10-23', 3, 0.400000006, 'Pericles Comidas clásicas', 'Calle Dr. Jorge Cash 321', 'México D.F.', NULL, '05033', 'Mexico');\nINSERT INTO orders VALUES (10323, 'KOENE', 4, '1996-10-07', '1996-11-04', '1996-10-14', 1, 4.88000011, 'Königlich Essen', 'Maubelstr. 90', 'Brandenburg', NULL, '14776', 'Germany');\nINSERT INTO orders VALUES (10324, 'SAVEA', 9, '1996-10-08', '1996-11-05', '1996-10-10', 1, 214.270004, 'Save-a-lot Markets', '187 Suffolk Ln.', 'Boise', 'ID', '83720', 'USA');\nINSERT INTO orders VALUES (10325, 'KOENE', 1, '1996-10-09', '1996-10-23', '1996-10-14', 3, 64.8600006, 'Königlich Essen', 'Maubelstr. 90', 'Brandenburg', NULL, '14776', 'Germany');\nINSERT INTO orders VALUES (10326, 'BOLID', 4, '1996-10-10', '1996-11-07', '1996-10-14', 2, 77.9199982, 'Bólido Comidas preparadas', 'C/ Araquil, 67', 'Madrid', NULL, '28023', 'Spain');\nINSERT INTO orders VALUES (10327, 'FOLKO', 2, '1996-10-11', '1996-11-08', '1996-10-14', 1, 63.3600006, 'Folk och fä HB', 'Åkergatan 24', 'Bräcke', NULL, 'S-844 67', 'Sweden');\nINSERT INTO orders VALUES (10328, 'FURIB', 4, '1996-10-14', '1996-11-11', '1996-10-17', 3, 87.0299988, 'Furia Bacalhau e Frutos do Mar', 'Jardim das rosas n. 32', 'Lisboa', NULL, '1675', 'Portugal');\nINSERT INTO orders VALUES (10329, 'SPLIR', 4, '1996-10-15', '1996-11-26', '1996-10-23', 2, 191.669998, 'Split Rail Beer & Ale', 'P.O. Box 555', 'Lander', 'WY', '82520', 'USA');\nINSERT INTO orders VALUES (10330, 'LILAS', 3, '1996-10-16', '1996-11-13', '1996-10-28', 1, 12.75, 'LILA-Supermercado', 'Carrera 52 con Ave. Bolívar #65-98 Llano Largo', 'Barquisimeto', 'Lara', '3508', 'Venezuela');\nINSERT INTO orders VALUES (10331, 'BONAP', 9, '1996-10-16', '1996-11-27', '1996-10-21', 1, 10.1899996, 'Bon app''', '12, rue des Bouchers', 'Marseille', NULL, '13008', 'France');\nINSERT INTO orders VALUES (10332, 'MEREP', 3, '1996-10-17', '1996-11-28', '1996-10-21', 2, 52.8400002, 'Mère Paillarde', '43 rue St. Laurent', 'Montréal', 'Québec', 'H1J 1C3', 'Canada');\nINSERT INTO orders VALUES (10333, 'WARTH', 5, '1996-10-18', '1996-11-15', '1996-10-25', 3, 0.589999974, 'Wartian Herkku', 'Torikatu 38', 'Oulu', NULL, '90110', 'Finland');\nINSERT INTO orders VALUES (10334, 'VICTE', 8, '1996-10-21', '1996-11-18', '1996-10-28', 2, 8.56000042, 'Victuailles en stock', '2, rue du Commerce', 'Lyon', NULL, '69004', 'France');\nINSERT INTO orders VALUES (10335, 'HUNGO', 7, '1996-10-22', '1996-11-19', '1996-10-24', 2, 42.1100006, 'Hungry Owl All-Night Grocers', '8 Johnstown Road', 'Cork', 'Co. Cork', NULL, 'Ireland');\nINSERT INTO orders VALUES (10336, 'PRINI', 7, '1996-10-23', '1996-11-20', '1996-10-25', 2, 15.5100002, 'Princesa Isabel Vinhos', 'Estrada da saúde n. 58', 'Lisboa', NULL, '1756', 'Portugal');\nINSERT INTO orders VALUES (10337, 'FRANK', 4, '1996-10-24', '1996-11-21', '1996-10-29', 3, 108.260002, 'Frankenversand', 'Berliner Platz 43', 'München', NULL, '80805', 'Germany');\nINSERT INTO orders VALUES (10338, 'OLDWO', 4, '1996-10-25', '1996-11-22', '1996-10-29', 3, 84.2099991, 'Old World Delicatessen', '2743 Bering St.', 'Anchorage', 'AK', '99508', 'USA');\nINSERT INTO orders VALUES (10339, 'MEREP', 2, '1996-10-28', '1996-11-25', '1996-11-04', 2, 15.6599998, 'Mère Paillarde', '43 rue St. Laurent', 'Montréal', 'Québec', 'H1J 1C3', 'Canada');\nINSERT INTO orders VALUES (10340, 'BONAP', 1, '1996-10-29', '1996-11-26', '1996-11-08', 3, 166.309998, 'Bon app''', '12, rue des Bouchers', 'Marseille', NULL, '13008', 'France');\nINSERT INTO orders VALUES (10341, 'SIMOB', 7, '1996-10-29', '1996-11-26', '1996-11-05', 3, 26.7800007, 'Simons bistro', 'Vinbæltet 34', 'Kobenhavn', NULL, '1734', 'Denmark');\nINSERT INTO orders VALUES (10342, 'FRANK', 4, '1996-10-30', '1996-11-13', '1996-11-04', 2, 54.8300018, 'Frankenversand', 'Berliner Platz 43', 'München', NULL, '80805', 'Germany');\nINSERT INTO orders VALUES (10343, 'LEHMS', 4, '1996-10-31', '1996-11-28', '1996-11-06', 1, 110.370003, 'Lehmanns Marktstand', 'Magazinweg 7', 'Frankfurt a.M.', NULL, '60528', 'Germany');\nINSERT INTO orders VALUES (10344, 'WHITC', 4, '1996-11-01', '1996-11-29', '1996-11-05', 2, 23.2900009, 'White Clover Markets', '1029 - 12th Ave. S.', 'Seattle', 'WA', '98124', 'USA');\nINSERT INTO orders VALUES (10345, 'QUICK', 2, '1996-11-04', '1996-12-02', '1996-11-11', 2, 249.059998, 'QUICK-Stop', 'Taucherstraße 10', 'Cunewalde', NULL, '01307', 'Germany');\nINSERT INTO orders VALUES (10346, 'RATTC', 3, '1996-11-05', '1996-12-17', '1996-11-08', 3, 142.080002, 'Rattlesnake Canyon Grocery', '2817 Milton Dr.', 'Albuquerque', 'NM', '87110', 'USA');\nINSERT INTO orders VALUES (10347, 'FAMIA', 4, '1996-11-06', '1996-12-04', '1996-11-08', 3, 3.0999999, 'Familia Arquibaldo', 'Rua Orós, 92', 'Sao Paulo', 'SP', '05442-030', 'Brazil');\nINSERT INTO orders VALUES (10348, 'WANDK', 4, '1996-11-07', '1996-12-05', '1996-11-15', 2, 0.779999971, 'Die Wandernde Kuh', 'Adenauerallee 900', 'Stuttgart', NULL, '70563', 'Germany');\nINSERT INTO orders VALUES (10349, 'SPLIR', 7, '1996-11-08', '1996-12-06', '1996-11-15', 1, 8.63000011, 'Split Rail Beer & Ale', 'P.O. Box 555', 'Lander', 'WY', '82520', 'USA');\nINSERT INTO orders VALUES (10350, 'LAMAI', 6, '1996-11-11', '1996-12-09', '1996-12-03', 2, 64.1900024, 'La maison d''Asie', '1 rue Alsace-Lorraine', 'Toulouse', NULL, '31000', 'France');\nINSERT INTO orders VALUES (10351, 'ERNSH', 1, '1996-11-11', '1996-12-09', '1996-11-20', 1, 162.330002, 'Ernst Handel', 'Kirchgasse 6', 'Graz', NULL, '8010', 'Austria');\nINSERT INTO orders VALUES (10352, 'FURIB', 3, '1996-11-12', '1996-11-26', '1996-11-18', 3, 1.29999995, 'Furia Bacalhau e Frutos do Mar', 'Jardim das rosas n. 32', 'Lisboa', NULL, '1675', 'Portugal');\nINSERT INTO orders VALUES (10353, 'PICCO', 7, '1996-11-13', '1996-12-11', '1996-11-25', 3, 360.630005, 'Piccolo und mehr', 'Geislweg 14', 'Salzburg', NULL, '5020', 'Austria');\nINSERT INTO orders VALUES (10354, 'PERIC', 8, '1996-11-14', '1996-12-12', '1996-11-20', 3, 53.7999992, 'Pericles Comidas clásicas', 'Calle Dr. Jorge Cash 321', 'México D.F.', NULL, '05033', 'Mexico');\nINSERT INTO orders VALUES (10355, 'AROUT', 6, '1996-11-15', '1996-12-13', '1996-11-20', 1, 41.9500008, 'Around the Horn', 'Brook Farm Stratford St. Mary', 'Colchester', 'Essex', 'CO7 6JX', 'UK');\nINSERT INTO orders VALUES (10356, 'WANDK', 6, '1996-11-18', '1996-12-16', '1996-11-27', 2, 36.7099991, 'Die Wandernde Kuh', 'Adenauerallee 900', 'Stuttgart', NULL, '70563', 'Germany');\nINSERT INTO orders VALUES (10357, 'LILAS', 1, '1996-11-19', '1996-12-17', '1996-12-02', 3, 34.8800011, 'LILA-Supermercado', 'Carrera 52 con Ave. Bolívar #65-98 Llano Largo', 'Barquisimeto', 'Lara', '3508', 'Venezuela');\nINSERT INTO orders VALUES (10358, 'LAMAI', 5, '1996-11-20', '1996-12-18', '1996-11-27', 1, 19.6399994, 'La maison d''Asie', '1 rue Alsace-Lorraine', 'Toulouse', NULL, '31000', 'France');\nINSERT INTO orders VALUES (10359, 'SEVES', 5, '1996-11-21', '1996-12-19', '1996-11-26', 3, 288.429993, 'Seven Seas Imports', '90 Wadhurst Rd.', 'London', NULL, 'OX15 4NB', 'UK');\nINSERT INTO orders VALUES (10360, 'BLONP', 4, '1996-11-22', '1996-12-20', '1996-12-02', 3, 131.699997, 'Blondel père et fils', '24, place Kléber', 'Strasbourg', NULL, '67000', 'France');\nINSERT INTO orders VALUES (10361, 'QUICK', 1, '1996-11-22', '1996-12-20', '1996-12-03', 2, 183.169998, 'QUICK-Stop', 'Taucherstraße 10', 'Cunewalde', NULL, '01307', 'Germany');\nINSERT INTO orders VALUES (10362, 'BONAP', 3, '1996-11-25', '1996-12-23', '1996-11-28', 1, 96.0400009, 'Bon app''', '12, rue des Bouchers', 'Marseille', NULL, '13008', 'France');\nINSERT INTO orders VALUES (10363, 'DRACD', 4, '1996-11-26', '1996-12-24', '1996-12-04', 3, 30.5400009, 'Drachenblut Delikatessen', 'Walserweg 21', 'Aachen', NULL, '52066', 'Germany');\nINSERT INTO orders VALUES (10364, 'EASTC', 1, '1996-11-26', '1997-01-07', '1996-12-04', 1, 71.9700012, 'Eastern Connection', '35 King George', 'London', NULL, 'WX3 6FW', 'UK');\nINSERT INTO orders VALUES (10365, 'ANTON', 3, '1996-11-27', '1996-12-25', '1996-12-02', 2, 22, 'Antonio Moreno Taquería', 'Mataderos  2312', 'México D.F.', NULL, '05023', 'Mexico');\nINSERT INTO orders VALUES (10366, 'GALED', 8, '1996-11-28', '1997-01-09', '1996-12-30', 2, 10.1400003, 'Galería del gastronómo', 'Rambla de Cataluña, 23', 'Barcelona', NULL, '8022', 'Spain');\nINSERT INTO orders VALUES (10367, 'VAFFE', 7, '1996-11-28', '1996-12-26', '1996-12-02', 3, 13.5500002, 'Vaffeljernet', 'Smagsloget 45', 'Århus', NULL, '8200', 'Denmark');\nINSERT INTO orders VALUES (10368, 'ERNSH', 2, '1996-11-29', '1996-12-27', '1996-12-02', 2, 101.949997, 'Ernst Handel', 'Kirchgasse 6', 'Graz', NULL, '8010', 'Austria');\nINSERT INTO orders VALUES (10369, 'SPLIR', 8, '1996-12-02', '1996-12-30', '1996-12-09', 2, 195.679993, 'Split Rail Beer & Ale', 'P.O. Box 555', 'Lander', 'WY', '82520', 'USA');\nINSERT INTO orders VALUES (10370, 'CHOPS', 6, '1996-12-03', '1996-12-31', '1996-12-27', 2, 1.16999996, 'Chop-suey Chinese', 'Hauptstr. 31', 'Bern', NULL, '3012', 'Switzerland');\nINSERT INTO orders VALUES (10371, 'LAMAI', 1, '1996-12-03', '1996-12-31', '1996-12-24', 1, 0.449999988, 'La maison d''Asie', '1 rue Alsace-Lorraine', 'Toulouse', NULL, '31000', 'France');\nINSERT INTO orders VALUES (10372, 'QUEEN', 5, '1996-12-04', '1997-01-01', '1996-12-09', 2, 890.780029, 'Queen Cozinha', 'Alameda dos Canàrios, 891', 'Sao Paulo', 'SP', '05487-020', 'Brazil');\nINSERT INTO orders VALUES (10373, 'HUNGO', 4, '1996-12-05', '1997-01-02', '1996-12-11', 3, 124.120003, 'Hungry Owl All-Night Grocers', '8 Johnstown Road', 'Cork', 'Co. Cork', NULL, 'Ireland');\nINSERT INTO orders VALUES (10374, 'WOLZA', 1, '1996-12-05', '1997-01-02', '1996-12-09', 3, 3.94000006, 'Wolski Zajazd', 'ul. Filtrowa 68', 'Warszawa', NULL, '01-012', 'Poland');\nINSERT INTO orders VALUES (10375, 'HUNGC', 3, '1996-12-06', '1997-01-03', '1996-12-09', 2, 20.1200008, 'Hungry Coyote Import Store', 'City Center Plaza 516 Main St.', 'Elgin', 'OR', '97827', 'USA');\nINSERT INTO orders VALUES (10376, 'MEREP', 1, '1996-12-09', '1997-01-06', '1996-12-13', 2, 20.3899994, 'Mère Paillarde', '43 rue St. Laurent', 'Montréal', 'Québec', 'H1J 1C3', 'Canada');\nINSERT INTO orders VALUES (10377, 'SEVES', 1, '1996-12-09', '1997-01-06', '1996-12-13', 3, 22.2099991, 'Seven Seas Imports', '90 Wadhurst Rd.', 'London', NULL, 'OX15 4NB', 'UK');\nINSERT INTO orders VALUES (10378, 'FOLKO', 5, '1996-12-10', '1997-01-07', '1996-12-19', 3, 5.44000006, 'Folk och fä HB', 'Åkergatan 24', 'Bräcke', NULL, 'S-844 67', 'Sweden');\nINSERT INTO orders VALUES (10379, 'QUEDE', 2, '1996-12-11', '1997-01-08', '1996-12-13', 1, 45.0299988, 'Que Delícia', 'Rua da Panificadora, 12', 'Rio de Janeiro', 'RJ', '02389-673', 'Brazil');\nINSERT INTO orders VALUES (10380, 'HUNGO', 8, '1996-12-12', '1997-01-09', '1997-01-16', 3, 35.0299988, 'Hungry Owl All-Night Grocers', '8 Johnstown Road', 'Cork', 'Co. Cork', NULL, 'Ireland');\nINSERT INTO orders VALUES (10381, 'LILAS', 3, '1996-12-12', '1997-01-09', '1996-12-13', 3, 7.98999977, 'LILA-Supermercado', 'Carrera 52 con Ave. Bolívar #65-98 Llano Largo', 'Barquisimeto', 'Lara', '3508', 'Venezuela');\nINSERT INTO orders VALUES (10382, 'ERNSH', 4, '1996-12-13', '1997-01-10', '1996-12-16', 1, 94.7699966, 'Ernst Handel', 'Kirchgasse 6', 'Graz', NULL, '8010', 'Austria');\nINSERT INTO orders VALUES (10383, 'AROUT', 8, '1996-12-16', '1997-01-13', '1996-12-18', 3, 34.2400017, 'Around the Horn', 'Brook Farm Stratford St. Mary', 'Colchester', 'Essex', 'CO7 6JX', 'UK');\nINSERT INTO orders VALUES (10384, 'BERGS', 3, '1996-12-16', '1997-01-13', '1996-12-20', 3, 168.639999, 'Berglunds snabbköp', 'Berguvsvägen  8', 'Luleå', NULL, 'S-958 22', 'Sweden');\nINSERT INTO orders VALUES (10385, 'SPLIR', 1, '1996-12-17', '1997-01-14', '1996-12-23', 2, 30.9599991, 'Split Rail Beer & Ale', 'P.O. Box 555', 'Lander', 'WY', '82520', 'USA');\nINSERT INTO orders VALUES (10386, 'FAMIA', 9, '1996-12-18', '1997-01-01', '1996-12-25', 3, 13.9899998, 'Familia Arquibaldo', 'Rua Orós, 92', 'Sao Paulo', 'SP', '05442-030', 'Brazil');\nINSERT INTO orders VALUES (10387, 'SANTG', 1, '1996-12-18', '1997-01-15', '1996-12-20', 2, 93.6299973, 'Santé Gourmet', 'Erling Skakkes gate 78', 'Stavern', NULL, '4110', 'Norway');\nINSERT INTO orders VALUES (10388, 'SEVES', 2, '1996-12-19', '1997-01-16', '1996-12-20', 1, 34.8600006, 'Seven Seas Imports', '90 Wadhurst Rd.', 'London', NULL, 'OX15 4NB', 'UK');\nINSERT INTO orders VALUES (10389, 'BOTTM', 4, '1996-12-20', '1997-01-17', '1996-12-24', 2, 47.4199982, 'Bottom-Dollar Markets', '23 Tsawassen Blvd.', 'Tsawassen', 'BC', 'T2F 8M4', 'Canada');\nINSERT INTO orders VALUES (10390, 'ERNSH', 6, '1996-12-23', '1997-01-20', '1996-12-26', 1, 126.379997, 'Ernst Handel', 'Kirchgasse 6', 'Graz', NULL, '8010', 'Austria');\nINSERT INTO orders VALUES (10391, 'DRACD', 3, '1996-12-23', '1997-01-20', '1996-12-31', 3, 5.44999981, 'Drachenblut Delikatessen', 'Walserweg 21', 'Aachen', NULL, '52066', 'Germany');\nINSERT INTO orders VALUES (10392, 'PICCO', 2, '1996-12-24', '1997-01-21', '1997-01-01', 3, 122.459999, 'Piccolo und mehr', 'Geislweg 14', 'Salzburg', NULL, '5020', 'Austria');\nINSERT INTO orders VALUES (10393, 'SAVEA', 1, '1996-12-25', '1997-01-22', '1997-01-03', 3, 126.559998, 'Save-a-lot Markets', '187 Suffolk Ln.', 'Boise', 'ID', '83720', 'USA');\nINSERT INTO orders VALUES (10394, 'HUNGC', 1, '1996-12-25', '1997-01-22', '1997-01-03', 3, 30.3400002, 'Hungry Coyote Import Store', 'City Center Plaza 516 Main St.', 'Elgin', 'OR', '97827', 'USA');\nINSERT INTO orders VALUES (10395, 'HILAA', 6, '1996-12-26', '1997-01-23', '1997-01-03', 1, 184.410004, 'HILARION-Abastos', 'Carrera 22 con Ave. Carlos Soublette #8-35', 'San Cristóbal', 'Táchira', '5022', 'Venezuela');\nINSERT INTO orders VALUES (10396, 'FRANK', 1, '1996-12-27', '1997-01-10', '1997-01-06', 3, 135.350006, 'Frankenversand', 'Berliner Platz 43', 'München', NULL, '80805', 'Germany');\nINSERT INTO orders VALUES (10397, 'PRINI', 5, '1996-12-27', '1997-01-24', '1997-01-02', 1, 60.2599983, 'Princesa Isabel Vinhos', 'Estrada da saúde n. 58', 'Lisboa', NULL, '1756', 'Portugal');\nINSERT INTO orders VALUES (10398, 'SAVEA', 2, '1996-12-30', '1997-01-27', '1997-01-09', 3, 89.1600037, 'Save-a-lot Markets', '187 Suffolk Ln.', 'Boise', 'ID', '83720', 'USA');\nINSERT INTO orders VALUES (10399, 'VAFFE', 8, '1996-12-31', '1997-01-14', '1997-01-08', 3, 27.3600006, 'Vaffeljernet', 'Smagsloget 45', 'Århus', NULL, '8200', 'Denmark');\nINSERT INTO orders VALUES (10400, 'EASTC', 1, '1997-01-01', '1997-01-29', '1997-01-16', 3, 83.9300003, 'Eastern Connection', '35 King George', 'London', NULL, 'WX3 6FW', 'UK');\nINSERT INTO orders VALUES (10401, 'RATTC', 1, '1997-01-01', '1997-01-29', '1997-01-10', 1, 12.5100002, 'Rattlesnake Canyon Grocery', '2817 Milton Dr.', 'Albuquerque', 'NM', '87110', 'USA');\nINSERT INTO orders VALUES (10402, 'ERNSH', 8, '1997-01-02', '1997-02-13', '1997-01-10', 2, 67.8799973, 'Ernst Handel', 'Kirchgasse 6', 'Graz', NULL, '8010', 'Austria');\nINSERT INTO orders VALUES (10403, 'ERNSH', 4, '1997-01-03', '1997-01-31', '1997-01-09', 3, 73.7900009, 'Ernst Handel', 'Kirchgasse 6', 'Graz', NULL, '8010', 'Austria');\nINSERT INTO orders VALUES (10404, 'MAGAA', 2, '1997-01-03', '1997-01-31', '1997-01-08', 1, 155.970001, 'Magazzini Alimentari Riuniti', 'Via Ludovico il Moro 22', 'Bergamo', NULL, '24100', 'Italy');\nINSERT INTO orders VALUES (10405, 'LINOD', 1, '1997-01-06', '1997-02-03', '1997-01-22', 1, 34.8199997, 'LINO-Delicateses', 'Ave. 5 de Mayo Porlamar', 'I. de Margarita', 'Nueva Esparta', '4980', 'Venezuela');\nINSERT INTO orders VALUES (10406, 'QUEEN', 7, '1997-01-07', '1997-02-18', '1997-01-13', 1, 108.040001, 'Queen Cozinha', 'Alameda dos Canàrios, 891', 'Sao Paulo', 'SP', '05487-020', 'Brazil');\nINSERT INTO orders VALUES (10407, 'OTTIK', 2, '1997-01-07', '1997-02-04', '1997-01-30', 2, 91.4800034, 'Ottilies Käseladen', 'Mehrheimerstr. 369', 'Köln', NULL, '50739', 'Germany');\nINSERT INTO orders VALUES (10408, 'FOLIG', 8, '1997-01-08', '1997-02-05', '1997-01-14', 1, 11.2600002, 'Folies gourmandes', '184, chaussée de Tournai', 'Lille', NULL, '59000', 'France');\nINSERT INTO orders VALUES (10409, 'OCEAN', 3, '1997-01-09', '1997-02-06', '1997-01-14', 1, 29.8299999, 'Océano Atlántico Ltda.', 'Ing. Gustavo Moncada 8585 Piso 20-A', 'Buenos Aires', NULL, '1010', 'Argentina');\nINSERT INTO orders VALUES (10410, 'BOTTM', 3, '1997-01-10', '1997-02-07', '1997-01-15', 3, 2.4000001, 'Bottom-Dollar Markets', '23 Tsawassen Blvd.', 'Tsawassen', 'BC', 'T2F 8M4', 'Canada');\nINSERT INTO orders VALUES (10411, 'BOTTM', 9, '1997-01-10', '1997-02-07', '1997-01-21', 3, 23.6499996, 'Bottom-Dollar Markets', '23 Tsawassen Blvd.', 'Tsawassen', 'BC', 'T2F 8M4', 'Canada');\nINSERT INTO orders VALUES (10412, 'WARTH', 8, '1997-01-13', '1997-02-10', '1997-01-15', 2, 3.76999998, 'Wartian Herkku', 'Torikatu 38', 'Oulu', NULL, '90110', 'Finland');\nINSERT INTO orders VALUES (10413, 'LAMAI', 3, '1997-01-14', '1997-02-11', '1997-01-16', 2, 95.6600037, 'La maison d''Asie', '1 rue Alsace-Lorraine', 'Toulouse', NULL, '31000', 'France');\nINSERT INTO orders VALUES (10414, 'FAMIA', 2, '1997-01-14', '1997-02-11', '1997-01-17', 3, 21.4799995, 'Familia Arquibaldo', 'Rua Orós, 92', 'Sao Paulo', 'SP', '05442-030', 'Brazil');\nINSERT INTO orders VALUES (10415, 'HUNGC', 3, '1997-01-15', '1997-02-12', '1997-01-24', 1, 0.200000003, 'Hungry Coyote Import Store', 'City Center Plaza 516 Main St.', 'Elgin', 'OR', '97827', 'USA');\nINSERT INTO orders VALUES (10416, 'WARTH', 8, '1997-01-16', '1997-02-13', '1997-01-27', 3, 22.7199993, 'Wartian Herkku', 'Torikatu 38', 'Oulu', NULL, '90110', 'Finland');\nINSERT INTO orders VALUES (10417, 'SIMOB', 4, '1997-01-16', '1997-02-13', '1997-01-28', 3, 70.2900009, 'Simons bistro', 'Vinbæltet 34', 'Kobenhavn', NULL, '1734', 'Denmark');\nINSERT INTO orders VALUES (10418, 'QUICK', 4, '1997-01-17', '1997-02-14', '1997-01-24', 1, 17.5499992, 'QUICK-Stop', 'Taucherstraße 10', 'Cunewalde', NULL, '01307', 'Germany');\nINSERT INTO orders VALUES (10419, 'RICSU', 4, '1997-01-20', '1997-02-17', '1997-01-30', 2, 137.350006, 'Richter Supermarkt', 'Starenweg 5', 'Genève', NULL, '1204', 'Switzerland');\nINSERT INTO orders VALUES (10420, 'WELLI', 3, '1997-01-21', '1997-02-18', '1997-01-27', 1, 44.1199989, 'Wellington Importadora', 'Rua do Mercado, 12', 'Resende', 'SP', '08737-363', 'Brazil');\nINSERT INTO orders VALUES (10421, 'QUEDE', 8, '1997-01-21', '1997-03-04', '1997-01-27', 1, 99.2300034, 'Que Delícia', 'Rua da Panificadora, 12', 'Rio de Janeiro', 'RJ', '02389-673', 'Brazil');\nINSERT INTO orders VALUES (10422, 'FRANS', 2, '1997-01-22', '1997-02-19', '1997-01-31', 1, 3.01999998, 'Franchi S.p.A.', 'Via Monte Bianco 34', 'Torino', NULL, '10100', 'Italy');\nINSERT INTO orders VALUES (10423, 'GOURL', 6, '1997-01-23', '1997-02-06', '1997-02-24', 3, 24.5, 'Gourmet Lanchonetes', 'Av. Brasil, 442', 'Campinas', 'SP', '04876-786', 'Brazil');\nINSERT INTO orders VALUES (10424, 'MEREP', 7, '1997-01-23', '1997-02-20', '1997-01-27', 2, 370.609985, 'Mère Paillarde', '43 rue St. Laurent', 'Montréal', 'Québec', 'H1J 1C3', 'Canada');\nINSERT INTO orders VALUES (10425, 'LAMAI', 6, '1997-01-24', '1997-02-21', '1997-02-14', 2, 7.92999983, 'La maison d''Asie', '1 rue Alsace-Lorraine', 'Toulouse', NULL, '31000', 'France');\nINSERT INTO orders VALUES (10426, 'GALED', 4, '1997-01-27', '1997-02-24', '1997-02-06', 1, 18.6900005, 'Galería del gastronómo', 'Rambla de Cataluña, 23', 'Barcelona', NULL, '8022', 'Spain');\nINSERT INTO orders VALUES (10427, 'PICCO', 4, '1997-01-27', '1997-02-24', '1997-03-03', 2, 31.2900009, 'Piccolo und mehr', 'Geislweg 14', 'Salzburg', NULL, '5020', 'Austria');\nINSERT INTO orders VALUES (10428, 'REGGC', 7, '1997-01-28', '1997-02-25', '1997-02-04', 1, 11.0900002, 'Reggiani Caseifici', 'Strada Provinciale 124', 'Reggio Emilia', NULL, '42100', 'Italy');\nINSERT INTO orders VALUES (10429, 'HUNGO', 3, '1997-01-29', '1997-03-12', '1997-02-07', 2, 56.6300011, 'Hungry Owl All-Night Grocers', '8 Johnstown Road', 'Cork', 'Co. Cork', NULL, 'Ireland');\nINSERT INTO orders VALUES (10430, 'ERNSH', 4, '1997-01-30', '1997-02-13', '1997-02-03', 1, 458.779999, 'Ernst Handel', 'Kirchgasse 6', 'Graz', NULL, '8010', 'Austria');\nINSERT INTO orders VALUES (10431, 'BOTTM', 4, '1997-01-30', '1997-02-13', '1997-02-07', 2, 44.1699982, 'Bottom-Dollar Markets', '23 Tsawassen Blvd.', 'Tsawassen', 'BC', 'T2F 8M4', 'Canada');\nINSERT INTO orders VALUES (10432, 'SPLIR', 3, '1997-01-31', '1997-02-14', '1997-02-07', 2, 4.34000015, 'Split Rail Beer & Ale', 'P.O. Box 555', 'Lander', 'WY', '82520', 'USA');\nINSERT INTO orders VALUES (10433, 'PRINI', 3, '1997-02-03', '1997-03-03', '1997-03-04', 3, 73.8300018, 'Princesa Isabel Vinhos', 'Estrada da saúde n. 58', 'Lisboa', NULL, '1756', 'Portugal');\nINSERT INTO orders VALUES (10434, 'FOLKO', 3, '1997-02-03', '1997-03-03', '1997-02-13', 2, 17.9200001, 'Folk och fä HB', 'Åkergatan 24', 'Bräcke', NULL, 'S-844 67', 'Sweden');\nINSERT INTO orders VALUES (10435, 'CONSH', 8, '1997-02-04', '1997-03-18', '1997-02-07', 2, 9.21000004, 'Consolidated Holdings', 'Berkeley Gardens 12  Brewery', 'London', NULL, 'WX1 6LT', 'UK');\nINSERT INTO orders VALUES (10436, 'BLONP', 3, '1997-02-05', '1997-03-05', '1997-02-11', 2, 156.660004, 'Blondel père et fils', '24, place Kléber', 'Strasbourg', NULL, '67000', 'France');\nINSERT INTO orders VALUES (10437, 'WARTH', 8, '1997-02-05', '1997-03-05', '1997-02-12', 1, 19.9699993, 'Wartian Herkku', 'Torikatu 38', 'Oulu', NULL, '90110', 'Finland');\nINSERT INTO orders VALUES (10438, 'TOMSP', 3, '1997-02-06', '1997-03-06', '1997-02-14', 2, 8.23999977, 'Toms Spezialitäten', 'Luisenstr. 48', 'Münster', NULL, '44087', 'Germany');\nINSERT INTO orders VALUES (10439, 'MEREP', 6, '1997-02-07', '1997-03-07', '1997-02-10', 3, 4.07000017, 'Mère Paillarde', '43 rue St. Laurent', 'Montréal', 'Québec', 'H1J 1C3', 'Canada');\nINSERT INTO orders VALUES (10440, 'SAVEA', 4, '1997-02-10', '1997-03-10', '1997-02-28', 2, 86.5299988, 'Save-a-lot Markets', '187 Suffolk Ln.', 'Boise', 'ID', '83720', 'USA');\nINSERT INTO orders VALUES (10441, 'OLDWO', 3, '1997-02-10', '1997-03-24', '1997-03-14', 2, 73.0199966, 'Old World Delicatessen', '2743 Bering St.', 'Anchorage', 'AK', '99508', 'USA');\nINSERT INTO orders VALUES (10442, 'ERNSH', 3, '1997-02-11', '1997-03-11', '1997-02-18', 2, 47.9399986, 'Ernst Handel', 'Kirchgasse 6', 'Graz', NULL, '8010', 'Austria');\nINSERT INTO orders VALUES (10443, 'REGGC', 8, '1997-02-12', '1997-03-12', '1997-02-14', 1, 13.9499998, 'Reggiani Caseifici', 'Strada Provinciale 124', 'Reggio Emilia', NULL, '42100', 'Italy');\nINSERT INTO orders VALUES (10444, 'BERGS', 3, '1997-02-12', '1997-03-12', '1997-02-21', 3, 3.5, 'Berglunds snabbköp', 'Berguvsvägen  8', 'Luleå', NULL, 'S-958 22', 'Sweden');\nINSERT INTO orders VALUES (10445, 'BERGS', 3, '1997-02-13', '1997-03-13', '1997-02-20', 1, 9.30000019, 'Berglunds snabbköp', 'Berguvsvägen  8', 'Luleå', NULL, 'S-958 22', 'Sweden');\nINSERT INTO orders VALUES (10446, 'TOMSP', 6, '1997-02-14', '1997-03-14', '1997-02-19', 1, 14.6800003, 'Toms Spezialitäten', 'Luisenstr. 48', 'Münster', NULL, '44087', 'Germany');\nINSERT INTO orders VALUES (10447, 'RICAR', 4, '1997-02-14', '1997-03-14', '1997-03-07', 2, 68.6600037, 'Ricardo Adocicados', 'Av. Copacabana, 267', 'Rio de Janeiro', 'RJ', '02389-890', 'Brazil');\nINSERT INTO orders VALUES (10448, 'RANCH', 4, '1997-02-17', '1997-03-17', '1997-02-24', 2, 38.8199997, 'Rancho grande', 'Av. del Libertador 900', 'Buenos Aires', NULL, '1010', 'Argentina');\nINSERT INTO orders VALUES (10449, 'BLONP', 3, '1997-02-18', '1997-03-18', '1997-02-27', 2, 53.2999992, 'Blondel père et fils', '24, place Kléber', 'Strasbourg', NULL, '67000', 'France');\nINSERT INTO orders VALUES (10450, 'VICTE', 8, '1997-02-19', '1997-03-19', '1997-03-11', 2, 7.23000002, 'Victuailles en stock', '2, rue du Commerce', 'Lyon', NULL, '69004', 'France');\nINSERT INTO orders VALUES (10451, 'QUICK', 4, '1997-02-19', '1997-03-05', '1997-03-12', 3, 189.089996, 'QUICK-Stop', 'Taucherstraße 10', 'Cunewalde', NULL, '01307', 'Germany');\nINSERT INTO orders VALUES (10452, 'SAVEA', 8, '1997-02-20', '1997-03-20', '1997-02-26', 1, 140.259995, 'Save-a-lot Markets', '187 Suffolk Ln.', 'Boise', 'ID', '83720', 'USA');\nINSERT INTO orders VALUES (10453, 'AROUT', 1, '1997-02-21', '1997-03-21', '1997-02-26', 2, 25.3600006, 'Around the Horn', 'Brook Farm Stratford St. Mary', 'Colchester', 'Essex', 'CO7 6JX', 'UK');\nINSERT INTO orders VALUES (10454, 'LAMAI', 4, '1997-02-21', '1997-03-21', '1997-02-25', 3, 2.74000001, 'La maison d''Asie', '1 rue Alsace-Lorraine', 'Toulouse', NULL, '31000', 'France');\nINSERT INTO orders VALUES (10455, 'WARTH', 8, '1997-02-24', '1997-04-07', '1997-03-03', 2, 180.449997, 'Wartian Herkku', 'Torikatu 38', 'Oulu', NULL, '90110', 'Finland');\nINSERT INTO orders VALUES (10456, 'KOENE', 8, '1997-02-25', '1997-04-08', '1997-02-28', 2, 8.11999989, 'Königlich Essen', 'Maubelstr. 90', 'Brandenburg', NULL, '14776', 'Germany');\nINSERT INTO orders VALUES (10457, 'KOENE', 2, '1997-02-25', '1997-03-25', '1997-03-03', 1, 11.5699997, 'Königlich Essen', 'Maubelstr. 90', 'Brandenburg', NULL, '14776', 'Germany');\nINSERT INTO orders VALUES (10458, 'SUPRD', 7, '1997-02-26', '1997-03-26', '1997-03-04', 3, 147.059998, 'Suprêmes délices', 'Boulevard Tirou, 255', 'Charleroi', NULL, 'B-6000', 'Belgium');\nINSERT INTO orders VALUES (10459, 'VICTE', 4, '1997-02-27', '1997-03-27', '1997-02-28', 2, 25.0900002, 'Victuailles en stock', '2, rue du Commerce', 'Lyon', NULL, '69004', 'France');\nINSERT INTO orders VALUES (10460, 'FOLKO', 8, '1997-02-28', '1997-03-28', '1997-03-03', 1, 16.2700005, 'Folk och fä HB', 'Åkergatan 24', 'Bräcke', NULL, 'S-844 67', 'Sweden');\nINSERT INTO orders VALUES (10461, 'LILAS', 1, '1997-02-28', '1997-03-28', '1997-03-05', 3, 148.610001, 'LILA-Supermercado', 'Carrera 52 con Ave. Bolívar #65-98 Llano Largo', 'Barquisimeto', 'Lara', '3508', 'Venezuela');\nINSERT INTO orders VALUES (10462, 'CONSH', 2, '1997-03-03', '1997-03-31', '1997-03-18', 1, 6.17000008, 'Consolidated Holdings', 'Berkeley Gardens 12  Brewery', 'London', NULL, 'WX1 6LT', 'UK');\nINSERT INTO orders VALUES (10463, 'SUPRD', 5, '1997-03-04', '1997-04-01', '1997-03-06', 3, 14.7799997, 'Suprêmes délices', 'Boulevard Tirou, 255', 'Charleroi', NULL, 'B-6000', 'Belgium');\nINSERT INTO orders VALUES (10464, 'FURIB', 4, '1997-03-04', '1997-04-01', '1997-03-14', 2, 89, 'Furia Bacalhau e Frutos do Mar', 'Jardim das rosas n. 32', 'Lisboa', NULL, '1675', 'Portugal');\nINSERT INTO orders VALUES (10465, 'VAFFE', 1, '1997-03-05', '1997-04-02', '1997-03-14', 3, 145.039993, 'Vaffeljernet', 'Smagsloget 45', 'Århus', NULL, '8200', 'Denmark');\nINSERT INTO orders VALUES (10466, 'COMMI', 4, '1997-03-06', '1997-04-03', '1997-03-13', 1, 11.9300003, 'Comércio Mineiro', 'Av. dos Lusíadas, 23', 'Sao Paulo', 'SP', '05432-043', 'Brazil');\nINSERT INTO orders VALUES (10467, 'MAGAA', 8, '1997-03-06', '1997-04-03', '1997-03-11', 2, 4.92999983, 'Magazzini Alimentari Riuniti', 'Via Ludovico il Moro 22', 'Bergamo', NULL, '24100', 'Italy');\nINSERT INTO orders VALUES (10468, 'KOENE', 3, '1997-03-07', '1997-04-04', '1997-03-12', 3, 44.1199989, 'Königlich Essen', 'Maubelstr. 90', 'Brandenburg', NULL, '14776', 'Germany');\nINSERT INTO orders VALUES (10469, 'WHITC', 1, '1997-03-10', '1997-04-07', '1997-03-14', 1, 60.1800003, 'White Clover Markets', '1029 - 12th Ave. S.', 'Seattle', 'WA', '98124', 'USA');\nINSERT INTO orders VALUES (10470, 'BONAP', 4, '1997-03-11', '1997-04-08', '1997-03-14', 2, 64.5599976, 'Bon app''', '12, rue des Bouchers', 'Marseille', NULL, '13008', 'France');\nINSERT INTO orders VALUES (10471, 'BSBEV', 2, '1997-03-11', '1997-04-08', '1997-03-18', 3, 45.5900002, 'B''s Beverages', 'Fauntleroy Circus', 'London', NULL, 'EC2 5NT', 'UK');\nINSERT INTO orders VALUES (10472, 'SEVES', 8, '1997-03-12', '1997-04-09', '1997-03-19', 1, 4.19999981, 'Seven Seas Imports', '90 Wadhurst Rd.', 'London', NULL, 'OX15 4NB', 'UK');\nINSERT INTO orders VALUES (10473, 'ISLAT', 1, '1997-03-13', '1997-03-27', '1997-03-21', 3, 16.3700008, 'Island Trading', 'Garden House Crowther Way', 'Cowes', 'Isle of Wight', 'PO31 7PJ', 'UK');\nINSERT INTO orders VALUES (10474, 'PERIC', 5, '1997-03-13', '1997-04-10', '1997-03-21', 2, 83.4899979, 'Pericles Comidas clásicas', 'Calle Dr. Jorge Cash 321', 'México D.F.', NULL, '05033', 'Mexico');\nINSERT INTO orders VALUES (10475, 'SUPRD', 9, '1997-03-14', '1997-04-11', '1997-04-04', 1, 68.5199966, 'Suprêmes délices', 'Boulevard Tirou, 255', 'Charleroi', NULL, 'B-6000', 'Belgium');\nINSERT INTO orders VALUES (10476, 'HILAA', 8, '1997-03-17', '1997-04-14', '1997-03-24', 3, 4.40999985, 'HILARION-Abastos', 'Carrera 22 con Ave. Carlos Soublette #8-35', 'San Cristóbal', 'Táchira', '5022', 'Venezuela');\nINSERT INTO orders VALUES (10477, 'PRINI', 5, '1997-03-17', '1997-04-14', '1997-03-25', 2, 13.0200005, 'Princesa Isabel Vinhos', 'Estrada da saúde n. 58', 'Lisboa', NULL, '1756', 'Portugal');\nINSERT INTO orders VALUES (10478, 'VICTE', 2, '1997-03-18', '1997-04-01', '1997-03-26', 3, 4.80999994, 'Victuailles en stock', '2, rue du Commerce', 'Lyon', NULL, '69004', 'France');\nINSERT INTO orders VALUES (10479, 'RATTC', 3, '1997-03-19', '1997-04-16', '1997-03-21', 3, 708.950012, 'Rattlesnake Canyon Grocery', '2817 Milton Dr.', 'Albuquerque', 'NM', '87110', 'USA');\nINSERT INTO orders VALUES (10480, 'FOLIG', 6, '1997-03-20', '1997-04-17', '1997-03-24', 2, 1.35000002, 'Folies gourmandes', '184, chaussée de Tournai', 'Lille', NULL, '59000', 'France');\nINSERT INTO orders VALUES (10481, 'RICAR', 8, '1997-03-20', '1997-04-17', '1997-03-25', 2, 64.3300018, 'Ricardo Adocicados', 'Av. Copacabana, 267', 'Rio de Janeiro', 'RJ', '02389-890', 'Brazil');\nINSERT INTO orders VALUES (10482, 'LAZYK', 1, '1997-03-21', '1997-04-18', '1997-04-10', 3, 7.48000002, 'Lazy K Kountry Store', '12 Orchestra Terrace', 'Walla Walla', 'WA', '99362', 'USA');\nINSERT INTO orders VALUES (10483, 'WHITC', 7, '1997-03-24', '1997-04-21', '1997-04-25', 2, 15.2799997, 'White Clover Markets', '1029 - 12th Ave. S.', 'Seattle', 'WA', '98124', 'USA');\nINSERT INTO orders VALUES (10484, 'BSBEV', 3, '1997-03-24', '1997-04-21', '1997-04-01', 3, 6.88000011, 'B''s Beverages', 'Fauntleroy Circus', 'London', NULL, 'EC2 5NT', 'UK');\nINSERT INTO orders VALUES (10485, 'LINOD', 4, '1997-03-25', '1997-04-08', '1997-03-31', 2, 64.4499969, 'LINO-Delicateses', 'Ave. 5 de Mayo Porlamar', 'I. de Margarita', 'Nueva Esparta', '4980', 'Venezuela');\nINSERT INTO orders VALUES (10486, 'HILAA', 1, '1997-03-26', '1997-04-23', '1997-04-02', 2, 30.5300007, 'HILARION-Abastos', 'Carrera 22 con Ave. Carlos Soublette #8-35', 'San Cristóbal', 'Táchira', '5022', 'Venezuela');\nINSERT INTO orders VALUES (10487, 'QUEEN', 2, '1997-03-26', '1997-04-23', '1997-03-28', 2, 71.0699997, 'Queen Cozinha', 'Alameda dos Canàrios, 891', 'Sao Paulo', 'SP', '05487-020', 'Brazil');\nINSERT INTO orders VALUES (10488, 'FRANK', 8, '1997-03-27', '1997-04-24', '1997-04-02', 2, 4.92999983, 'Frankenversand', 'Berliner Platz 43', 'München', NULL, '80805', 'Germany');\nINSERT INTO orders VALUES (10489, 'PICCO', 6, '1997-03-28', '1997-04-25', '1997-04-09', 2, 5.28999996, 'Piccolo und mehr', 'Geislweg 14', 'Salzburg', NULL, '5020', 'Austria');\nINSERT INTO orders VALUES (10490, 'HILAA', 7, '1997-03-31', '1997-04-28', '1997-04-03', 2, 210.190002, 'HILARION-Abastos', 'Carrera 22 con Ave. Carlos Soublette #8-35', 'San Cristóbal', 'Táchira', '5022', 'Venezuela');\nINSERT INTO orders VALUES (10491, 'FURIB', 8, '1997-03-31', '1997-04-28', '1997-04-08', 3, 16.9599991, 'Furia Bacalhau e Frutos do Mar', 'Jardim das rosas n. 32', 'Lisboa', NULL, '1675', 'Portugal');\nINSERT INTO orders VALUES (10492, 'BOTTM', 3, '1997-04-01', '1997-04-29', '1997-04-11', 1, 62.8899994, 'Bottom-Dollar Markets', '23 Tsawassen Blvd.', 'Tsawassen', 'BC', 'T2F 8M4', 'Canada');\nINSERT INTO orders VALUES (10493, 'LAMAI', 4, '1997-04-02', '1997-04-30', '1997-04-10', 3, 10.6400003, 'La maison d''Asie', '1 rue Alsace-Lorraine', 'Toulouse', NULL, '31000', 'France');\nINSERT INTO orders VALUES (10494, 'COMMI', 4, '1997-04-02', '1997-04-30', '1997-04-09', 2, 65.9899979, 'Comércio Mineiro', 'Av. dos Lusíadas, 23', 'Sao Paulo', 'SP', '05432-043', 'Brazil');\nINSERT INTO orders VALUES (10495, 'LAUGB', 3, '1997-04-03', '1997-05-01', '1997-04-11', 3, 4.6500001, 'Laughing Bacchus Wine Cellars', '2319 Elm St.', 'Vancouver', 'BC', 'V3F 2K1', 'Canada');\nINSERT INTO orders VALUES (10496, 'TRADH', 7, '1997-04-04', '1997-05-02', '1997-04-07', 2, 46.7700005, 'Tradiçao Hipermercados', 'Av. Inês de Castro, 414', 'Sao Paulo', 'SP', '05634-030', 'Brazil');\nINSERT INTO orders VALUES (10497, 'LEHMS', 7, '1997-04-04', '1997-05-02', '1997-04-07', 1, 36.2099991, 'Lehmanns Marktstand', 'Magazinweg 7', 'Frankfurt a.M.', NULL, '60528', 'Germany');\nINSERT INTO orders VALUES (10498, 'HILAA', 8, '1997-04-07', '1997-05-05', '1997-04-11', 2, 29.75, 'HILARION-Abastos', 'Carrera 22 con Ave. Carlos Soublette #8-35', 'San Cristóbal', 'Táchira', '5022', 'Venezuela');\nINSERT INTO orders VALUES (10499, 'LILAS', 4, '1997-04-08', '1997-05-06', '1997-04-16', 2, 102.019997, 'LILA-Supermercado', 'Carrera 52 con Ave. Bolívar #65-98 Llano Largo', 'Barquisimeto', 'Lara', '3508', 'Venezuela');\nINSERT INTO orders VALUES (10500, 'LAMAI', 6, '1997-04-09', '1997-05-07', '1997-04-17', 1, 42.6800003, 'La maison d''Asie', '1 rue Alsace-Lorraine', 'Toulouse', NULL, '31000', 'France');\nINSERT INTO orders VALUES (10501, 'BLAUS', 9, '1997-04-09', '1997-05-07', '1997-04-16', 3, 8.85000038, 'Blauer See Delikatessen', 'Forsterstr. 57', 'Mannheim', NULL, '68306', 'Germany');\nINSERT INTO orders VALUES (10502, 'PERIC', 2, '1997-04-10', '1997-05-08', '1997-04-29', 1, 69.3199997, 'Pericles Comidas clásicas', 'Calle Dr. Jorge Cash 321', 'México D.F.', NULL, '05033', 'Mexico');\nINSERT INTO orders VALUES (10503, 'HUNGO', 6, '1997-04-11', '1997-05-09', '1997-04-16', 2, 16.7399998, 'Hungry Owl All-Night Grocers', '8 Johnstown Road', 'Cork', 'Co. Cork', NULL, 'Ireland');\nINSERT INTO orders VALUES (10504, 'WHITC', 4, '1997-04-11', '1997-05-09', '1997-04-18', 3, 59.1300011, 'White Clover Markets', '1029 - 12th Ave. S.', 'Seattle', 'WA', '98124', 'USA');\nINSERT INTO orders VALUES (10505, 'MEREP', 3, '1997-04-14', '1997-05-12', '1997-04-21', 3, 7.13000011, 'Mère Paillarde', '43 rue St. Laurent', 'Montréal', 'Québec', 'H1J 1C3', 'Canada');\nINSERT INTO orders VALUES (10506, 'KOENE', 9, '1997-04-15', '1997-05-13', '1997-05-02', 2, 21.1900005, 'Königlich Essen', 'Maubelstr. 90', 'Brandenburg', NULL, '14776', 'Germany');\nINSERT INTO orders VALUES (10507, 'ANTON', 7, '1997-04-15', '1997-05-13', '1997-04-22', 1, 47.4500008, 'Antonio Moreno Taquería', 'Mataderos  2312', 'México D.F.', NULL, '05023', 'Mexico');\nINSERT INTO orders VALUES (10508, 'OTTIK', 1, '1997-04-16', '1997-05-14', '1997-05-13', 2, 4.98999977, 'Ottilies Käseladen', 'Mehrheimerstr. 369', 'Köln', NULL, '50739', 'Germany');\nINSERT INTO orders VALUES (10509, 'BLAUS', 4, '1997-04-17', '1997-05-15', '1997-04-29', 1, 0.150000006, 'Blauer See Delikatessen', 'Forsterstr. 57', 'Mannheim', NULL, '68306', 'Germany');\nINSERT INTO orders VALUES (10510, 'SAVEA', 6, '1997-04-18', '1997-05-16', '1997-04-28', 3, 367.630005, 'Save-a-lot Markets', '187 Suffolk Ln.', 'Boise', 'ID', '83720', 'USA');\nINSERT INTO orders VALUES (10511, 'BONAP', 4, '1997-04-18', '1997-05-16', '1997-04-21', 3, 350.640015, 'Bon app''', '12, rue des Bouchers', 'Marseille', NULL, '13008', 'France');\nINSERT INTO orders VALUES (10512, 'FAMIA', 7, '1997-04-21', '1997-05-19', '1997-04-24', 2, 3.52999997, 'Familia Arquibaldo', 'Rua Orós, 92', 'Sao Paulo', 'SP', '05442-030', 'Brazil');\nINSERT INTO orders VALUES (10513, 'WANDK', 7, '1997-04-22', '1997-06-03', '1997-04-28', 1, 105.650002, 'Die Wandernde Kuh', 'Adenauerallee 900', 'Stuttgart', NULL, '70563', 'Germany');\nINSERT INTO orders VALUES (10514, 'ERNSH', 3, '1997-04-22', '1997-05-20', '1997-05-16', 2, 789.950012, 'Ernst Handel', 'Kirchgasse 6', 'Graz', NULL, '8010', 'Austria');\nINSERT INTO orders VALUES (10515, 'QUICK', 2, '1997-04-23', '1997-05-07', '1997-05-23', 1, 204.470001, 'QUICK-Stop', 'Taucherstraße 10', 'Cunewalde', NULL, '01307', 'Germany');\nINSERT INTO orders VALUES (10516, 'HUNGO', 2, '1997-04-24', '1997-05-22', '1997-05-01', 3, 62.7799988, 'Hungry Owl All-Night Grocers', '8 Johnstown Road', 'Cork', 'Co. Cork', NULL, 'Ireland');\nINSERT INTO orders VALUES (10517, 'NORTS', 3, '1997-04-24', '1997-05-22', '1997-04-29', 3, 32.0699997, 'North/South', 'South House 300 Queensbridge', 'London', NULL, 'SW7 1RZ', 'UK');\nINSERT INTO orders VALUES (10518, 'TORTU', 4, '1997-04-25', '1997-05-09', '1997-05-05', 2, 218.149994, 'Tortuga Restaurante', 'Avda. Azteca 123', 'México D.F.', NULL, '05033', 'Mexico');\nINSERT INTO orders VALUES (10519, 'CHOPS', 6, '1997-04-28', '1997-05-26', '1997-05-01', 3, 91.7600021, 'Chop-suey Chinese', 'Hauptstr. 31', 'Bern', NULL, '3012', 'Switzerland');\nINSERT INTO orders VALUES (10520, 'SANTG', 7, '1997-04-29', '1997-05-27', '1997-05-01', 1, 13.3699999, 'Santé Gourmet', 'Erling Skakkes gate 78', 'Stavern', NULL, '4110', 'Norway');\nINSERT INTO orders VALUES (10521, 'CACTU', 8, '1997-04-29', '1997-05-27', '1997-05-02', 2, 17.2199993, 'Cactus Comidas para llevar', 'Cerrito 333', 'Buenos Aires', NULL, '1010', 'Argentina');\nINSERT INTO orders VALUES (10522, 'LEHMS', 4, '1997-04-30', '1997-05-28', '1997-05-06', 1, 45.3300018, 'Lehmanns Marktstand', 'Magazinweg 7', 'Frankfurt a.M.', NULL, '60528', 'Germany');\nINSERT INTO orders VALUES (10523, 'SEVES', 7, '1997-05-01', '1997-05-29', '1997-05-30', 2, 77.6299973, 'Seven Seas Imports', '90 Wadhurst Rd.', 'London', NULL, 'OX15 4NB', 'UK');\nINSERT INTO orders VALUES (10524, 'BERGS', 1, '1997-05-01', '1997-05-29', '1997-05-07', 2, 244.789993, 'Berglunds snabbköp', 'Berguvsvägen  8', 'Luleå', NULL, 'S-958 22', 'Sweden');\nINSERT INTO orders VALUES (10525, 'BONAP', 1, '1997-05-02', '1997-05-30', '1997-05-23', 2, 11.0600004, 'Bon app''', '12, rue des Bouchers', 'Marseille', NULL, '13008', 'France');\nINSERT INTO orders VALUES (10526, 'WARTH', 4, '1997-05-05', '1997-06-02', '1997-05-15', 2, 58.5900002, 'Wartian Herkku', 'Torikatu 38', 'Oulu', NULL, '90110', 'Finland');\nINSERT INTO orders VALUES (10527, 'QUICK', 7, '1997-05-05', '1997-06-02', '1997-05-07', 1, 41.9000015, 'QUICK-Stop', 'Taucherstraße 10', 'Cunewalde', NULL, '01307', 'Germany');\nINSERT INTO orders VALUES (10528, 'GREAL', 6, '1997-05-06', '1997-05-20', '1997-05-09', 2, 3.3499999, 'Great Lakes Food Market', '2732 Baker Blvd.', 'Eugene', 'OR', '97403', 'USA');\nINSERT INTO orders VALUES (10529, 'MAISD', 5, '1997-05-07', '1997-06-04', '1997-05-09', 2, 66.6900024, 'Maison Dewey', 'Rue Joseph-Bens 532', 'Bruxelles', NULL, 'B-1180', 'Belgium');\nINSERT INTO orders VALUES (10530, 'PICCO', 3, '1997-05-08', '1997-06-05', '1997-05-12', 2, 339.220001, 'Piccolo und mehr', 'Geislweg 14', 'Salzburg', NULL, '5020', 'Austria');\nINSERT INTO orders VALUES (10531, 'OCEAN', 7, '1997-05-08', '1997-06-05', '1997-05-19', 1, 8.11999989, 'Océano Atlántico Ltda.', 'Ing. Gustavo Moncada 8585 Piso 20-A', 'Buenos Aires', NULL, '1010', 'Argentina');\nINSERT INTO orders VALUES (10532, 'EASTC', 7, '1997-05-09', '1997-06-06', '1997-05-12', 3, 74.4599991, 'Eastern Connection', '35 King George', 'London', NULL, 'WX3 6FW', 'UK');\nINSERT INTO orders VALUES (10533, 'FOLKO', 8, '1997-05-12', '1997-06-09', '1997-05-22', 1, 188.039993, 'Folk och fä HB', 'Åkergatan 24', 'Bräcke', NULL, 'S-844 67', 'Sweden');\nINSERT INTO orders VALUES (10534, 'LEHMS', 8, '1997-05-12', '1997-06-09', '1997-05-14', 2, 27.9400005, 'Lehmanns Marktstand', 'Magazinweg 7', 'Frankfurt a.M.', NULL, '60528', 'Germany');\nINSERT INTO orders VALUES (10535, 'ANTON', 4, '1997-05-13', '1997-06-10', '1997-05-21', 1, 15.6400003, 'Antonio Moreno Taquería', 'Mataderos  2312', 'México D.F.', NULL, '05023', 'Mexico');\nINSERT INTO orders VALUES (10536, 'LEHMS', 3, '1997-05-14', '1997-06-11', '1997-06-06', 2, 58.8800011, 'Lehmanns Marktstand', 'Magazinweg 7', 'Frankfurt a.M.', NULL, '60528', 'Germany');\nINSERT INTO orders VALUES (10537, 'RICSU', 1, '1997-05-14', '1997-05-28', '1997-05-19', 1, 78.8499985, 'Richter Supermarkt', 'Starenweg 5', 'Genève', NULL, '1204', 'Switzerland');\nINSERT INTO orders VALUES (10538, 'BSBEV', 9, '1997-05-15', '1997-06-12', '1997-05-16', 3, 4.86999989, 'B''s Beverages', 'Fauntleroy Circus', 'London', NULL, 'EC2 5NT', 'UK');\nINSERT INTO orders VALUES (10539, 'BSBEV', 6, '1997-05-16', '1997-06-13', '1997-05-23', 3, 12.3599997, 'B''s Beverages', 'Fauntleroy Circus', 'London', NULL, 'EC2 5NT', 'UK');\nINSERT INTO orders VALUES (10540, 'QUICK', 3, '1997-05-19', '1997-06-16', '1997-06-13', 3, 1007.64001, 'QUICK-Stop', 'Taucherstraße 10', 'Cunewalde', NULL, '01307', 'Germany');\nINSERT INTO orders VALUES (10541, 'HANAR', 2, '1997-05-19', '1997-06-16', '1997-05-29', 1, 68.6500015, 'Hanari Carnes', 'Rua do Paço, 67', 'Rio de Janeiro', 'RJ', '05454-876', 'Brazil');\nINSERT INTO orders VALUES (10542, 'KOENE', 1, '1997-05-20', '1997-06-17', '1997-05-26', 3, 10.9499998, 'Königlich Essen', 'Maubelstr. 90', 'Brandenburg', NULL, '14776', 'Germany');\nINSERT INTO orders VALUES (10543, 'LILAS', 8, '1997-05-21', '1997-06-18', '1997-05-23', 2, 48.1699982, 'LILA-Supermercado', 'Carrera 52 con Ave. Bolívar #65-98 Llano Largo', 'Barquisimeto', 'Lara', '3508', 'Venezuela');\nINSERT INTO orders VALUES (10544, 'LONEP', 4, '1997-05-21', '1997-06-18', '1997-05-30', 1, 24.9099998, 'Lonesome Pine Restaurant', '89 Chiaroscuro Rd.', 'Portland', 'OR', '97219', 'USA');\nINSERT INTO orders VALUES (10545, 'LAZYK', 8, '1997-05-22', '1997-06-19', '1997-06-26', 2, 11.9200001, 'Lazy K Kountry Store', '12 Orchestra Terrace', 'Walla Walla', 'WA', '99362', 'USA');\nINSERT INTO orders VALUES (10546, 'VICTE', 1, '1997-05-23', '1997-06-20', '1997-05-27', 3, 194.720001, 'Victuailles en stock', '2, rue du Commerce', 'Lyon', NULL, '69004', 'France');\nINSERT INTO orders VALUES (10547, 'SEVES', 3, '1997-05-23', '1997-06-20', '1997-06-02', 2, 178.429993, 'Seven Seas Imports', '90 Wadhurst Rd.', 'London', NULL, 'OX15 4NB', 'UK');\nINSERT INTO orders VALUES (10548, 'TOMSP', 3, '1997-05-26', '1997-06-23', '1997-06-02', 2, 1.42999995, 'Toms Spezialitäten', 'Luisenstr. 48', 'Münster', NULL, '44087', 'Germany');\nINSERT INTO orders VALUES (10549, 'QUICK', 5, '1997-05-27', '1997-06-10', '1997-05-30', 1, 171.240005, 'QUICK-Stop', 'Taucherstraße 10', 'Cunewalde', NULL, '01307', 'Germany');\nINSERT INTO orders VALUES (10550, 'GODOS', 7, '1997-05-28', '1997-06-25', '1997-06-06', 3, 4.32000017, 'Godos Cocina Típica', 'C/ Romero, 33', 'Sevilla', NULL, '41101', 'Spain');\nINSERT INTO orders VALUES (10551, 'FURIB', 4, '1997-05-28', '1997-07-09', '1997-06-06', 3, 72.9499969, 'Furia Bacalhau e Frutos do Mar', 'Jardim das rosas n. 32', 'Lisboa', NULL, '1675', 'Portugal');\nINSERT INTO orders VALUES (10552, 'HILAA', 2, '1997-05-29', '1997-06-26', '1997-06-05', 1, 83.2200012, 'HILARION-Abastos', 'Carrera 22 con Ave. Carlos Soublette #8-35', 'San Cristóbal', 'Táchira', '5022', 'Venezuela');\nINSERT INTO orders VALUES (10553, 'WARTH', 2, '1997-05-30', '1997-06-27', '1997-06-03', 2, 149.490005, 'Wartian Herkku', 'Torikatu 38', 'Oulu', NULL, '90110', 'Finland');\nINSERT INTO orders VALUES (10554, 'OTTIK', 4, '1997-05-30', '1997-06-27', '1997-06-05', 3, 120.970001, 'Ottilies Käseladen', 'Mehrheimerstr. 369', 'Köln', NULL, '50739', 'Germany');\nINSERT INTO orders VALUES (10555, 'SAVEA', 6, '1997-06-02', '1997-06-30', '1997-06-04', 3, 252.490005, 'Save-a-lot Markets', '187 Suffolk Ln.', 'Boise', 'ID', '83720', 'USA');\nINSERT INTO orders VALUES (10556, 'SIMOB', 2, '1997-06-03', '1997-07-15', '1997-06-13', 1, 9.80000019, 'Simons bistro', 'Vinbæltet 34', 'Kobenhavn', NULL, '1734', 'Denmark');\nINSERT INTO orders VALUES (10557, 'LEHMS', 9, '1997-06-03', '1997-06-17', '1997-06-06', 2, 96.7200012, 'Lehmanns Marktstand', 'Magazinweg 7', 'Frankfurt a.M.', NULL, '60528', 'Germany');\nINSERT INTO orders VALUES (10558, 'AROUT', 1, '1997-06-04', '1997-07-02', '1997-06-10', 2, 72.9700012, 'Around the Horn', 'Brook Farm Stratford St. Mary', 'Colchester', 'Essex', 'CO7 6JX', 'UK');\nINSERT INTO orders VALUES (10559, 'BLONP', 6, '1997-06-05', '1997-07-03', '1997-06-13', 1, 8.05000019, 'Blondel père et fils', '24, place Kléber', 'Strasbourg', NULL, '67000', 'France');\nINSERT INTO orders VALUES (10560, 'FRANK', 8, '1997-06-06', '1997-07-04', '1997-06-09', 1, 36.6500015, 'Frankenversand', 'Berliner Platz 43', 'München', NULL, '80805', 'Germany');\nINSERT INTO orders VALUES (10561, 'FOLKO', 2, '1997-06-06', '1997-07-04', '1997-06-09', 2, 242.210007, 'Folk och fä HB', 'Åkergatan 24', 'Bräcke', NULL, 'S-844 67', 'Sweden');\nINSERT INTO orders VALUES (10562, 'REGGC', 1, '1997-06-09', '1997-07-07', '1997-06-12', 1, 22.9500008, 'Reggiani Caseifici', 'Strada Provinciale 124', 'Reggio Emilia', NULL, '42100', 'Italy');\nINSERT INTO orders VALUES (10563, 'RICAR', 2, '1997-06-10', '1997-07-22', '1997-06-24', 2, 60.4300003, 'Ricardo Adocicados', 'Av. Copacabana, 267', 'Rio de Janeiro', 'RJ', '02389-890', 'Brazil');\nINSERT INTO orders VALUES (10564, 'RATTC', 4, '1997-06-10', '1997-07-08', '1997-06-16', 3, 13.75, 'Rattlesnake Canyon Grocery', '2817 Milton Dr.', 'Albuquerque', 'NM', '87110', 'USA');\nINSERT INTO orders VALUES (10565, 'MEREP', 8, '1997-06-11', '1997-07-09', '1997-06-18', 2, 7.1500001, 'Mère Paillarde', '43 rue St. Laurent', 'Montréal', 'Québec', 'H1J 1C3', 'Canada');\nINSERT INTO orders VALUES (10566, 'BLONP', 9, '1997-06-12', '1997-07-10', '1997-06-18', 1, 88.4000015, 'Blondel père et fils', '24, place Kléber', 'Strasbourg', NULL, '67000', 'France');\nINSERT INTO orders VALUES (10567, 'HUNGO', 1, '1997-06-12', '1997-07-10', '1997-06-17', 1, 33.9700012, 'Hungry Owl All-Night Grocers', '8 Johnstown Road', 'Cork', 'Co. Cork', NULL, 'Ireland');\nINSERT INTO orders VALUES (10568, 'GALED', 3, '1997-06-13', '1997-07-11', '1997-07-09', 3, 6.53999996, 'Galería del gastronómo', 'Rambla de Cataluña, 23', 'Barcelona', NULL, '8022', 'Spain');\nINSERT INTO orders VALUES (10569, 'RATTC', 5, '1997-06-16', '1997-07-14', '1997-07-11', 1, 58.9799995, 'Rattlesnake Canyon Grocery', '2817 Milton Dr.', 'Albuquerque', 'NM', '87110', 'USA');\nINSERT INTO orders VALUES (10570, 'MEREP', 3, '1997-06-17', '1997-07-15', '1997-06-19', 3, 188.990005, 'Mère Paillarde', '43 rue St. Laurent', 'Montréal', 'Québec', 'H1J 1C3', 'Canada');\nINSERT INTO orders VALUES (10571, 'ERNSH', 8, '1997-06-17', '1997-07-29', '1997-07-04', 3, 26.0599995, 'Ernst Handel', 'Kirchgasse 6', 'Graz', NULL, '8010', 'Austria');\nINSERT INTO orders VALUES (10572, 'BERGS', 3, '1997-06-18', '1997-07-16', '1997-06-25', 2, 116.43, 'Berglunds snabbköp', 'Berguvsvägen  8', 'Luleå', NULL, 'S-958 22', 'Sweden');\nINSERT INTO orders VALUES (10573, 'ANTON', 7, '1997-06-19', '1997-07-17', '1997-06-20', 3, 84.8399963, 'Antonio Moreno Taquería', 'Mataderos  2312', 'México D.F.', NULL, '05023', 'Mexico');\nINSERT INTO orders VALUES (10574, 'TRAIH', 4, '1997-06-19', '1997-07-17', '1997-06-30', 2, 37.5999985, 'Trail''s Head Gourmet Provisioners', '722 DaVinci Blvd.', 'Kirkland', 'WA', '98034', 'USA');\nINSERT INTO orders VALUES (10575, 'MORGK', 5, '1997-06-20', '1997-07-04', '1997-06-30', 1, 127.339996, 'Morgenstern Gesundkost', 'Heerstr. 22', 'Leipzig', NULL, '04179', 'Germany');\nINSERT INTO orders VALUES (10576, 'TORTU', 3, '1997-06-23', '1997-07-07', '1997-06-30', 3, 18.5599995, 'Tortuga Restaurante', 'Avda. Azteca 123', 'México D.F.', NULL, '05033', 'Mexico');\nINSERT INTO orders VALUES (10577, 'TRAIH', 9, '1997-06-23', '1997-08-04', '1997-06-30', 2, 25.4099998, 'Trail''s Head Gourmet Provisioners', '722 DaVinci Blvd.', 'Kirkland', 'WA', '98034', 'USA');\nINSERT INTO orders VALUES (10578, 'BSBEV', 4, '1997-06-24', '1997-07-22', '1997-07-25', 3, 29.6000004, 'B''s Beverages', 'Fauntleroy Circus', 'London', NULL, 'EC2 5NT', 'UK');\nINSERT INTO orders VALUES (10579, 'LETSS', 1, '1997-06-25', '1997-07-23', '1997-07-04', 2, 13.7299995, 'Let''s Stop N Shop', '87 Polk St. Suite 5', 'San Francisco', 'CA', '94117', 'USA');\nINSERT INTO orders VALUES (10580, 'OTTIK', 4, '1997-06-26', '1997-07-24', '1997-07-01', 3, 75.8899994, 'Ottilies Käseladen', 'Mehrheimerstr. 369', 'Köln', NULL, '50739', 'Germany');\nINSERT INTO orders VALUES (10581, 'FAMIA', 3, '1997-06-26', '1997-07-24', '1997-07-02', 1, 3.00999999, 'Familia Arquibaldo', 'Rua Orós, 92', 'Sao Paulo', 'SP', '05442-030', 'Brazil');\nINSERT INTO orders VALUES (10582, 'BLAUS', 3, '1997-06-27', '1997-07-25', '1997-07-14', 2, 27.7099991, 'Blauer See Delikatessen', 'Forsterstr. 57', 'Mannheim', NULL, '68306', 'Germany');\nINSERT INTO orders VALUES (10583, 'WARTH', 2, '1997-06-30', '1997-07-28', '1997-07-04', 2, 7.28000021, 'Wartian Herkku', 'Torikatu 38', 'Oulu', NULL, '90110', 'Finland');\nINSERT INTO orders VALUES (10584, 'BLONP', 4, '1997-06-30', '1997-07-28', '1997-07-04', 1, 59.1399994, 'Blondel père et fils', '24, place Kléber', 'Strasbourg', NULL, '67000', 'France');\nINSERT INTO orders VALUES (10585, 'WELLI', 7, '1997-07-01', '1997-07-29', '1997-07-10', 1, 13.4099998, 'Wellington Importadora', 'Rua do Mercado, 12', 'Resende', 'SP', '08737-363', 'Brazil');\nINSERT INTO orders VALUES (10586, 'REGGC', 9, '1997-07-02', '1997-07-30', '1997-07-09', 1, 0.479999989, 'Reggiani Caseifici', 'Strada Provinciale 124', 'Reggio Emilia', NULL, '42100', 'Italy');\nINSERT INTO orders VALUES (10587, 'QUEDE', 1, '1997-07-02', '1997-07-30', '1997-07-09', 1, 62.5200005, 'Que Delícia', 'Rua da Panificadora, 12', 'Rio de Janeiro', 'RJ', '02389-673', 'Brazil');\nINSERT INTO orders VALUES (10588, 'QUICK', 2, '1997-07-03', '1997-07-31', '1997-07-10', 3, 194.669998, 'QUICK-Stop', 'Taucherstraße 10', 'Cunewalde', NULL, '01307', 'Germany');\nINSERT INTO orders VALUES (10589, 'GREAL', 8, '1997-07-04', '1997-08-01', '1997-07-14', 2, 4.42000008, 'Great Lakes Food Market', '2732 Baker Blvd.', 'Eugene', 'OR', '97403', 'USA');\nINSERT INTO orders VALUES (10590, 'MEREP', 4, '1997-07-07', '1997-08-04', '1997-07-14', 3, 44.7700005, 'Mère Paillarde', '43 rue St. Laurent', 'Montréal', 'Québec', 'H1J 1C3', 'Canada');\nINSERT INTO orders VALUES (10591, 'VAFFE', 1, '1997-07-07', '1997-07-21', '1997-07-16', 1, 55.9199982, 'Vaffeljernet', 'Smagsloget 45', 'Århus', NULL, '8200', 'Denmark');\nINSERT INTO orders VALUES (10592, 'LEHMS', 3, '1997-07-08', '1997-08-05', '1997-07-16', 1, 32.0999985, 'Lehmanns Marktstand', 'Magazinweg 7', 'Frankfurt a.M.', NULL, '60528', 'Germany');\nINSERT INTO orders VALUES (10593, 'LEHMS', 7, '1997-07-09', '1997-08-06', '1997-08-13', 2, 174.199997, 'Lehmanns Marktstand', 'Magazinweg 7', 'Frankfurt a.M.', NULL, '60528', 'Germany');\nINSERT INTO orders VALUES (10594, 'OLDWO', 3, '1997-07-09', '1997-08-06', '1997-07-16', 2, 5.23999977, 'Old World Delicatessen', '2743 Bering St.', 'Anchorage', 'AK', '99508', 'USA');\nINSERT INTO orders VALUES (10595, 'ERNSH', 2, '1997-07-10', '1997-08-07', '1997-07-14', 1, 96.7799988, 'Ernst Handel', 'Kirchgasse 6', 'Graz', NULL, '8010', 'Austria');\nINSERT INTO orders VALUES (10596, 'WHITC', 8, '1997-07-11', '1997-08-08', '1997-08-12', 1, 16.3400002, 'White Clover Markets', '1029 - 12th Ave. S.', 'Seattle', 'WA', '98124', 'USA');\nINSERT INTO orders VALUES (10597, 'PICCO', 7, '1997-07-11', '1997-08-08', '1997-07-18', 3, 35.1199989, 'Piccolo und mehr', 'Geislweg 14', 'Salzburg', NULL, '5020', 'Austria');\nINSERT INTO orders VALUES (10598, 'RATTC', 1, '1997-07-14', '1997-08-11', '1997-07-18', 3, 44.4199982, 'Rattlesnake Canyon Grocery', '2817 Milton Dr.', 'Albuquerque', 'NM', '87110', 'USA');\nINSERT INTO orders VALUES (10599, 'BSBEV', 6, '1997-07-15', '1997-08-26', '1997-07-21', 3, 29.9799995, 'B''s Beverages', 'Fauntleroy Circus', 'London', NULL, 'EC2 5NT', 'UK');\nINSERT INTO orders VALUES (10600, 'HUNGC', 4, '1997-07-16', '1997-08-13', '1997-07-21', 1, 45.1300011, 'Hungry Coyote Import Store', 'City Center Plaza 516 Main St.', 'Elgin', 'OR', '97827', 'USA');\nINSERT INTO orders VALUES (10601, 'HILAA', 7, '1997-07-16', '1997-08-27', '1997-07-22', 1, 58.2999992, 'HILARION-Abastos', 'Carrera 22 con Ave. Carlos Soublette #8-35', 'San Cristóbal', 'Táchira', '5022', 'Venezuela');\nINSERT INTO orders VALUES (10602, 'VAFFE', 8, '1997-07-17', '1997-08-14', '1997-07-22', 2, 2.92000008, 'Vaffeljernet', 'Smagsloget 45', 'Århus', NULL, '8200', 'Denmark');\nINSERT INTO orders VALUES (10603, 'SAVEA', 8, '1997-07-18', '1997-08-15', '1997-08-08', 2, 48.7700005, 'Save-a-lot Markets', '187 Suffolk Ln.', 'Boise', 'ID', '83720', 'USA');\nINSERT INTO orders VALUES (10604, 'FURIB', 1, '1997-07-18', '1997-08-15', '1997-07-29', 1, 7.46000004, 'Furia Bacalhau e Frutos do Mar', 'Jardim das rosas n. 32', 'Lisboa', NULL, '1675', 'Portugal');\nINSERT INTO orders VALUES (10605, 'MEREP', 1, '1997-07-21', '1997-08-18', '1997-07-29', 2, 379.130005, 'Mère Paillarde', '43 rue St. Laurent', 'Montréal', 'Québec', 'H1J 1C3', 'Canada');\nINSERT INTO orders VALUES (10606, 'TRADH', 4, '1997-07-22', '1997-08-19', '1997-07-31', 3, 79.4000015, 'Tradiçao Hipermercados', 'Av. Inês de Castro, 414', 'Sao Paulo', 'SP', '05634-030', 'Brazil');\nINSERT INTO orders VALUES (10607, 'SAVEA', 5, '1997-07-22', '1997-08-19', '1997-07-25', 1, 200.240005, 'Save-a-lot Markets', '187 Suffolk Ln.', 'Boise', 'ID', '83720', 'USA');\nINSERT INTO orders VALUES (10608, 'TOMSP', 4, '1997-07-23', '1997-08-20', '1997-08-01', 2, 27.7900009, 'Toms Spezialitäten', 'Luisenstr. 48', 'Münster', NULL, '44087', 'Germany');\nINSERT INTO orders VALUES (10609, 'DUMON', 7, '1997-07-24', '1997-08-21', '1997-07-30', 2, 1.85000002, 'Du monde entier', '67, rue des Cinquante Otages', 'Nantes', NULL, '44000', 'France');\nINSERT INTO orders VALUES (10610, 'LAMAI', 8, '1997-07-25', '1997-08-22', '1997-08-06', 1, 26.7800007, 'La maison d''Asie', '1 rue Alsace-Lorraine', 'Toulouse', NULL, '31000', 'France');\nINSERT INTO orders VALUES (10611, 'WOLZA', 6, '1997-07-25', '1997-08-22', '1997-08-01', 2, 80.6500015, 'Wolski Zajazd', 'ul. Filtrowa 68', 'Warszawa', NULL, '01-012', 'Poland');\nINSERT INTO orders VALUES (10612, 'SAVEA', 1, '1997-07-28', '1997-08-25', '1997-08-01', 2, 544.080017, 'Save-a-lot Markets', '187 Suffolk Ln.', 'Boise', 'ID', '83720', 'USA');\nINSERT INTO orders VALUES (10613, 'HILAA', 4, '1997-07-29', '1997-08-26', '1997-08-01', 2, 8.10999966, 'HILARION-Abastos', 'Carrera 22 con Ave. Carlos Soublette #8-35', 'San Cristóbal', 'Táchira', '5022', 'Venezuela');\nINSERT INTO orders VALUES (10614, 'BLAUS', 8, '1997-07-29', '1997-08-26', '1997-08-01', 3, 1.92999995, 'Blauer See Delikatessen', 'Forsterstr. 57', 'Mannheim', NULL, '68306', 'Germany');\nINSERT INTO orders VALUES (10615, 'WILMK', 2, '1997-07-30', '1997-08-27', '1997-08-06', 3, 0.75, 'Wilman Kala', 'Keskuskatu 45', 'Helsinki', NULL, '21240', 'Finland');\nINSERT INTO orders VALUES (10616, 'GREAL', 1, '1997-07-31', '1997-08-28', '1997-08-05', 2, 116.529999, 'Great Lakes Food Market', '2732 Baker Blvd.', 'Eugene', 'OR', '97403', 'USA');\nINSERT INTO orders VALUES (10617, 'GREAL', 4, '1997-07-31', '1997-08-28', '1997-08-04', 2, 18.5300007, 'Great Lakes Food Market', '2732 Baker Blvd.', 'Eugene', 'OR', '97403', 'USA');\nINSERT INTO orders VALUES (10618, 'MEREP', 1, '1997-08-01', '1997-09-12', '1997-08-08', 1, 154.679993, 'Mère Paillarde', '43 rue St. Laurent', 'Montréal', 'Québec', 'H1J 1C3', 'Canada');\nINSERT INTO orders VALUES (10619, 'MEREP', 3, '1997-08-04', '1997-09-01', '1997-08-07', 3, 91.0500031, 'Mère Paillarde', '43 rue St. Laurent', 'Montréal', 'Québec', 'H1J 1C3', 'Canada');\nINSERT INTO orders VALUES (10620, 'LAUGB', 2, '1997-08-05', '1997-09-02', '1997-08-14', 3, 0.939999998, 'Laughing Bacchus Wine Cellars', '2319 Elm St.', 'Vancouver', 'BC', 'V3F 2K1', 'Canada');\nINSERT INTO orders VALUES (10621, 'ISLAT', 4, '1997-08-05', '1997-09-02', '1997-08-11', 2, 23.7299995, 'Island Trading', 'Garden House Crowther Way', 'Cowes', 'Isle of Wight', 'PO31 7PJ', 'UK');\nINSERT INTO orders VALUES (10622, 'RICAR', 4, '1997-08-06', '1997-09-03', '1997-08-11', 3, 50.9700012, 'Ricardo Adocicados', 'Av. Copacabana, 267', 'Rio de Janeiro', 'RJ', '02389-890', 'Brazil');\nINSERT INTO orders VALUES (10623, 'FRANK', 8, '1997-08-07', '1997-09-04', '1997-08-12', 2, 97.1800003, 'Frankenversand', 'Berliner Platz 43', 'München', NULL, '80805', 'Germany');\nINSERT INTO orders VALUES (10624, 'THECR', 4, '1997-08-07', '1997-09-04', '1997-08-19', 2, 94.8000031, 'The Cracker Box', '55 Grizzly Peak Rd.', 'Butte', 'MT', '59801', 'USA');\nINSERT INTO orders VALUES (10625, 'ANATR', 3, '1997-08-08', '1997-09-05', '1997-08-14', 1, 43.9000015, 'Ana Trujillo Emparedados y helados', 'Avda. de la Constitución 2222', 'México D.F.', NULL, '05021', 'Mexico');\nINSERT INTO orders VALUES (10626, 'BERGS', 1, '1997-08-11', '1997-09-08', '1997-08-20', 2, 138.690002, 'Berglunds snabbköp', 'Berguvsvägen  8', 'Luleå', NULL, 'S-958 22', 'Sweden');\nINSERT INTO orders VALUES (10627, 'SAVEA', 8, '1997-08-11', '1997-09-22', '1997-08-21', 3, 107.459999, 'Save-a-lot Markets', '187 Suffolk Ln.', 'Boise', 'ID', '83720', 'USA');\nINSERT INTO orders VALUES (10628, 'BLONP', 4, '1997-08-12', '1997-09-09', '1997-08-20', 3, 30.3600006, 'Blondel père et fils', '24, place Kléber', 'Strasbourg', NULL, '67000', 'France');\nINSERT INTO orders VALUES (10629, 'GODOS', 4, '1997-08-12', '1997-09-09', '1997-08-20', 3, 85.4599991, 'Godos Cocina Típica', 'C/ Romero, 33', 'Sevilla', NULL, '41101', 'Spain');\nINSERT INTO orders VALUES (10630, 'KOENE', 1, '1997-08-13', '1997-09-10', '1997-08-19', 2, 32.3499985, 'Königlich Essen', 'Maubelstr. 90', 'Brandenburg', NULL, '14776', 'Germany');\nINSERT INTO orders VALUES (10631, 'LAMAI', 8, '1997-08-14', '1997-09-11', '1997-08-15', 1, 0.870000005, 'La maison d''Asie', '1 rue Alsace-Lorraine', 'Toulouse', NULL, '31000', 'France');\nINSERT INTO orders VALUES (10632, 'WANDK', 8, '1997-08-14', '1997-09-11', '1997-08-19', 1, 41.3800011, 'Die Wandernde Kuh', 'Adenauerallee 900', 'Stuttgart', NULL, '70563', 'Germany');\nINSERT INTO orders VALUES (10633, 'ERNSH', 7, '1997-08-15', '1997-09-12', '1997-08-18', 3, 477.899994, 'Ernst Handel', 'Kirchgasse 6', 'Graz', NULL, '8010', 'Austria');\nINSERT INTO orders VALUES (10634, 'FOLIG', 4, '1997-08-15', '1997-09-12', '1997-08-21', 3, 487.380005, 'Folies gourmandes', '184, chaussée de Tournai', 'Lille', NULL, '59000', 'France');\nINSERT INTO orders VALUES (10635, 'MAGAA', 8, '1997-08-18', '1997-09-15', '1997-08-21', 3, 47.4599991, 'Magazzini Alimentari Riuniti', 'Via Ludovico il Moro 22', 'Bergamo', NULL, '24100', 'Italy');\nINSERT INTO orders VALUES (10636, 'WARTH', 4, '1997-08-19', '1997-09-16', '1997-08-26', 1, 1.14999998, 'Wartian Herkku', 'Torikatu 38', 'Oulu', NULL, '90110', 'Finland');\nINSERT INTO orders VALUES (10637, 'QUEEN', 6, '1997-08-19', '1997-09-16', '1997-08-26', 1, 201.289993, 'Queen Cozinha', 'Alameda dos Canàrios, 891', 'Sao Paulo', 'SP', '05487-020', 'Brazil');\nINSERT INTO orders VALUES (10638, 'LINOD', 3, '1997-08-20', '1997-09-17', '1997-09-01', 1, 158.440002, 'LINO-Delicateses', 'Ave. 5 de Mayo Porlamar', 'I. de Margarita', 'Nueva Esparta', '4980', 'Venezuela');\nINSERT INTO orders VALUES (10639, 'SANTG', 7, '1997-08-20', '1997-09-17', '1997-08-27', 3, 38.6399994, 'Santé Gourmet', 'Erling Skakkes gate 78', 'Stavern', NULL, '4110', 'Norway');\nINSERT INTO orders VALUES (10640, 'WANDK', 4, '1997-08-21', '1997-09-18', '1997-08-28', 1, 23.5499992, 'Die Wandernde Kuh', 'Adenauerallee 900', 'Stuttgart', NULL, '70563', 'Germany');\nINSERT INTO orders VALUES (10641, 'HILAA', 4, '1997-08-22', '1997-09-19', '1997-08-26', 2, 179.610001, 'HILARION-Abastos', 'Carrera 22 con Ave. Carlos Soublette #8-35', 'San Cristóbal', 'Táchira', '5022', 'Venezuela');\nINSERT INTO orders VALUES (10642, 'SIMOB', 7, '1997-08-22', '1997-09-19', '1997-09-05', 3, 41.8899994, 'Simons bistro', 'Vinbæltet 34', 'Kobenhavn', NULL, '1734', 'Denmark');\nINSERT INTO orders VALUES (10643, 'ALFKI', 6, '1997-08-25', '1997-09-22', '1997-09-02', 1, 29.4599991, 'Alfreds Futterkiste', 'Obere Str. 57', 'Berlin', NULL, '12209', 'Germany');\nINSERT INTO orders VALUES (10644, 'WELLI', 3, '1997-08-25', '1997-09-22', '1997-09-01', 2, 0.140000001, 'Wellington Importadora', 'Rua do Mercado, 12', 'Resende', 'SP', '08737-363', 'Brazil');\nINSERT INTO orders VALUES (10645, 'HANAR', 4, '1997-08-26', '1997-09-23', '1997-09-02', 1, 12.4099998, 'Hanari Carnes', 'Rua do Paço, 67', 'Rio de Janeiro', 'RJ', '05454-876', 'Brazil');\nINSERT INTO orders VALUES (10646, 'HUNGO', 9, '1997-08-27', '1997-10-08', '1997-09-03', 3, 142.330002, 'Hungry Owl All-Night Grocers', '8 Johnstown Road', 'Cork', 'Co. Cork', NULL, 'Ireland');\nINSERT INTO orders VALUES (10647, 'QUEDE', 4, '1997-08-27', '1997-09-10', '1997-09-03', 2, 45.5400009, 'Que Delícia', 'Rua da Panificadora, 12', 'Rio de Janeiro', 'RJ', '02389-673', 'Brazil');\nINSERT INTO orders VALUES (10648, 'RICAR', 5, '1997-08-28', '1997-10-09', '1997-09-09', 2, 14.25, 'Ricardo Adocicados', 'Av. Copacabana, 267', 'Rio de Janeiro', 'RJ', '02389-890', 'Brazil');\nINSERT INTO orders VALUES (10649, 'MAISD', 5, '1997-08-28', '1997-09-25', '1997-08-29', 3, 6.19999981, 'Maison Dewey', 'Rue Joseph-Bens 532', 'Bruxelles', NULL, 'B-1180', 'Belgium');\nINSERT INTO orders VALUES (10650, 'FAMIA', 5, '1997-08-29', '1997-09-26', '1997-09-03', 3, 176.809998, 'Familia Arquibaldo', 'Rua Orós, 92', 'Sao Paulo', 'SP', '05442-030', 'Brazil');\nINSERT INTO orders VALUES (10651, 'WANDK', 8, '1997-09-01', '1997-09-29', '1997-09-11', 2, 20.6000004, 'Die Wandernde Kuh', 'Adenauerallee 900', 'Stuttgart', NULL, '70563', 'Germany');\nINSERT INTO orders VALUES (10652, 'GOURL', 4, '1997-09-01', '1997-09-29', '1997-09-08', 2, 7.13999987, 'Gourmet Lanchonetes', 'Av. Brasil, 442', 'Campinas', 'SP', '04876-786', 'Brazil');\nINSERT INTO orders VALUES (10653, 'FRANK', 1, '1997-09-02', '1997-09-30', '1997-09-19', 1, 93.25, 'Frankenversand', 'Berliner Platz 43', 'München', NULL, '80805', 'Germany');\nINSERT INTO orders VALUES (10654, 'BERGS', 5, '1997-09-02', '1997-09-30', '1997-09-11', 1, 55.2599983, 'Berglunds snabbköp', 'Berguvsvägen  8', 'Luleå', NULL, 'S-958 22', 'Sweden');\nINSERT INTO orders VALUES (10655, 'REGGC', 1, '1997-09-03', '1997-10-01', '1997-09-11', 2, 4.40999985, 'Reggiani Caseifici', 'Strada Provinciale 124', 'Reggio Emilia', NULL, '42100', 'Italy');\nINSERT INTO orders VALUES (10656, 'GREAL', 6, '1997-09-04', '1997-10-02', '1997-09-10', 1, 57.1500015, 'Great Lakes Food Market', '2732 Baker Blvd.', 'Eugene', 'OR', '97403', 'USA');\nINSERT INTO orders VALUES (10657, 'SAVEA', 2, '1997-09-04', '1997-10-02', '1997-09-15', 2, 352.690002, 'Save-a-lot Markets', '187 Suffolk Ln.', 'Boise', 'ID', '83720', 'USA');\nINSERT INTO orders VALUES (10658, 'QUICK', 4, '1997-09-05', '1997-10-03', '1997-09-08', 1, 364.149994, 'QUICK-Stop', 'Taucherstraße 10', 'Cunewalde', NULL, '01307', 'Germany');\nINSERT INTO orders VALUES (10659, 'QUEEN', 7, '1997-09-05', '1997-10-03', '1997-09-10', 2, 105.809998, 'Queen Cozinha', 'Alameda dos Canàrios, 891', 'Sao Paulo', 'SP', '05487-020', 'Brazil');\nINSERT INTO orders VALUES (10660, 'HUNGC', 8, '1997-09-08', '1997-10-06', '1997-10-15', 1, 111.290001, 'Hungry Coyote Import Store', 'City Center Plaza 516 Main St.', 'Elgin', 'OR', '97827', 'USA');\nINSERT INTO orders VALUES (10661, 'HUNGO', 7, '1997-09-09', '1997-10-07', '1997-09-15', 3, 17.5499992, 'Hungry Owl All-Night Grocers', '8 Johnstown Road', 'Cork', 'Co. Cork', NULL, 'Ireland');\nINSERT INTO orders VALUES (10662, 'LONEP', 3, '1997-09-09', '1997-10-07', '1997-09-18', 2, 1.27999997, 'Lonesome Pine Restaurant', '89 Chiaroscuro Rd.', 'Portland', 'OR', '97219', 'USA');\nINSERT INTO orders VALUES (10663, 'BONAP', 2, '1997-09-10', '1997-09-24', '1997-10-03', 2, 113.150002, 'Bon app''', '12, rue des Bouchers', 'Marseille', NULL, '13008', 'France');\nINSERT INTO orders VALUES (10664, 'FURIB', 1, '1997-09-10', '1997-10-08', '1997-09-19', 3, 1.26999998, 'Furia Bacalhau e Frutos do Mar', 'Jardim das rosas n. 32', 'Lisboa', NULL, '1675', 'Portugal');\nINSERT INTO orders VALUES (10665, 'LONEP', 1, '1997-09-11', '1997-10-09', '1997-09-17', 2, 26.3099995, 'Lonesome Pine Restaurant', '89 Chiaroscuro Rd.', 'Portland', 'OR', '97219', 'USA');\nINSERT INTO orders VALUES (10666, 'RICSU', 7, '1997-09-12', '1997-10-10', '1997-09-22', 2, 232.419998, 'Richter Supermarkt', 'Starenweg 5', 'Genève', NULL, '1204', 'Switzerland');\nINSERT INTO orders VALUES (10667, 'ERNSH', 7, '1997-09-12', '1997-10-10', '1997-09-19', 1, 78.0899963, 'Ernst Handel', 'Kirchgasse 6', 'Graz', NULL, '8010', 'Austria');\nINSERT INTO orders VALUES (10668, 'WANDK', 1, '1997-09-15', '1997-10-13', '1997-09-23', 2, 47.2200012, 'Die Wandernde Kuh', 'Adenauerallee 900', 'Stuttgart', NULL, '70563', 'Germany');\nINSERT INTO orders VALUES (10669, 'SIMOB', 2, '1997-09-15', '1997-10-13', '1997-09-22', 1, 24.3899994, 'Simons bistro', 'Vinbæltet 34', 'Kobenhavn', NULL, '1734', 'Denmark');\nINSERT INTO orders VALUES (10670, 'FRANK', 4, '1997-09-16', '1997-10-14', '1997-09-18', 1, 203.479996, 'Frankenversand', 'Berliner Platz 43', 'München', NULL, '80805', 'Germany');\nINSERT INTO orders VALUES (10671, 'FRANR', 1, '1997-09-17', '1997-10-15', '1997-09-24', 1, 30.3400002, 'France restauration', '54, rue Royale', 'Nantes', NULL, '44000', 'France');\nINSERT INTO orders VALUES (10672, 'BERGS', 9, '1997-09-17', '1997-10-01', '1997-09-26', 2, 95.75, 'Berglunds snabbköp', 'Berguvsvägen  8', 'Luleå', NULL, 'S-958 22', 'Sweden');\nINSERT INTO orders VALUES (10673, 'WILMK', 2, '1997-09-18', '1997-10-16', '1997-09-19', 1, 22.7600002, 'Wilman Kala', 'Keskuskatu 45', 'Helsinki', NULL, '21240', 'Finland');\nINSERT INTO orders VALUES (10674, 'ISLAT', 4, '1997-09-18', '1997-10-16', '1997-09-30', 2, 0.899999976, 'Island Trading', 'Garden House Crowther Way', 'Cowes', 'Isle of Wight', 'PO31 7PJ', 'UK');\nINSERT INTO orders VALUES (10675, 'FRANK', 5, '1997-09-19', '1997-10-17', '1997-09-23', 2, 31.8500004, 'Frankenversand', 'Berliner Platz 43', 'München', NULL, '80805', 'Germany');\nINSERT INTO orders VALUES (10676, 'TORTU', 2, '1997-09-22', '1997-10-20', '1997-09-29', 2, 2.00999999, 'Tortuga Restaurante', 'Avda. Azteca 123', 'México D.F.', NULL, '05033', 'Mexico');\nINSERT INTO orders VALUES (10677, 'ANTON', 1, '1997-09-22', '1997-10-20', '1997-09-26', 3, 4.03000021, 'Antonio Moreno Taquería', 'Mataderos  2312', 'México D.F.', NULL, '05023', 'Mexico');\nINSERT INTO orders VALUES (10678, 'SAVEA', 7, '1997-09-23', '1997-10-21', '1997-10-16', 3, 388.980011, 'Save-a-lot Markets', '187 Suffolk Ln.', 'Boise', 'ID', '83720', 'USA');\nINSERT INTO orders VALUES (10679, 'BLONP', 8, '1997-09-23', '1997-10-21', '1997-09-30', 3, 27.9400005, 'Blondel père et fils', '24, place Kléber', 'Strasbourg', NULL, '67000', 'France');\nINSERT INTO orders VALUES (10680, 'OLDWO', 1, '1997-09-24', '1997-10-22', '1997-09-26', 1, 26.6100006, 'Old World Delicatessen', '2743 Bering St.', 'Anchorage', 'AK', '99508', 'USA');\nINSERT INTO orders VALUES (10681, 'GREAL', 3, '1997-09-25', '1997-10-23', '1997-09-30', 3, 76.1299973, 'Great Lakes Food Market', '2732 Baker Blvd.', 'Eugene', 'OR', '97403', 'USA');\nINSERT INTO orders VALUES (10682, 'ANTON', 3, '1997-09-25', '1997-10-23', '1997-10-01', 2, 36.1300011, 'Antonio Moreno Taquería', 'Mataderos  2312', 'México D.F.', NULL, '05023', 'Mexico');\nINSERT INTO orders VALUES (10683, 'DUMON', 2, '1997-09-26', '1997-10-24', '1997-10-01', 1, 4.4000001, 'Du monde entier', '67, rue des Cinquante Otages', 'Nantes', NULL, '44000', 'France');\nINSERT INTO orders VALUES (10684, 'OTTIK', 3, '1997-09-26', '1997-10-24', '1997-09-30', 1, 145.630005, 'Ottilies Käseladen', 'Mehrheimerstr. 369', 'Köln', NULL, '50739', 'Germany');\nINSERT INTO orders VALUES (10685, 'GOURL', 4, '1997-09-29', '1997-10-13', '1997-10-03', 2, 33.75, 'Gourmet Lanchonetes', 'Av. Brasil, 442', 'Campinas', 'SP', '04876-786', 'Brazil');\nINSERT INTO orders VALUES (10686, 'PICCO', 2, '1997-09-30', '1997-10-28', '1997-10-08', 1, 96.5, 'Piccolo und mehr', 'Geislweg 14', 'Salzburg', NULL, '5020', 'Austria');\nINSERT INTO orders VALUES (10687, 'HUNGO', 9, '1997-09-30', '1997-10-28', '1997-10-30', 2, 296.429993, 'Hungry Owl All-Night Grocers', '8 Johnstown Road', 'Cork', 'Co. Cork', NULL, 'Ireland');\nINSERT INTO orders VALUES (10688, 'VAFFE', 4, '1997-10-01', '1997-10-15', '1997-10-07', 2, 299.089996, 'Vaffeljernet', 'Smagsloget 45', 'Århus', NULL, '8200', 'Denmark');\nINSERT INTO orders VALUES (10689, 'BERGS', 1, '1997-10-01', '1997-10-29', '1997-10-07', 2, 13.4200001, 'Berglunds snabbköp', 'Berguvsvägen  8', 'Luleå', NULL, 'S-958 22', 'Sweden');\nINSERT INTO orders VALUES (10690, 'HANAR', 1, '1997-10-02', '1997-10-30', '1997-10-03', 1, 15.8000002, 'Hanari Carnes', 'Rua do Paço, 67', 'Rio de Janeiro', 'RJ', '05454-876', 'Brazil');\nINSERT INTO orders VALUES (10691, 'QUICK', 2, '1997-10-03', '1997-11-14', '1997-10-22', 2, 810.049988, 'QUICK-Stop', 'Taucherstraße 10', 'Cunewalde', NULL, '01307', 'Germany');\nINSERT INTO orders VALUES (10692, 'ALFKI', 4, '1997-10-03', '1997-10-31', '1997-10-13', 2, 61.0200005, 'Alfred''s Futterkiste', 'Obere Str. 57', 'Berlin', NULL, '12209', 'Germany');\nINSERT INTO orders VALUES (10693, 'WHITC', 3, '1997-10-06', '1997-10-20', '1997-10-10', 3, 139.339996, 'White Clover Markets', '1029 - 12th Ave. S.', 'Seattle', 'WA', '98124', 'USA');\nINSERT INTO orders VALUES (10694, 'QUICK', 8, '1997-10-06', '1997-11-03', '1997-10-09', 3, 398.359985, 'QUICK-Stop', 'Taucherstraße 10', 'Cunewalde', NULL, '01307', 'Germany');\nINSERT INTO orders VALUES (10695, 'WILMK', 7, '1997-10-07', '1997-11-18', '1997-10-14', 1, 16.7199993, 'Wilman Kala', 'Keskuskatu 45', 'Helsinki', NULL, '21240', 'Finland');\nINSERT INTO orders VALUES (10696, 'WHITC', 8, '1997-10-08', '1997-11-19', '1997-10-14', 3, 102.550003, 'White Clover Markets', '1029 - 12th Ave. S.', 'Seattle', 'WA', '98124', 'USA');\nINSERT INTO orders VALUES (10697, 'LINOD', 3, '1997-10-08', '1997-11-05', '1997-10-14', 1, 45.5200005, 'LINO-Delicateses', 'Ave. 5 de Mayo Porlamar', 'I. de Margarita', 'Nueva Esparta', '4980', 'Venezuela');\nINSERT INTO orders VALUES (10698, 'ERNSH', 4, '1997-10-09', '1997-11-06', '1997-10-17', 1, 272.470001, 'Ernst Handel', 'Kirchgasse 6', 'Graz', NULL, '8010', 'Austria');\nINSERT INTO orders VALUES (10699, 'MORGK', 3, '1997-10-09', '1997-11-06', '1997-10-13', 3, 0.579999983, 'Morgenstern Gesundkost', 'Heerstr. 22', 'Leipzig', NULL, '04179', 'Germany');\nINSERT INTO orders VALUES (10700, 'SAVEA', 3, '1997-10-10', '1997-11-07', '1997-10-16', 1, 65.0999985, 'Save-a-lot Markets', '187 Suffolk Ln.', 'Boise', 'ID', '83720', 'USA');\nINSERT INTO orders VALUES (10701, 'HUNGO', 6, '1997-10-13', '1997-10-27', '1997-10-15', 3, 220.309998, 'Hungry Owl All-Night Grocers', '8 Johnstown Road', 'Cork', 'Co. Cork', NULL, 'Ireland');\nINSERT INTO orders VALUES (10702, 'ALFKI', 4, '1997-10-13', '1997-11-24', '1997-10-21', 1, 23.9400005, 'Alfred''s Futterkiste', 'Obere Str. 57', 'Berlin', NULL, '12209', 'Germany');\nINSERT INTO orders VALUES (10703, 'FOLKO', 6, '1997-10-14', '1997-11-11', '1997-10-20', 2, 152.300003, 'Folk och fä HB', 'Åkergatan 24', 'Bräcke', NULL, 'S-844 67', 'Sweden');\nINSERT INTO orders VALUES (10704, 'QUEEN', 6, '1997-10-14', '1997-11-11', '1997-11-07', 1, 4.78000021, 'Queen Cozinha', 'Alameda dos Canàrios, 891', 'Sao Paulo', 'SP', '05487-020', 'Brazil');\nINSERT INTO orders VALUES (10705, 'HILAA', 9, '1997-10-15', '1997-11-12', '1997-11-18', 2, 3.51999998, 'HILARION-Abastos', 'Carrera 22 con Ave. Carlos Soublette #8-35', 'San Cristóbal', 'Táchira', '5022', 'Venezuela');\nINSERT INTO orders VALUES (10706, 'OLDWO', 8, '1997-10-16', '1997-11-13', '1997-10-21', 3, 135.630005, 'Old World Delicatessen', '2743 Bering St.', 'Anchorage', 'AK', '99508', 'USA');\nINSERT INTO orders VALUES (10707, 'AROUT', 4, '1997-10-16', '1997-10-30', '1997-10-23', 3, 21.7399998, 'Around the Horn', 'Brook Farm Stratford St. Mary', 'Colchester', 'Essex', 'CO7 6JX', 'UK');\nINSERT INTO orders VALUES (10708, 'THEBI', 6, '1997-10-17', '1997-11-28', '1997-11-05', 2, 2.96000004, 'The Big Cheese', '89 Jefferson Way Suite 2', 'Portland', 'OR', '97201', 'USA');\nINSERT INTO orders VALUES (10709, 'GOURL', 1, '1997-10-17', '1997-11-14', '1997-11-20', 3, 210.800003, 'Gourmet Lanchonetes', 'Av. Brasil, 442', 'Campinas', 'SP', '04876-786', 'Brazil');\nINSERT INTO orders VALUES (10710, 'FRANS', 1, '1997-10-20', '1997-11-17', '1997-10-23', 1, 4.98000002, 'Franchi S.p.A.', 'Via Monte Bianco 34', 'Torino', NULL, '10100', 'Italy');\nINSERT INTO orders VALUES (10711, 'SAVEA', 5, '1997-10-21', '1997-12-02', '1997-10-29', 2, 52.4099998, 'Save-a-lot Markets', '187 Suffolk Ln.', 'Boise', 'ID', '83720', 'USA');\nINSERT INTO orders VALUES (10712, 'HUNGO', 3, '1997-10-21', '1997-11-18', '1997-10-31', 1, 89.9300003, 'Hungry Owl All-Night Grocers', '8 Johnstown Road', 'Cork', 'Co. Cork', NULL, 'Ireland');\nINSERT INTO orders VALUES (10713, 'SAVEA', 1, '1997-10-22', '1997-11-19', '1997-10-24', 1, 167.050003, 'Save-a-lot Markets', '187 Suffolk Ln.', 'Boise', 'ID', '83720', 'USA');\nINSERT INTO orders VALUES (10714, 'SAVEA', 5, '1997-10-22', '1997-11-19', '1997-10-27', 3, 24.4899998, 'Save-a-lot Markets', '187 Suffolk Ln.', 'Boise', 'ID', '83720', 'USA');\nINSERT INTO orders VALUES (10715, 'BONAP', 3, '1997-10-23', '1997-11-06', '1997-10-29', 1, 63.2000008, 'Bon app''', '12, rue des Bouchers', 'Marseille', NULL, '13008', 'France');\nINSERT INTO orders VALUES (10716, 'RANCH', 4, '1997-10-24', '1997-11-21', '1997-10-27', 2, 22.5699997, 'Rancho grande', 'Av. del Libertador 900', 'Buenos Aires', NULL, '1010', 'Argentina');\nINSERT INTO orders VALUES (10717, 'FRANK', 1, '1997-10-24', '1997-11-21', '1997-10-29', 2, 59.25, 'Frankenversand', 'Berliner Platz 43', 'München', NULL, '80805', 'Germany');\nINSERT INTO orders VALUES (10718, 'KOENE', 1, '1997-10-27', '1997-11-24', '1997-10-29', 3, 170.880005, 'Königlich Essen', 'Maubelstr. 90', 'Brandenburg', NULL, '14776', 'Germany');\nINSERT INTO orders VALUES (10719, 'LETSS', 8, '1997-10-27', '1997-11-24', '1997-11-05', 2, 51.4399986, 'Let''s Stop N Shop', '87 Polk St. Suite 5', 'San Francisco', 'CA', '94117', 'USA');\nINSERT INTO orders VALUES (10720, 'QUEDE', 8, '1997-10-28', '1997-11-11', '1997-11-05', 2, 9.52999973, 'Que Delícia', 'Rua da Panificadora, 12', 'Rio de Janeiro', 'RJ', '02389-673', 'Brazil');\nINSERT INTO orders VALUES (10721, 'QUICK', 5, '1997-10-29', '1997-11-26', '1997-10-31', 3, 48.9199982, 'QUICK-Stop', 'Taucherstraße 10', 'Cunewalde', NULL, '01307', 'Germany');\nINSERT INTO orders VALUES (10722, 'SAVEA', 8, '1997-10-29', '1997-12-10', '1997-11-04', 1, 74.5800018, 'Save-a-lot Markets', '187 Suffolk Ln.', 'Boise', 'ID', '83720', 'USA');\nINSERT INTO orders VALUES (10723, 'WHITC', 3, '1997-10-30', '1997-11-27', '1997-11-25', 1, 21.7199993, 'White Clover Markets', '1029 - 12th Ave. S.', 'Seattle', 'WA', '98124', 'USA');\nINSERT INTO orders VALUES (10724, 'MEREP', 8, '1997-10-30', '1997-12-11', '1997-11-05', 2, 57.75, 'Mère Paillarde', '43 rue St. Laurent', 'Montréal', 'Québec', 'H1J 1C3', 'Canada');\nINSERT INTO orders VALUES (10725, 'FAMIA', 4, '1997-10-31', '1997-11-28', '1997-11-05', 3, 10.8299999, 'Familia Arquibaldo', 'Rua Orós, 92', 'Sao Paulo', 'SP', '05442-030', 'Brazil');\nINSERT INTO orders VALUES (10726, 'EASTC', 4, '1997-11-03', '1997-11-17', '1997-12-05', 1, 16.5599995, 'Eastern Connection', '35 King George', 'London', NULL, 'WX3 6FW', 'UK');\nINSERT INTO orders VALUES (10727, 'REGGC', 2, '1997-11-03', '1997-12-01', '1997-12-05', 1, 89.9000015, 'Reggiani Caseifici', 'Strada Provinciale 124', 'Reggio Emilia', NULL, '42100', 'Italy');\nINSERT INTO orders VALUES (10728, 'QUEEN', 4, '1997-11-04', '1997-12-02', '1997-11-11', 2, 58.3300018, 'Queen Cozinha', 'Alameda dos Canàrios, 891', 'Sao Paulo', 'SP', '05487-020', 'Brazil');\nINSERT INTO orders VALUES (10729, 'LINOD', 8, '1997-11-04', '1997-12-16', '1997-11-14', 3, 141.059998, 'LINO-Delicateses', 'Ave. 5 de Mayo Porlamar', 'I. de Margarita', 'Nueva Esparta', '4980', 'Venezuela');\nINSERT INTO orders VALUES (10730, 'BONAP', 5, '1997-11-05', '1997-12-03', '1997-11-14', 1, 20.1200008, 'Bon app''', '12, rue des Bouchers', 'Marseille', NULL, '13008', 'France');\nINSERT INTO orders VALUES (10731, 'CHOPS', 7, '1997-11-06', '1997-12-04', '1997-11-14', 1, 96.6500015, 'Chop-suey Chinese', 'Hauptstr. 31', 'Bern', NULL, '3012', 'Switzerland');\nINSERT INTO orders VALUES (10732, 'BONAP', 3, '1997-11-06', '1997-12-04', '1997-11-07', 1, 16.9699993, 'Bon app''', '12, rue des Bouchers', 'Marseille', NULL, '13008', 'France');\nINSERT INTO orders VALUES (10733, 'BERGS', 1, '1997-11-07', '1997-12-05', '1997-11-10', 3, 110.110001, 'Berglunds snabbköp', 'Berguvsvägen  8', 'Luleå', NULL, 'S-958 22', 'Sweden');\nINSERT INTO orders VALUES (10734, 'GOURL', 2, '1997-11-07', '1997-12-05', '1997-11-12', 3, 1.63, 'Gourmet Lanchonetes', 'Av. Brasil, 442', 'Campinas', 'SP', '04876-786', 'Brazil');\nINSERT INTO orders VALUES (10735, 'LETSS', 6, '1997-11-10', '1997-12-08', '1997-11-21', 2, 45.9700012, 'Let''s Stop N Shop', '87 Polk St. Suite 5', 'San Francisco', 'CA', '94117', 'USA');\nINSERT INTO orders VALUES (10736, 'HUNGO', 9, '1997-11-11', '1997-12-09', '1997-11-21', 2, 44.0999985, 'Hungry Owl All-Night Grocers', '8 Johnstown Road', 'Cork', 'Co. Cork', NULL, 'Ireland');\nINSERT INTO orders VALUES (10737, 'VINET', 2, '1997-11-11', '1997-12-09', '1997-11-18', 2, 7.78999996, 'Vins et alcools Chevalier', '59 rue de l''Abbaye', 'Reims', NULL, '51100', 'France');\nINSERT INTO orders VALUES (10738, 'SPECD', 2, '1997-11-12', '1997-12-10', '1997-11-18', 1, 2.91000009, 'Spécialités du monde', '25, rue Lauriston', 'Paris', NULL, '75016', 'France');\nINSERT INTO orders VALUES (10739, 'VINET', 3, '1997-11-12', '1997-12-10', '1997-11-17', 3, 11.0799999, 'Vins et alcools Chevalier', '59 rue de l''Abbaye', 'Reims', NULL, '51100', 'France');\nINSERT INTO orders VALUES (10740, 'WHITC', 4, '1997-11-13', '1997-12-11', '1997-11-25', 2, 81.8799973, 'White Clover Markets', '1029 - 12th Ave. S.', 'Seattle', 'WA', '98124', 'USA');\nINSERT INTO orders VALUES (10741, 'AROUT', 4, '1997-11-14', '1997-11-28', '1997-11-18', 3, 10.96, 'Around the Horn', 'Brook Farm Stratford St. Mary', 'Colchester', 'Essex', 'CO7 6JX', 'UK');\nINSERT INTO orders VALUES (10742, 'BOTTM', 3, '1997-11-14', '1997-12-12', '1997-11-18', 3, 243.729996, 'Bottom-Dollar Markets', '23 Tsawassen Blvd.', 'Tsawassen', 'BC', 'T2F 8M4', 'Canada');\nINSERT INTO orders VALUES (10743, 'AROUT', 1, '1997-11-17', '1997-12-15', '1997-11-21', 2, 23.7199993, 'Around the Horn', 'Brook Farm Stratford St. Mary', 'Colchester', 'Essex', 'CO7 6JX', 'UK');\nINSERT INTO orders VALUES (10744, 'VAFFE', 6, '1997-11-17', '1997-12-15', '1997-11-24', 1, 69.1900024, 'Vaffeljernet', 'Smagsloget 45', 'Århus', NULL, '8200', 'Denmark');\nINSERT INTO orders VALUES (10745, 'QUICK', 9, '1997-11-18', '1997-12-16', '1997-11-27', 1, 3.51999998, 'QUICK-Stop', 'Taucherstraße 10', 'Cunewalde', NULL, '01307', 'Germany');\nINSERT INTO orders VALUES (10746, 'CHOPS', 1, '1997-11-19', '1997-12-17', '1997-11-21', 3, 31.4300003, 'Chop-suey Chinese', 'Hauptstr. 31', 'Bern', NULL, '3012', 'Switzerland');\nINSERT INTO orders VALUES (10747, 'PICCO', 6, '1997-11-19', '1997-12-17', '1997-11-26', 1, 117.330002, 'Piccolo und mehr', 'Geislweg 14', 'Salzburg', NULL, '5020', 'Austria');\nINSERT INTO orders VALUES (10748, 'SAVEA', 3, '1997-11-20', '1997-12-18', '1997-11-28', 1, 232.550003, 'Save-a-lot Markets', '187 Suffolk Ln.', 'Boise', 'ID', '83720', 'USA');\nINSERT INTO orders VALUES (10749, 'ISLAT', 4, '1997-11-20', '1997-12-18', '1997-12-19', 2, 61.5299988, 'Island Trading', 'Garden House Crowther Way', 'Cowes', 'Isle of Wight', 'PO31 7PJ', 'UK');\nINSERT INTO orders VALUES (10750, 'WARTH', 9, '1997-11-21', '1997-12-19', '1997-11-24', 1, 79.3000031, 'Wartian Herkku', 'Torikatu 38', 'Oulu', NULL, '90110', 'Finland');\nINSERT INTO orders VALUES (10751, 'RICSU', 3, '1997-11-24', '1997-12-22', '1997-12-03', 3, 130.789993, 'Richter Supermarkt', 'Starenweg 5', 'Genève', NULL, '1204', 'Switzerland');\nINSERT INTO orders VALUES (10752, 'NORTS', 2, '1997-11-24', '1997-12-22', '1997-11-28', 3, 1.38999999, 'North/South', 'South House 300 Queensbridge', 'London', NULL, 'SW7 1RZ', 'UK');\nINSERT INTO orders VALUES (10753, 'FRANS', 3, '1997-11-25', '1997-12-23', '1997-11-27', 1, 7.69999981, 'Franchi S.p.A.', 'Via Monte Bianco 34', 'Torino', NULL, '10100', 'Italy');\nINSERT INTO orders VALUES (10754, 'MAGAA', 6, '1997-11-25', '1997-12-23', '1997-11-27', 3, 2.38000011, 'Magazzini Alimentari Riuniti', 'Via Ludovico il Moro 22', 'Bergamo', NULL, '24100', 'Italy');\nINSERT INTO orders VALUES (10755, 'BONAP', 4, '1997-11-26', '1997-12-24', '1997-11-28', 2, 16.7099991, 'Bon app''', '12, rue des Bouchers', 'Marseille', NULL, '13008', 'France');\nINSERT INTO orders VALUES (10756, 'SPLIR', 8, '1997-11-27', '1997-12-25', '1997-12-02', 2, 73.2099991, 'Split Rail Beer & Ale', 'P.O. Box 555', 'Lander', 'WY', '82520', 'USA');\nINSERT INTO orders VALUES (10757, 'SAVEA', 6, '1997-11-27', '1997-12-25', '1997-12-15', 1, 8.18999958, 'Save-a-lot Markets', '187 Suffolk Ln.', 'Boise', 'ID', '83720', 'USA');\nINSERT INTO orders VALUES (10758, 'RICSU', 3, '1997-11-28', '1997-12-26', '1997-12-04', 3, 138.169998, 'Richter Supermarkt', 'Starenweg 5', 'Genève', NULL, '1204', 'Switzerland');\nINSERT INTO orders VALUES (10759, 'ANATR', 3, '1997-11-28', '1997-12-26', '1997-12-12', 3, 11.9899998, 'Ana Trujillo Emparedados y helados', 'Avda. de la Constitución 2222', 'México D.F.', NULL, '05021', 'Mexico');\nINSERT INTO orders VALUES (10760, 'MAISD', 4, '1997-12-01', '1997-12-29', '1997-12-10', 1, 155.639999, 'Maison Dewey', 'Rue Joseph-Bens 532', 'Bruxelles', NULL, 'B-1180', 'Belgium');\nINSERT INTO orders VALUES (10761, 'RATTC', 5, '1997-12-02', '1997-12-30', '1997-12-08', 2, 18.6599998, 'Rattlesnake Canyon Grocery', '2817 Milton Dr.', 'Albuquerque', 'NM', '87110', 'USA');\nINSERT INTO orders VALUES (10762, 'FOLKO', 3, '1997-12-02', '1997-12-30', '1997-12-09', 1, 328.73999, 'Folk och fä HB', 'Åkergatan 24', 'Bräcke', NULL, 'S-844 67', 'Sweden');\nINSERT INTO orders VALUES (10763, 'FOLIG', 3, '1997-12-03', '1997-12-31', '1997-12-08', 3, 37.3499985, 'Folies gourmandes', '184, chaussée de Tournai', 'Lille', NULL, '59000', 'France');\nINSERT INTO orders VALUES (10764, 'ERNSH', 6, '1997-12-03', '1997-12-31', '1997-12-08', 3, 145.449997, 'Ernst Handel', 'Kirchgasse 6', 'Graz', NULL, '8010', 'Austria');\nINSERT INTO orders VALUES (10765, 'QUICK', 3, '1997-12-04', '1998-01-01', '1997-12-09', 3, 42.7400017, 'QUICK-Stop', 'Taucherstraße 10', 'Cunewalde', NULL, '01307', 'Germany');\nINSERT INTO orders VALUES (10766, 'OTTIK', 4, '1997-12-05', '1998-01-02', '1997-12-09', 1, 157.550003, 'Ottilies Käseladen', 'Mehrheimerstr. 369', 'Köln', NULL, '50739', 'Germany');\nINSERT INTO orders VALUES (10767, 'SUPRD', 4, '1997-12-05', '1998-01-02', '1997-12-15', 3, 1.59000003, 'Suprêmes délices', 'Boulevard Tirou, 255', 'Charleroi', NULL, 'B-6000', 'Belgium');\nINSERT INTO orders VALUES (10768, 'AROUT', 3, '1997-12-08', '1998-01-05', '1997-12-15', 2, 146.320007, 'Around the Horn', 'Brook Farm Stratford St. Mary', 'Colchester', 'Essex', 'CO7 6JX', 'UK');\nINSERT INTO orders VALUES (10769, 'VAFFE', 3, '1997-12-08', '1998-01-05', '1997-12-12', 1, 65.0599976, 'Vaffeljernet', 'Smagsloget 45', 'Århus', NULL, '8200', 'Denmark');\nINSERT INTO orders VALUES (10770, 'HANAR', 8, '1997-12-09', '1998-01-06', '1997-12-17', 3, 5.32000017, 'Hanari Carnes', 'Rua do Paço, 67', 'Rio de Janeiro', 'RJ', '05454-876', 'Brazil');\nINSERT INTO orders VALUES (10771, 'ERNSH', 9, '1997-12-10', '1998-01-07', '1998-01-02', 2, 11.1899996, 'Ernst Handel', 'Kirchgasse 6', 'Graz', NULL, '8010', 'Austria');\nINSERT INTO orders VALUES (10772, 'LEHMS', 3, '1997-12-10', '1998-01-07', '1997-12-19', 2, 91.2799988, 'Lehmanns Marktstand', 'Magazinweg 7', 'Frankfurt a.M.', NULL, '60528', 'Germany');\nINSERT INTO orders VALUES (10773, 'ERNSH', 1, '1997-12-11', '1998-01-08', '1997-12-16', 3, 96.4300003, 'Ernst Handel', 'Kirchgasse 6', 'Graz', NULL, '8010', 'Austria');\nINSERT INTO orders VALUES (10774, 'FOLKO', 4, '1997-12-11', '1997-12-25', '1997-12-12', 1, 48.2000008, 'Folk och fä HB', 'Åkergatan 24', 'Bräcke', NULL, 'S-844 67', 'Sweden');\nINSERT INTO orders VALUES (10775, 'THECR', 7, '1997-12-12', '1998-01-09', '1997-12-26', 1, 20.25, 'The Cracker Box', '55 Grizzly Peak Rd.', 'Butte', 'MT', '59801', 'USA');\nINSERT INTO orders VALUES (10776, 'ERNSH', 1, '1997-12-15', '1998-01-12', '1997-12-18', 3, 351.529999, 'Ernst Handel', 'Kirchgasse 6', 'Graz', NULL, '8010', 'Austria');\nINSERT INTO orders VALUES (10777, 'GOURL', 7, '1997-12-15', '1997-12-29', '1998-01-21', 2, 3.00999999, 'Gourmet Lanchonetes', 'Av. Brasil, 442', 'Campinas', 'SP', '04876-786', 'Brazil');\nINSERT INTO orders VALUES (10778, 'BERGS', 3, '1997-12-16', '1998-01-13', '1997-12-24', 1, 6.78999996, 'Berglunds snabbköp', 'Berguvsvägen  8', 'Luleå', NULL, 'S-958 22', 'Sweden');\nINSERT INTO orders VALUES (10779, 'MORGK', 3, '1997-12-16', '1998-01-13', '1998-01-14', 2, 58.1300011, 'Morgenstern Gesundkost', 'Heerstr. 22', 'Leipzig', NULL, '04179', 'Germany');\nINSERT INTO orders VALUES (10780, 'LILAS', 2, '1997-12-16', '1997-12-30', '1997-12-25', 1, 42.1300011, 'LILA-Supermercado', 'Carrera 52 con Ave. Bolívar #65-98 Llano Largo', 'Barquisimeto', 'Lara', '3508', 'Venezuela');\nINSERT INTO orders VALUES (10781, 'WARTH', 2, '1997-12-17', '1998-01-14', '1997-12-19', 3, 73.1600037, 'Wartian Herkku', 'Torikatu 38', 'Oulu', NULL, '90110', 'Finland');\nINSERT INTO orders VALUES (10782, 'CACTU', 9, '1997-12-17', '1998-01-14', '1997-12-22', 3, 1.10000002, 'Cactus Comidas para llevar', 'Cerrito 333', 'Buenos Aires', NULL, '1010', 'Argentina');\nINSERT INTO orders VALUES (10783, 'HANAR', 4, '1997-12-18', '1998-01-15', '1997-12-19', 2, 124.980003, 'Hanari Carnes', 'Rua do Paço, 67', 'Rio de Janeiro', 'RJ', '05454-876', 'Brazil');\nINSERT INTO orders VALUES (10784, 'MAGAA', 4, '1997-12-18', '1998-01-15', '1997-12-22', 3, 70.0899963, 'Magazzini Alimentari Riuniti', 'Via Ludovico il Moro 22', 'Bergamo', NULL, '24100', 'Italy');\nINSERT INTO orders VALUES (10785, 'GROSR', 1, '1997-12-18', '1998-01-15', '1997-12-24', 3, 1.50999999, 'GROSELLA-Restaurante', '5ª Ave. Los Palos Grandes', 'Caracas', 'DF', '1081', 'Venezuela');\nINSERT INTO orders VALUES (10786, 'QUEEN', 8, '1997-12-19', '1998-01-16', '1997-12-23', 1, 110.870003, 'Queen Cozinha', 'Alameda dos Canàrios, 891', 'Sao Paulo', 'SP', '05487-020', 'Brazil');\nINSERT INTO orders VALUES (10787, 'LAMAI', 2, '1997-12-19', '1998-01-02', '1997-12-26', 1, 249.929993, 'La maison d''Asie', '1 rue Alsace-Lorraine', 'Toulouse', NULL, '31000', 'France');\nINSERT INTO orders VALUES (10788, 'QUICK', 1, '1997-12-22', '1998-01-19', '1998-01-19', 2, 42.7000008, 'QUICK-Stop', 'Taucherstraße 10', 'Cunewalde', NULL, '01307', 'Germany');\nINSERT INTO orders VALUES (10789, 'FOLIG', 1, '1997-12-22', '1998-01-19', '1997-12-31', 2, 100.599998, 'Folies gourmandes', '184, chaussée de Tournai', 'Lille', NULL, '59000', 'France');\nINSERT INTO orders VALUES (10790, 'GOURL', 6, '1997-12-22', '1998-01-19', '1997-12-26', 1, 28.2299995, 'Gourmet Lanchonetes', 'Av. Brasil, 442', 'Campinas', 'SP', '04876-786', 'Brazil');\nINSERT INTO orders VALUES (10791, 'FRANK', 6, '1997-12-23', '1998-01-20', '1998-01-01', 2, 16.8500004, 'Frankenversand', 'Berliner Platz 43', 'München', NULL, '80805', 'Germany');\nINSERT INTO orders VALUES (10792, 'WOLZA', 1, '1997-12-23', '1998-01-20', '1997-12-31', 3, 23.7900009, 'Wolski Zajazd', 'ul. Filtrowa 68', 'Warszawa', NULL, '01-012', 'Poland');\nINSERT INTO orders VALUES (10793, 'AROUT', 3, '1997-12-24', '1998-01-21', '1998-01-08', 3, 4.51999998, 'Around the Horn', 'Brook Farm Stratford St. Mary', 'Colchester', 'Essex', 'CO7 6JX', 'UK');\nINSERT INTO orders VALUES (10794, 'QUEDE', 6, '1997-12-24', '1998-01-21', '1998-01-02', 1, 21.4899998, 'Que Delícia', 'Rua da Panificadora, 12', 'Rio de Janeiro', 'RJ', '02389-673', 'Brazil');\nINSERT INTO orders VALUES (10795, 'ERNSH', 8, '1997-12-24', '1998-01-21', '1998-01-20', 2, 126.660004, 'Ernst Handel', 'Kirchgasse 6', 'Graz', NULL, '8010', 'Austria');\nINSERT INTO orders VALUES (10796, 'HILAA', 3, '1997-12-25', '1998-01-22', '1998-01-14', 1, 26.5200005, 'HILARION-Abastos', 'Carrera 22 con Ave. Carlos Soublette #8-35', 'San Cristóbal', 'Táchira', '5022', 'Venezuela');\nINSERT INTO orders VALUES (10797, 'DRACD', 7, '1997-12-25', '1998-01-22', '1998-01-05', 2, 33.3499985, 'Drachenblut Delikatessen', 'Walserweg 21', 'Aachen', NULL, '52066', 'Germany');\nINSERT INTO orders VALUES (10798, 'ISLAT', 2, '1997-12-26', '1998-01-23', '1998-01-05', 1, 2.32999992, 'Island Trading', 'Garden House Crowther Way', 'Cowes', 'Isle of Wight', 'PO31 7PJ', 'UK');\nINSERT INTO orders VALUES (10799, 'KOENE', 9, '1997-12-26', '1998-02-06', '1998-01-05', 3, 30.7600002, 'Königlich Essen', 'Maubelstr. 90', 'Brandenburg', NULL, '14776', 'Germany');\nINSERT INTO orders VALUES (10800, 'SEVES', 1, '1997-12-26', '1998-01-23', '1998-01-05', 3, 137.440002, 'Seven Seas Imports', '90 Wadhurst Rd.', 'London', NULL, 'OX15 4NB', 'UK');\nINSERT INTO orders VALUES (10801, 'BOLID', 4, '1997-12-29', '1998-01-26', '1997-12-31', 2, 97.0899963, 'Bólido Comidas preparadas', 'C/ Araquil, 67', 'Madrid', NULL, '28023', 'Spain');\nINSERT INTO orders VALUES (10802, 'SIMOB', 4, '1997-12-29', '1998-01-26', '1998-01-02', 2, 257.26001, 'Simons bistro', 'Vinbæltet 34', 'Kobenhavn', NULL, '1734', 'Denmark');\nINSERT INTO orders VALUES (10803, 'WELLI', 4, '1997-12-30', '1998-01-27', '1998-01-06', 1, 55.2299995, 'Wellington Importadora', 'Rua do Mercado, 12', 'Resende', 'SP', '08737-363', 'Brazil');\nINSERT INTO orders VALUES (10804, 'SEVES', 6, '1997-12-30', '1998-01-27', '1998-01-07', 2, 27.3299999, 'Seven Seas Imports', '90 Wadhurst Rd.', 'London', NULL, 'OX15 4NB', 'UK');\nINSERT INTO orders VALUES (10805, 'THEBI', 2, '1997-12-30', '1998-01-27', '1998-01-09', 3, 237.339996, 'The Big Cheese', '89 Jefferson Way Suite 2', 'Portland', 'OR', '97201', 'USA');\nINSERT INTO orders VALUES (10806, 'VICTE', 3, '1997-12-31', '1998-01-28', '1998-01-05', 2, 22.1100006, 'Victuailles en stock', '2, rue du Commerce', 'Lyon', NULL, '69004', 'France');\nINSERT INTO orders VALUES (10807, 'FRANS', 4, '1997-12-31', '1998-01-28', '1998-01-30', 1, 1.36000001, 'Franchi S.p.A.', 'Via Monte Bianco 34', 'Torino', NULL, '10100', 'Italy');\nINSERT INTO orders VALUES (10808, 'OLDWO', 2, '1998-01-01', '1998-01-29', '1998-01-09', 3, 45.5299988, 'Old World Delicatessen', '2743 Bering St.', 'Anchorage', 'AK', '99508', 'USA');\nINSERT INTO orders VALUES (10809, 'WELLI', 7, '1998-01-01', '1998-01-29', '1998-01-07', 1, 4.86999989, 'Wellington Importadora', 'Rua do Mercado, 12', 'Resende', 'SP', '08737-363', 'Brazil');\nINSERT INTO orders VALUES (10810, 'LAUGB', 2, '1998-01-01', '1998-01-29', '1998-01-07', 3, 4.32999992, 'Laughing Bacchus Wine Cellars', '2319 Elm St.', 'Vancouver', 'BC', 'V3F 2K1', 'Canada');\nINSERT INTO orders VALUES (10811, 'LINOD', 8, '1998-01-02', '1998-01-30', '1998-01-08', 1, 31.2199993, 'LINO-Delicateses', 'Ave. 5 de Mayo Porlamar', 'I. de Margarita', 'Nueva Esparta', '4980', 'Venezuela');\nINSERT INTO orders VALUES (10812, 'REGGC', 5, '1998-01-02', '1998-01-30', '1998-01-12', 1, 59.7799988, 'Reggiani Caseifici', 'Strada Provinciale 124', 'Reggio Emilia', NULL, '42100', 'Italy');\nINSERT INTO orders VALUES (10813, 'RICAR', 1, '1998-01-05', '1998-02-02', '1998-01-09', 1, 47.3800011, 'Ricardo Adocicados', 'Av. Copacabana, 267', 'Rio de Janeiro', 'RJ', '02389-890', 'Brazil');\nINSERT INTO orders VALUES (10814, 'VICTE', 3, '1998-01-05', '1998-02-02', '1998-01-14', 3, 130.940002, 'Victuailles en stock', '2, rue du Commerce', 'Lyon', NULL, '69004', 'France');\nINSERT INTO orders VALUES (10815, 'SAVEA', 2, '1998-01-05', '1998-02-02', '1998-01-14', 3, 14.6199999, 'Save-a-lot Markets', '187 Suffolk Ln.', 'Boise', 'ID', '83720', 'USA');\nINSERT INTO orders VALUES (10816, 'GREAL', 4, '1998-01-06', '1998-02-03', '1998-02-04', 2, 719.780029, 'Great Lakes Food Market', '2732 Baker Blvd.', 'Eugene', 'OR', '97403', 'USA');\nINSERT INTO orders VALUES (10817, 'KOENE', 3, '1998-01-06', '1998-01-20', '1998-01-13', 2, 306.070007, 'Königlich Essen', 'Maubelstr. 90', 'Brandenburg', NULL, '14776', 'Germany');\nINSERT INTO orders VALUES (10818, 'MAGAA', 7, '1998-01-07', '1998-02-04', '1998-01-12', 3, 65.4800034, 'Magazzini Alimentari Riuniti', 'Via Ludovico il Moro 22', 'Bergamo', NULL, '24100', 'Italy');\nINSERT INTO orders VALUES (10819, 'CACTU', 2, '1998-01-07', '1998-02-04', '1998-01-16', 3, 19.7600002, 'Cactus Comidas para llevar', 'Cerrito 333', 'Buenos Aires', NULL, '1010', 'Argentina');\nINSERT INTO orders VALUES (10820, 'RATTC', 3, '1998-01-07', '1998-02-04', '1998-01-13', 2, 37.5200005, 'Rattlesnake Canyon Grocery', '2817 Milton Dr.', 'Albuquerque', 'NM', '87110', 'USA');\nINSERT INTO orders VALUES (10821, 'SPLIR', 1, '1998-01-08', '1998-02-05', '1998-01-15', 1, 36.6800003, 'Split Rail Beer & Ale', 'P.O. Box 555', 'Lander', 'WY', '82520', 'USA');\nINSERT INTO orders VALUES (10822, 'TRAIH', 6, '1998-01-08', '1998-02-05', '1998-01-16', 3, 7, 'Trail''s Head Gourmet Provisioners', '722 DaVinci Blvd.', 'Kirkland', 'WA', '98034', 'USA');\nINSERT INTO orders VALUES (10823, 'LILAS', 5, '1998-01-09', '1998-02-06', '1998-01-13', 2, 163.970001, 'LILA-Supermercado', 'Carrera 52 con Ave. Bolívar #65-98 Llano Largo', 'Barquisimeto', 'Lara', '3508', 'Venezuela');\nINSERT INTO orders VALUES (10824, 'FOLKO', 8, '1998-01-09', '1998-02-06', '1998-01-30', 1, 1.23000002, 'Folk och fä HB', 'Åkergatan 24', 'Bräcke', NULL, 'S-844 67', 'Sweden');\nINSERT INTO orders VALUES (10825, 'DRACD', 1, '1998-01-09', '1998-02-06', '1998-01-14', 1, 79.25, 'Drachenblut Delikatessen', 'Walserweg 21', 'Aachen', NULL, '52066', 'Germany');\nINSERT INTO orders VALUES (10826, 'BLONP', 6, '1998-01-12', '1998-02-09', '1998-02-06', 1, 7.09000015, 'Blondel père et fils', '24, place Kléber', 'Strasbourg', NULL, '67000', 'France');\nINSERT INTO orders VALUES (10827, 'BONAP', 1, '1998-01-12', '1998-01-26', '1998-02-06', 2, 63.5400009, 'Bon app''', '12, rue des Bouchers', 'Marseille', NULL, '13008', 'France');\nINSERT INTO orders VALUES (10828, 'RANCH', 9, '1998-01-13', '1998-01-27', '1998-02-04', 1, 90.8499985, 'Rancho grande', 'Av. del Libertador 900', 'Buenos Aires', NULL, '1010', 'Argentina');\nINSERT INTO orders VALUES (10829, 'ISLAT', 9, '1998-01-13', '1998-02-10', '1998-01-23', 1, 154.720001, 'Island Trading', 'Garden House Crowther Way', 'Cowes', 'Isle of Wight', 'PO31 7PJ', 'UK');\nINSERT INTO orders VALUES (10830, 'TRADH', 4, '1998-01-13', '1998-02-24', '1998-01-21', 2, 81.8300018, 'Tradiçao Hipermercados', 'Av. Inês de Castro, 414', 'Sao Paulo', 'SP', '05634-030', 'Brazil');\nINSERT INTO orders VALUES (10831, 'SANTG', 3, '1998-01-14', '1998-02-11', '1998-01-23', 2, 72.1900024, 'Santé Gourmet', 'Erling Skakkes gate 78', 'Stavern', NULL, '4110', 'Norway');\nINSERT INTO orders VALUES (10832, 'LAMAI', 2, '1998-01-14', '1998-02-11', '1998-01-19', 2, 43.2599983, 'La maison d''Asie', '1 rue Alsace-Lorraine', 'Toulouse', NULL, '31000', 'France');\nINSERT INTO orders VALUES (10833, 'OTTIK', 6, '1998-01-15', '1998-02-12', '1998-01-23', 2, 71.4899979, 'Ottilies Käseladen', 'Mehrheimerstr. 369', 'Köln', NULL, '50739', 'Germany');\nINSERT INTO orders VALUES (10834, 'TRADH', 1, '1998-01-15', '1998-02-12', '1998-01-19', 3, 29.7800007, 'Tradiçao Hipermercados', 'Av. Inês de Castro, 414', 'Sao Paulo', 'SP', '05634-030', 'Brazil');\nINSERT INTO orders VALUES (10835, 'ALFKI', 1, '1998-01-15', '1998-02-12', '1998-01-21', 3, 69.5299988, 'Alfred''s Futterkiste', 'Obere Str. 57', 'Berlin', NULL, '12209', 'Germany');\nINSERT INTO orders VALUES (10836, 'ERNSH', 7, '1998-01-16', '1998-02-13', '1998-01-21', 1, 411.880005, 'Ernst Handel', 'Kirchgasse 6', 'Graz', NULL, '8010', 'Austria');\nINSERT INTO orders VALUES (10837, 'BERGS', 9, '1998-01-16', '1998-02-13', '1998-01-23', 3, 13.3199997, 'Berglunds snabbköp', 'Berguvsvägen  8', 'Luleå', NULL, 'S-958 22', 'Sweden');\nINSERT INTO orders VALUES (10838, 'LINOD', 3, '1998-01-19', '1998-02-16', '1998-01-23', 3, 59.2799988, 'LINO-Delicateses', 'Ave. 5 de Mayo Porlamar', 'I. de Margarita', 'Nueva Esparta', '4980', 'Venezuela');\nINSERT INTO orders VALUES (10839, 'TRADH', 3, '1998-01-19', '1998-02-16', '1998-01-22', 3, 35.4300003, 'Tradiçao Hipermercados', 'Av. Inês de Castro, 414', 'Sao Paulo', 'SP', '05634-030', 'Brazil');\nINSERT INTO orders VALUES (10840, 'LINOD', 4, '1998-01-19', '1998-03-02', '1998-02-16', 2, 2.71000004, 'LINO-Delicateses', 'Ave. 5 de Mayo Porlamar', 'I. de Margarita', 'Nueva Esparta', '4980', 'Venezuela');\nINSERT INTO orders VALUES (10841, 'SUPRD', 5, '1998-01-20', '1998-02-17', '1998-01-29', 2, 424.299988, 'Suprêmes délices', 'Boulevard Tirou, 255', 'Charleroi', NULL, 'B-6000', 'Belgium');\nINSERT INTO orders VALUES (10842, 'TORTU', 1, '1998-01-20', '1998-02-17', '1998-01-29', 3, 54.4199982, 'Tortuga Restaurante', 'Avda. Azteca 123', 'México D.F.', NULL, '05033', 'Mexico');\nINSERT INTO orders VALUES (10843, 'VICTE', 4, '1998-01-21', '1998-02-18', '1998-01-26', 2, 9.26000023, 'Victuailles en stock', '2, rue du Commerce', 'Lyon', NULL, '69004', 'France');\nINSERT INTO orders VALUES (10844, 'PICCO', 8, '1998-01-21', '1998-02-18', '1998-01-26', 2, 25.2199993, 'Piccolo und mehr', 'Geislweg 14', 'Salzburg', NULL, '5020', 'Austria');\nINSERT INTO orders VALUES (10845, 'QUICK', 8, '1998-01-21', '1998-02-04', '1998-01-30', 1, 212.979996, 'QUICK-Stop', 'Taucherstraße 10', 'Cunewalde', NULL, '01307', 'Germany');\nINSERT INTO orders VALUES (10846, 'SUPRD', 2, '1998-01-22', '1998-03-05', '1998-01-23', 3, 56.4599991, 'Suprêmes délices', 'Boulevard Tirou, 255', 'Charleroi', NULL, 'B-6000', 'Belgium');\nINSERT INTO orders VALUES (10847, 'SAVEA', 4, '1998-01-22', '1998-02-05', '1998-02-10', 3, 487.570007, 'Save-a-lot Markets', '187 Suffolk Ln.', 'Boise', 'ID', '83720', 'USA');\nINSERT INTO orders VALUES (10848, 'CONSH', 7, '1998-01-23', '1998-02-20', '1998-01-29', 2, 38.2400017, 'Consolidated Holdings', 'Berkeley Gardens 12  Brewery', 'London', NULL, 'WX1 6LT', 'UK');\nINSERT INTO orders VALUES (10849, 'KOENE', 9, '1998-01-23', '1998-02-20', '1998-01-30', 2, 0.560000002, 'Königlich Essen', 'Maubelstr. 90', 'Brandenburg', NULL, '14776', 'Germany');\nINSERT INTO orders VALUES (10850, 'VICTE', 1, '1998-01-23', '1998-03-06', '1998-01-30', 1, 49.1899986, 'Victuailles en stock', '2, rue du Commerce', 'Lyon', NULL, '69004', 'France');\nINSERT INTO orders VALUES (10851, 'RICAR', 5, '1998-01-26', '1998-02-23', '1998-02-02', 1, 160.550003, 'Ricardo Adocicados', 'Av. Copacabana, 267', 'Rio de Janeiro', 'RJ', '02389-890', 'Brazil');\nINSERT INTO orders VALUES (10852, 'RATTC', 8, '1998-01-26', '1998-02-09', '1998-01-30', 1, 174.050003, 'Rattlesnake Canyon Grocery', '2817 Milton Dr.', 'Albuquerque', 'NM', '87110', 'USA');\nINSERT INTO orders VALUES (10853, 'BLAUS', 9, '1998-01-27', '1998-02-24', '1998-02-03', 2, 53.8300018, 'Blauer See Delikatessen', 'Forsterstr. 57', 'Mannheim', NULL, '68306', 'Germany');\nINSERT INTO orders VALUES (10854, 'ERNSH', 3, '1998-01-27', '1998-02-24', '1998-02-05', 2, 100.220001, 'Ernst Handel', 'Kirchgasse 6', 'Graz', NULL, '8010', 'Austria');\nINSERT INTO orders VALUES (10855, 'OLDWO', 3, '1998-01-27', '1998-02-24', '1998-02-04', 1, 170.970001, 'Old World Delicatessen', '2743 Bering St.', 'Anchorage', 'AK', '99508', 'USA');\nINSERT INTO orders VALUES (10856, 'ANTON', 3, '1998-01-28', '1998-02-25', '1998-02-10', 2, 58.4300003, 'Antonio Moreno Taquería', 'Mataderos  2312', 'México D.F.', NULL, '05023', 'Mexico');\nINSERT INTO orders VALUES (10857, 'BERGS', 8, '1998-01-28', '1998-02-25', '1998-02-06', 2, 188.850006, 'Berglunds snabbköp', 'Berguvsvägen  8', 'Luleå', NULL, 'S-958 22', 'Sweden');\nINSERT INTO orders VALUES (10858, 'LACOR', 2, '1998-01-29', '1998-02-26', '1998-02-03', 1, 52.5099983, 'La corne d''abondance', '67, avenue de l''Europe', 'Versailles', NULL, '78000', 'France');\nINSERT INTO orders VALUES (10859, 'FRANK', 1, '1998-01-29', '1998-02-26', '1998-02-02', 2, 76.0999985, 'Frankenversand', 'Berliner Platz 43', 'München', NULL, '80805', 'Germany');\nINSERT INTO orders VALUES (10860, 'FRANR', 3, '1998-01-29', '1998-02-26', '1998-02-04', 3, 19.2600002, 'France restauration', '54, rue Royale', 'Nantes', NULL, '44000', 'France');\nINSERT INTO orders VALUES (10861, 'WHITC', 4, '1998-01-30', '1998-02-27', '1998-02-17', 2, 14.9300003, 'White Clover Markets', '1029 - 12th Ave. S.', 'Seattle', 'WA', '98124', 'USA');\nINSERT INTO orders VALUES (10862, 'LEHMS', 8, '1998-01-30', '1998-03-13', '1998-02-02', 2, 53.2299995, 'Lehmanns Marktstand', 'Magazinweg 7', 'Frankfurt a.M.', NULL, '60528', 'Germany');\nINSERT INTO orders VALUES (10863, 'HILAA', 4, '1998-02-02', '1998-03-02', '1998-02-17', 2, 30.2600002, 'HILARION-Abastos', 'Carrera 22 con Ave. Carlos Soublette #8-35', 'San Cristóbal', 'Táchira', '5022', 'Venezuela');\nINSERT INTO orders VALUES (10864, 'AROUT', 4, '1998-02-02', '1998-03-02', '1998-02-09', 2, 3.03999996, 'Around the Horn', 'Brook Farm Stratford St. Mary', 'Colchester', 'Essex', 'CO7 6JX', 'UK');\nINSERT INTO orders VALUES (10865, 'QUICK', 2, '1998-02-02', '1998-02-16', '1998-02-12', 1, 348.140015, 'QUICK-Stop', 'Taucherstraße 10', 'Cunewalde', NULL, '01307', 'Germany');\nINSERT INTO orders VALUES (10866, 'BERGS', 5, '1998-02-03', '1998-03-03', '1998-02-12', 1, 109.110001, 'Berglunds snabbköp', 'Berguvsvägen  8', 'Luleå', NULL, 'S-958 22', 'Sweden');\nINSERT INTO orders VALUES (10867, 'LONEP', 6, '1998-02-03', '1998-03-17', '1998-02-11', 1, 1.92999995, 'Lonesome Pine Restaurant', '89 Chiaroscuro Rd.', 'Portland', 'OR', '97219', 'USA');\nINSERT INTO orders VALUES (10868, 'QUEEN', 7, '1998-02-04', '1998-03-04', '1998-02-23', 2, 191.270004, 'Queen Cozinha', 'Alameda dos Canàrios, 891', 'Sao Paulo', 'SP', '05487-020', 'Brazil');\nINSERT INTO orders VALUES (10869, 'SEVES', 5, '1998-02-04', '1998-03-04', '1998-02-09', 1, 143.279999, 'Seven Seas Imports', '90 Wadhurst Rd.', 'London', NULL, 'OX15 4NB', 'UK');\nINSERT INTO orders VALUES (10870, 'WOLZA', 5, '1998-02-04', '1998-03-04', '1998-02-13', 3, 12.04, 'Wolski Zajazd', 'ul. Filtrowa 68', 'Warszawa', NULL, '01-012', 'Poland');\nINSERT INTO orders VALUES (10871, 'BONAP', 9, '1998-02-05', '1998-03-05', '1998-02-10', 2, 112.269997, 'Bon app''', '12, rue des Bouchers', 'Marseille', NULL, '13008', 'France');\nINSERT INTO orders VALUES (10872, 'GODOS', 5, '1998-02-05', '1998-03-05', '1998-02-09', 2, 175.320007, 'Godos Cocina Típica', 'C/ Romero, 33', 'Sevilla', NULL, '41101', 'Spain');\nINSERT INTO orders VALUES (10873, 'WILMK', 4, '1998-02-06', '1998-03-06', '1998-02-09', 1, 0.819999993, 'Wilman Kala', 'Keskuskatu 45', 'Helsinki', NULL, '21240', 'Finland');\nINSERT INTO orders VALUES (10874, 'GODOS', 5, '1998-02-06', '1998-03-06', '1998-02-11', 2, 19.5799999, 'Godos Cocina Típica', 'C/ Romero, 33', 'Sevilla', NULL, '41101', 'Spain');\nINSERT INTO orders VALUES (10875, 'BERGS', 4, '1998-02-06', '1998-03-06', '1998-03-03', 2, 32.3699989, 'Berglunds snabbköp', 'Berguvsvägen  8', 'Luleå', NULL, 'S-958 22', 'Sweden');\nINSERT INTO orders VALUES (10876, 'BONAP', 7, '1998-02-09', '1998-03-09', '1998-02-12', 3, 60.4199982, 'Bon app''', '12, rue des Bouchers', 'Marseille', NULL, '13008', 'France');\nINSERT INTO orders VALUES (10877, 'RICAR', 1, '1998-02-09', '1998-03-09', '1998-02-19', 1, 38.0600014, 'Ricardo Adocicados', 'Av. Copacabana, 267', 'Rio de Janeiro', 'RJ', '02389-890', 'Brazil');\nINSERT INTO orders VALUES (10878, 'QUICK', 4, '1998-02-10', '1998-03-10', '1998-02-12', 1, 46.6899986, 'QUICK-Stop', 'Taucherstraße 10', 'Cunewalde', NULL, '01307', 'Germany');\nINSERT INTO orders VALUES (10879, 'WILMK', 3, '1998-02-10', '1998-03-10', '1998-02-12', 3, 8.5, 'Wilman Kala', 'Keskuskatu 45', 'Helsinki', NULL, '21240', 'Finland');\nINSERT INTO orders VALUES (10880, 'FOLKO', 7, '1998-02-10', '1998-03-24', '1998-02-18', 1, 88.0100021, 'Folk och fä HB', 'Åkergatan 24', 'Bräcke', NULL, 'S-844 67', 'Sweden');\nINSERT INTO orders VALUES (10881, 'CACTU', 4, '1998-02-11', '1998-03-11', '1998-02-18', 1, 2.83999991, 'Cactus Comidas para llevar', 'Cerrito 333', 'Buenos Aires', NULL, '1010', 'Argentina');\nINSERT INTO orders VALUES (10882, 'SAVEA', 4, '1998-02-11', '1998-03-11', '1998-02-20', 3, 23.1000004, 'Save-a-lot Markets', '187 Suffolk Ln.', 'Boise', 'ID', '83720', 'USA');\nINSERT INTO orders VALUES (10883, 'LONEP', 8, '1998-02-12', '1998-03-12', '1998-02-20', 3, 0.529999971, 'Lonesome Pine Restaurant', '89 Chiaroscuro Rd.', 'Portland', 'OR', '97219', 'USA');\nINSERT INTO orders VALUES (10884, 'LETSS', 4, '1998-02-12', '1998-03-12', '1998-02-13', 2, 90.9700012, 'Let''s Stop N Shop', '87 Polk St. Suite 5', 'San Francisco', 'CA', '94117', 'USA');\nINSERT INTO orders VALUES (10885, 'SUPRD', 6, '1998-02-12', '1998-03-12', '1998-02-18', 3, 5.63999987, 'Suprêmes délices', 'Boulevard Tirou, 255', 'Charleroi', NULL, 'B-6000', 'Belgium');\nINSERT INTO orders VALUES (10886, 'HANAR', 1, '1998-02-13', '1998-03-13', '1998-03-02', 1, 4.98999977, 'Hanari Carnes', 'Rua do Paço, 67', 'Rio de Janeiro', 'RJ', '05454-876', 'Brazil');\nINSERT INTO orders VALUES (10887, 'GALED', 8, '1998-02-13', '1998-03-13', '1998-02-16', 3, 1.25, 'Galería del gastronómo', 'Rambla de Cataluña, 23', 'Barcelona', NULL, '8022', 'Spain');\nINSERT INTO orders VALUES (10888, 'GODOS', 1, '1998-02-16', '1998-03-16', '1998-02-23', 2, 51.8699989, 'Godos Cocina Típica', 'C/ Romero, 33', 'Sevilla', NULL, '41101', 'Spain');\nINSERT INTO orders VALUES (10889, 'RATTC', 9, '1998-02-16', '1998-03-16', '1998-02-23', 3, 280.609985, 'Rattlesnake Canyon Grocery', '2817 Milton Dr.', 'Albuquerque', 'NM', '87110', 'USA');\nINSERT INTO orders VALUES (10890, 'DUMON', 7, '1998-02-16', '1998-03-16', '1998-02-18', 1, 32.7599983, 'Du monde entier', '67, rue des Cinquante Otages', 'Nantes', NULL, '44000', 'France');\nINSERT INTO orders VALUES (10891, 'LEHMS', 7, '1998-02-17', '1998-03-17', '1998-02-19', 2, 20.3700008, 'Lehmanns Marktstand', 'Magazinweg 7', 'Frankfurt a.M.', NULL, '60528', 'Germany');\nINSERT INTO orders VALUES (10892, 'MAISD', 4, '1998-02-17', '1998-03-17', '1998-02-19', 2, 120.269997, 'Maison Dewey', 'Rue Joseph-Bens 532', 'Bruxelles', NULL, 'B-1180', 'Belgium');\nINSERT INTO orders VALUES (10893, 'KOENE', 9, '1998-02-18', '1998-03-18', '1998-02-20', 2, 77.7799988, 'Königlich Essen', 'Maubelstr. 90', 'Brandenburg', NULL, '14776', 'Germany');\nINSERT INTO orders VALUES (10894, 'SAVEA', 1, '1998-02-18', '1998-03-18', '1998-02-20', 1, 116.129997, 'Save-a-lot Markets', '187 Suffolk Ln.', 'Boise', 'ID', '83720', 'USA');\nINSERT INTO orders VALUES (10895, 'ERNSH', 3, '1998-02-18', '1998-03-18', '1998-02-23', 1, 162.75, 'Ernst Handel', 'Kirchgasse 6', 'Graz', NULL, '8010', 'Austria');\nINSERT INTO orders VALUES (10896, 'MAISD', 7, '1998-02-19', '1998-03-19', '1998-02-27', 3, 32.4500008, 'Maison Dewey', 'Rue Joseph-Bens 532', 'Bruxelles', NULL, 'B-1180', 'Belgium');\nINSERT INTO orders VALUES (10897, 'HUNGO', 3, '1998-02-19', '1998-03-19', '1998-02-25', 2, 603.539978, 'Hungry Owl All-Night Grocers', '8 Johnstown Road', 'Cork', 'Co. Cork', NULL, 'Ireland');\nINSERT INTO orders VALUES (10898, 'OCEAN', 4, '1998-02-20', '1998-03-20', '1998-03-06', 2, 1.26999998, 'Océano Atlántico Ltda.', 'Ing. Gustavo Moncada 8585 Piso 20-A', 'Buenos Aires', NULL, '1010', 'Argentina');\nINSERT INTO orders VALUES (10899, 'LILAS', 5, '1998-02-20', '1998-03-20', '1998-02-26', 3, 1.21000004, 'LILA-Supermercado', 'Carrera 52 con Ave. Bolívar #65-98 Llano Largo', 'Barquisimeto', 'Lara', '3508', 'Venezuela');\nINSERT INTO orders VALUES (10900, 'WELLI', 1, '1998-02-20', '1998-03-20', '1998-03-04', 2, 1.65999997, 'Wellington Importadora', 'Rua do Mercado, 12', 'Resende', 'SP', '08737-363', 'Brazil');\nINSERT INTO orders VALUES (10901, 'HILAA', 4, '1998-02-23', '1998-03-23', '1998-02-26', 1, 62.0900002, 'HILARION-Abastos', 'Carrera 22 con Ave. Carlos Soublette #8-35', 'San Cristóbal', 'Táchira', '5022', 'Venezuela');\nINSERT INTO orders VALUES (10902, 'FOLKO', 1, '1998-02-23', '1998-03-23', '1998-03-03', 1, 44.1500015, 'Folk och fä HB', 'Åkergatan 24', 'Bräcke', NULL, 'S-844 67', 'Sweden');\nINSERT INTO orders VALUES (10903, 'HANAR', 3, '1998-02-24', '1998-03-24', '1998-03-04', 3, 36.7099991, 'Hanari Carnes', 'Rua do Paço, 67', 'Rio de Janeiro', 'RJ', '05454-876', 'Brazil');\nINSERT INTO orders VALUES (10904, 'WHITC', 3, '1998-02-24', '1998-03-24', '1998-02-27', 3, 162.949997, 'White Clover Markets', '1029 - 12th Ave. S.', 'Seattle', 'WA', '98124', 'USA');\nINSERT INTO orders VALUES (10905, 'WELLI', 9, '1998-02-24', '1998-03-24', '1998-03-06', 2, 13.7200003, 'Wellington Importadora', 'Rua do Mercado, 12', 'Resende', 'SP', '08737-363', 'Brazil');\nINSERT INTO orders VALUES (10906, 'WOLZA', 4, '1998-02-25', '1998-03-11', '1998-03-03', 3, 26.2900009, 'Wolski Zajazd', 'ul. Filtrowa 68', 'Warszawa', NULL, '01-012', 'Poland');\nINSERT INTO orders VALUES (10907, 'SPECD', 6, '1998-02-25', '1998-03-25', '1998-02-27', 3, 9.18999958, 'Spécialités du monde', '25, rue Lauriston', 'Paris', NULL, '75016', 'France');\nINSERT INTO orders VALUES (10908, 'REGGC', 4, '1998-02-26', '1998-03-26', '1998-03-06', 2, 32.9599991, 'Reggiani Caseifici', 'Strada Provinciale 124', 'Reggio Emilia', NULL, '42100', 'Italy');\nINSERT INTO orders VALUES (10909, 'SANTG', 1, '1998-02-26', '1998-03-26', '1998-03-10', 2, 53.0499992, 'Santé Gourmet', 'Erling Skakkes gate 78', 'Stavern', NULL, '4110', 'Norway');\nINSERT INTO orders VALUES (10910, 'WILMK', 1, '1998-02-26', '1998-03-26', '1998-03-04', 3, 38.1100006, 'Wilman Kala', 'Keskuskatu 45', 'Helsinki', NULL, '21240', 'Finland');\nINSERT INTO orders VALUES (10911, 'GODOS', 3, '1998-02-26', '1998-03-26', '1998-03-05', 1, 38.1899986, 'Godos Cocina Típica', 'C/ Romero, 33', 'Sevilla', NULL, '41101', 'Spain');\nINSERT INTO orders VALUES (10912, 'HUNGO', 2, '1998-02-26', '1998-03-26', '1998-03-18', 2, 580.909973, 'Hungry Owl All-Night Grocers', '8 Johnstown Road', 'Cork', 'Co. Cork', NULL, 'Ireland');\nINSERT INTO orders VALUES (10913, 'QUEEN', 4, '1998-02-26', '1998-03-26', '1998-03-04', 1, 33.0499992, 'Queen Cozinha', 'Alameda dos Canàrios, 891', 'Sao Paulo', 'SP', '05487-020', 'Brazil');\nINSERT INTO orders VALUES (10914, 'QUEEN', 6, '1998-02-27', '1998-03-27', '1998-03-02', 1, 21.1900005, 'Queen Cozinha', 'Alameda dos Canàrios, 891', 'Sao Paulo', 'SP', '05487-020', 'Brazil');\nINSERT INTO orders VALUES (10915, 'TORTU', 2, '1998-02-27', '1998-03-27', '1998-03-02', 2, 3.50999999, 'Tortuga Restaurante', 'Avda. Azteca 123', 'México D.F.', NULL, '05033', 'Mexico');\nINSERT INTO orders VALUES (10916, 'RANCH', 1, '1998-02-27', '1998-03-27', '1998-03-09', 2, 63.7700005, 'Rancho grande', 'Av. del Libertador 900', 'Buenos Aires', NULL, '1010', 'Argentina');\nINSERT INTO orders VALUES (10917, 'ROMEY', 4, '1998-03-02', '1998-03-30', '1998-03-11', 2, 8.28999996, 'Romero y tomillo', 'Gran Vía, 1', 'Madrid', NULL, '28001', 'Spain');\nINSERT INTO orders VALUES (10918, 'BOTTM', 3, '1998-03-02', '1998-03-30', '1998-03-11', 3, 48.8300018, 'Bottom-Dollar Markets', '23 Tsawassen Blvd.', 'Tsawassen', 'BC', 'T2F 8M4', 'Canada');\nINSERT INTO orders VALUES (10919, 'LINOD', 2, '1998-03-02', '1998-03-30', '1998-03-04', 2, 19.7999992, 'LINO-Delicateses', 'Ave. 5 de Mayo Porlamar', 'I. de Margarita', 'Nueva Esparta', '4980', 'Venezuela');\nINSERT INTO orders VALUES (10920, 'AROUT', 4, '1998-03-03', '1998-03-31', '1998-03-09', 2, 29.6100006, 'Around the Horn', 'Brook Farm Stratford St. Mary', 'Colchester', 'Essex', 'CO7 6JX', 'UK');\nINSERT INTO orders VALUES (10921, 'VAFFE', 1, '1998-03-03', '1998-04-14', '1998-03-09', 1, 176.479996, 'Vaffeljernet', 'Smagsloget 45', 'Århus', NULL, '8200', 'Denmark');\nINSERT INTO orders VALUES (10922, 'HANAR', 5, '1998-03-03', '1998-03-31', '1998-03-05', 3, 62.7400017, 'Hanari Carnes', 'Rua do Paço, 67', 'Rio de Janeiro', 'RJ', '05454-876', 'Brazil');\nINSERT INTO orders VALUES (10923, 'LAMAI', 7, '1998-03-03', '1998-04-14', '1998-03-13', 3, 68.2600021, 'La maison d''Asie', '1 rue Alsace-Lorraine', 'Toulouse', NULL, '31000', 'France');\nINSERT INTO orders VALUES (10924, 'BERGS', 3, '1998-03-04', '1998-04-01', '1998-04-08', 2, 151.520004, 'Berglunds snabbköp', 'Berguvsvägen  8', 'Luleå', NULL, 'S-958 22', 'Sweden');\nINSERT INTO orders VALUES (10925, 'HANAR', 3, '1998-03-04', '1998-04-01', '1998-03-13', 1, 2.26999998, 'Hanari Carnes', 'Rua do Paço, 67', 'Rio de Janeiro', 'RJ', '05454-876', 'Brazil');\nINSERT INTO orders VALUES (10926, 'ANATR', 4, '1998-03-04', '1998-04-01', '1998-03-11', 3, 39.9199982, 'Ana Trujillo Emparedados y helados', 'Avda. de la Constitución 2222', 'México D.F.', NULL, '05021', 'Mexico');\nINSERT INTO orders VALUES (10927, 'LACOR', 4, '1998-03-05', '1998-04-02', '1998-04-08', 1, 19.7900009, 'La corne d''abondance', '67, avenue de l''Europe', 'Versailles', NULL, '78000', 'France');\nINSERT INTO orders VALUES (10928, 'GALED', 1, '1998-03-05', '1998-04-02', '1998-03-18', 1, 1.36000001, 'Galería del gastronómo', 'Rambla de Cataluña, 23', 'Barcelona', NULL, '8022', 'Spain');\nINSERT INTO orders VALUES (10929, 'FRANK', 6, '1998-03-05', '1998-04-02', '1998-03-12', 1, 33.9300003, 'Frankenversand', 'Berliner Platz 43', 'München', NULL, '80805', 'Germany');\nINSERT INTO orders VALUES (10930, 'SUPRD', 4, '1998-03-06', '1998-04-17', '1998-03-18', 3, 15.5500002, 'Suprêmes délices', 'Boulevard Tirou, 255', 'Charleroi', NULL, 'B-6000', 'Belgium');\nINSERT INTO orders VALUES (10931, 'RICSU', 4, '1998-03-06', '1998-03-20', '1998-03-19', 2, 13.6000004, 'Richter Supermarkt', 'Starenweg 5', 'Genève', NULL, '1204', 'Switzerland');\nINSERT INTO orders VALUES (10932, 'BONAP', 8, '1998-03-06', '1998-04-03', '1998-03-24', 1, 134.639999, 'Bon app''', '12, rue des Bouchers', 'Marseille', NULL, '13008', 'France');\nINSERT INTO orders VALUES (10933, 'ISLAT', 6, '1998-03-06', '1998-04-03', '1998-03-16', 3, 54.1500015, 'Island Trading', 'Garden House Crowther Way', 'Cowes', 'Isle of Wight', 'PO31 7PJ', 'UK');\nINSERT INTO orders VALUES (10934, 'LEHMS', 3, '1998-03-09', '1998-04-06', '1998-03-12', 3, 32.0099983, 'Lehmanns Marktstand', 'Magazinweg 7', 'Frankfurt a.M.', NULL, '60528', 'Germany');\nINSERT INTO orders VALUES (10935, 'WELLI', 4, '1998-03-09', '1998-04-06', '1998-03-18', 3, 47.5900002, 'Wellington Importadora', 'Rua do Mercado, 12', 'Resende', 'SP', '08737-363', 'Brazil');\nINSERT INTO orders VALUES (10936, 'GREAL', 3, '1998-03-09', '1998-04-06', '1998-03-18', 2, 33.6800003, 'Great Lakes Food Market', '2732 Baker Blvd.', 'Eugene', 'OR', '97403', 'USA');\nINSERT INTO orders VALUES (10937, 'CACTU', 7, '1998-03-10', '1998-03-24', '1998-03-13', 3, 31.5100002, 'Cactus Comidas para llevar', 'Cerrito 333', 'Buenos Aires', NULL, '1010', 'Argentina');\nINSERT INTO orders VALUES (10938, 'QUICK', 3, '1998-03-10', '1998-04-07', '1998-03-16', 2, 31.8899994, 'QUICK-Stop', 'Taucherstraße 10', 'Cunewalde', NULL, '01307', 'Germany');\nINSERT INTO orders VALUES (10939, 'MAGAA', 2, '1998-03-10', '1998-04-07', '1998-03-13', 2, 76.3300018, 'Magazzini Alimentari Riuniti', 'Via Ludovico il Moro 22', 'Bergamo', NULL, '24100', 'Italy');\nINSERT INTO orders VALUES (10940, 'BONAP', 8, '1998-03-11', '1998-04-08', '1998-03-23', 3, 19.7700005, 'Bon app''', '12, rue des Bouchers', 'Marseille', NULL, '13008', 'France');\nINSERT INTO orders VALUES (10941, 'SAVEA', 7, '1998-03-11', '1998-04-08', '1998-03-20', 2, 400.809998, 'Save-a-lot Markets', '187 Suffolk Ln.', 'Boise', 'ID', '83720', 'USA');\nINSERT INTO orders VALUES (10942, 'REGGC', 9, '1998-03-11', '1998-04-08', '1998-03-18', 3, 17.9500008, 'Reggiani Caseifici', 'Strada Provinciale 124', 'Reggio Emilia', NULL, '42100', 'Italy');\nINSERT INTO orders VALUES (10943, 'BSBEV', 4, '1998-03-11', '1998-04-08', '1998-03-19', 2, 2.17000008, 'B''s Beverages', 'Fauntleroy Circus', 'London', NULL, 'EC2 5NT', 'UK');\nINSERT INTO orders VALUES (10944, 'BOTTM', 6, '1998-03-12', '1998-03-26', '1998-03-13', 3, 52.9199982, 'Bottom-Dollar Markets', '23 Tsawassen Blvd.', 'Tsawassen', 'BC', 'T2F 8M4', 'Canada');\nINSERT INTO orders VALUES (10945, 'MORGK', 4, '1998-03-12', '1998-04-09', '1998-03-18', 1, 10.2200003, 'Morgenstern Gesundkost', 'Heerstr. 22', 'Leipzig', NULL, '04179', 'Germany');\nINSERT INTO orders VALUES (10946, 'VAFFE', 1, '1998-03-12', '1998-04-09', '1998-03-19', 2, 27.2000008, 'Vaffeljernet', 'Smagsloget 45', 'Århus', NULL, '8200', 'Denmark');\nINSERT INTO orders VALUES (10947, 'BSBEV', 3, '1998-03-13', '1998-04-10', '1998-03-16', 2, 3.25999999, 'B''s Beverages', 'Fauntleroy Circus', 'London', NULL, 'EC2 5NT', 'UK');\nINSERT INTO orders VALUES (10948, 'GODOS', 3, '1998-03-13', '1998-04-10', '1998-03-19', 3, 23.3899994, 'Godos Cocina Típica', 'C/ Romero, 33', 'Sevilla', NULL, '41101', 'Spain');\nINSERT INTO orders VALUES (10949, 'BOTTM', 2, '1998-03-13', '1998-04-10', '1998-03-17', 3, 74.4400024, 'Bottom-Dollar Markets', '23 Tsawassen Blvd.', 'Tsawassen', 'BC', 'T2F 8M4', 'Canada');\nINSERT INTO orders VALUES (10950, 'MAGAA', 1, '1998-03-16', '1998-04-13', '1998-03-23', 2, 2.5, 'Magazzini Alimentari Riuniti', 'Via Ludovico il Moro 22', 'Bergamo', NULL, '24100', 'Italy');\nINSERT INTO orders VALUES (10951, 'RICSU', 9, '1998-03-16', '1998-04-27', '1998-04-07', 2, 30.8500004, 'Richter Supermarkt', 'Starenweg 5', 'Genève', NULL, '1204', 'Switzerland');\nINSERT INTO orders VALUES (10952, 'ALFKI', 1, '1998-03-16', '1998-04-27', '1998-03-24', 1, 40.4199982, 'Alfred''s Futterkiste', 'Obere Str. 57', 'Berlin', NULL, '12209', 'Germany');\nINSERT INTO orders VALUES (10953, 'AROUT', 9, '1998-03-16', '1998-03-30', '1998-03-25', 2, 23.7199993, 'Around the Horn', 'Brook Farm Stratford St. Mary', 'Colchester', 'Essex', 'CO7 6JX', 'UK');\nINSERT INTO orders VALUES (10954, 'LINOD', 5, '1998-03-17', '1998-04-28', '1998-03-20', 1, 27.9099998, 'LINO-Delicateses', 'Ave. 5 de Mayo Porlamar', 'I. de Margarita', 'Nueva Esparta', '4980', 'Venezuela');\nINSERT INTO orders VALUES (10955, 'FOLKO', 8, '1998-03-17', '1998-04-14', '1998-03-20', 2, 3.25999999, 'Folk och fä HB', 'Åkergatan 24', 'Bräcke', NULL, 'S-844 67', 'Sweden');\nINSERT INTO orders VALUES (10956, 'BLAUS', 6, '1998-03-17', '1998-04-28', '1998-03-20', 2, 44.6500015, 'Blauer See Delikatessen', 'Forsterstr. 57', 'Mannheim', NULL, '68306', 'Germany');\nINSERT INTO orders VALUES (10957, 'HILAA', 8, '1998-03-18', '1998-04-15', '1998-03-27', 3, 105.360001, 'HILARION-Abastos', 'Carrera 22 con Ave. Carlos Soublette #8-35', 'San Cristóbal', 'Táchira', '5022', 'Venezuela');\nINSERT INTO orders VALUES (10958, 'OCEAN', 7, '1998-03-18', '1998-04-15', '1998-03-27', 2, 49.5600014, 'Océano Atlántico Ltda.', 'Ing. Gustavo Moncada 8585 Piso 20-A', 'Buenos Aires', NULL, '1010', 'Argentina');\nINSERT INTO orders VALUES (10959, 'GOURL', 6, '1998-03-18', '1998-04-29', '1998-03-23', 2, 4.98000002, 'Gourmet Lanchonetes', 'Av. Brasil, 442', 'Campinas', 'SP', '04876-786', 'Brazil');\nINSERT INTO orders VALUES (10960, 'HILAA', 3, '1998-03-19', '1998-04-02', '1998-04-08', 1, 2.07999992, 'HILARION-Abastos', 'Carrera 22 con Ave. Carlos Soublette #8-35', 'San Cristóbal', 'Táchira', '5022', 'Venezuela');\nINSERT INTO orders VALUES (10961, 'QUEEN', 8, '1998-03-19', '1998-04-16', '1998-03-30', 1, 104.470001, 'Queen Cozinha', 'Alameda dos Canàrios, 891', 'Sao Paulo', 'SP', '05487-020', 'Brazil');\nINSERT INTO orders VALUES (10962, 'QUICK', 8, '1998-03-19', '1998-04-16', '1998-03-23', 2, 275.790009, 'QUICK-Stop', 'Taucherstraße 10', 'Cunewalde', NULL, '01307', 'Germany');\nINSERT INTO orders VALUES (10963, 'FURIB', 9, '1998-03-19', '1998-04-16', '1998-03-26', 3, 2.70000005, 'Furia Bacalhau e Frutos do Mar', 'Jardim das rosas n. 32', 'Lisboa', NULL, '1675', 'Portugal');\nINSERT INTO orders VALUES (10964, 'SPECD', 3, '1998-03-20', '1998-04-17', '1998-03-24', 2, 87.3799973, 'Spécialités du monde', '25, rue Lauriston', 'Paris', NULL, '75016', 'France');\nINSERT INTO orders VALUES (10965, 'OLDWO', 6, '1998-03-20', '1998-04-17', '1998-03-30', 3, 144.380005, 'Old World Delicatessen', '2743 Bering St.', 'Anchorage', 'AK', '99508', 'USA');\nINSERT INTO orders VALUES (10966, 'CHOPS', 4, '1998-03-20', '1998-04-17', '1998-04-08', 1, 27.1900005, 'Chop-suey Chinese', 'Hauptstr. 31', 'Bern', NULL, '3012', 'Switzerland');\nINSERT INTO orders VALUES (10967, 'TOMSP', 2, '1998-03-23', '1998-04-20', '1998-04-02', 2, 62.2200012, 'Toms Spezialitäten', 'Luisenstr. 48', 'Münster', NULL, '44087', 'Germany');\nINSERT INTO orders VALUES (10968, 'ERNSH', 1, '1998-03-23', '1998-04-20', '1998-04-01', 3, 74.5999985, 'Ernst Handel', 'Kirchgasse 6', 'Graz', NULL, '8010', 'Austria');\nINSERT INTO orders VALUES (10969, 'COMMI', 1, '1998-03-23', '1998-04-20', '1998-03-30', 2, 0.209999993, 'Comércio Mineiro', 'Av. dos Lusíadas, 23', 'Sao Paulo', 'SP', '05432-043', 'Brazil');\nINSERT INTO orders VALUES (10970, 'BOLID', 9, '1998-03-24', '1998-04-07', '1998-04-24', 1, 16.1599998, 'Bólido Comidas preparadas', 'C/ Araquil, 67', 'Madrid', NULL, '28023', 'Spain');\nINSERT INTO orders VALUES (10971, 'FRANR', 2, '1998-03-24', '1998-04-21', '1998-04-02', 2, 121.82, 'France restauration', '54, rue Royale', 'Nantes', NULL, '44000', 'France');\nINSERT INTO orders VALUES (10972, 'LACOR', 4, '1998-03-24', '1998-04-21', '1998-03-26', 2, 0.0199999996, 'La corne d''abondance', '67, avenue de l''Europe', 'Versailles', NULL, '78000', 'France');\nINSERT INTO orders VALUES (10973, 'LACOR', 6, '1998-03-24', '1998-04-21', '1998-03-27', 2, 15.1700001, 'La corne d''abondance', '67, avenue de l''Europe', 'Versailles', NULL, '78000', 'France');\nINSERT INTO orders VALUES (10974, 'SPLIR', 3, '1998-03-25', '1998-04-08', '1998-04-03', 3, 12.96, 'Split Rail Beer & Ale', 'P.O. Box 555', 'Lander', 'WY', '82520', 'USA');\nINSERT INTO orders VALUES (10975, 'BOTTM', 1, '1998-03-25', '1998-04-22', '1998-03-27', 3, 32.2700005, 'Bottom-Dollar Markets', '23 Tsawassen Blvd.', 'Tsawassen', 'BC', 'T2F 8M4', 'Canada');\nINSERT INTO orders VALUES (10976, 'HILAA', 1, '1998-03-25', '1998-05-06', '1998-04-03', 1, 37.9700012, 'HILARION-Abastos', 'Carrera 22 con Ave. Carlos Soublette #8-35', 'San Cristóbal', 'Táchira', '5022', 'Venezuela');\nINSERT INTO orders VALUES (10977, 'FOLKO', 8, '1998-03-26', '1998-04-23', '1998-04-10', 3, 208.5, 'Folk och fä HB', 'Åkergatan 24', 'Bräcke', NULL, 'S-844 67', 'Sweden');\nINSERT INTO orders VALUES (10978, 'MAISD', 9, '1998-03-26', '1998-04-23', '1998-04-23', 2, 32.8199997, 'Maison Dewey', 'Rue Joseph-Bens 532', 'Bruxelles', NULL, 'B-1180', 'Belgium');\nINSERT INTO orders VALUES (10979, 'ERNSH', 8, '1998-03-26', '1998-04-23', '1998-03-31', 2, 353.070007, 'Ernst Handel', 'Kirchgasse 6', 'Graz', NULL, '8010', 'Austria');\nINSERT INTO orders VALUES (10980, 'FOLKO', 4, '1998-03-27', '1998-05-08', '1998-04-17', 1, 1.25999999, 'Folk och fä HB', 'Åkergatan 24', 'Bräcke', NULL, 'S-844 67', 'Sweden');\nINSERT INTO orders VALUES (10981, 'HANAR', 1, '1998-03-27', '1998-04-24', '1998-04-02', 2, 193.369995, 'Hanari Carnes', 'Rua do Paço, 67', 'Rio de Janeiro', 'RJ', '05454-876', 'Brazil');\nINSERT INTO orders VALUES (10982, 'BOTTM', 2, '1998-03-27', '1998-04-24', '1998-04-08', 1, 14.0100002, 'Bottom-Dollar Markets', '23 Tsawassen Blvd.', 'Tsawassen', 'BC', 'T2F 8M4', 'Canada');\nINSERT INTO orders VALUES (10983, 'SAVEA', 2, '1998-03-27', '1998-04-24', '1998-04-06', 2, 657.539978, 'Save-a-lot Markets', '187 Suffolk Ln.', 'Boise', 'ID', '83720', 'USA');\nINSERT INTO orders VALUES (10984, 'SAVEA', 1, '1998-03-30', '1998-04-27', '1998-04-03', 3, 211.220001, 'Save-a-lot Markets', '187 Suffolk Ln.', 'Boise', 'ID', '83720', 'USA');\nINSERT INTO orders VALUES (10985, 'HUNGO', 2, '1998-03-30', '1998-04-27', '1998-04-02', 1, 91.5100021, 'Hungry Owl All-Night Grocers', '8 Johnstown Road', 'Cork', 'Co. Cork', NULL, 'Ireland');\nINSERT INTO orders VALUES (10986, 'OCEAN', 8, '1998-03-30', '1998-04-27', '1998-04-21', 2, 217.860001, 'Océano Atlántico Ltda.', 'Ing. Gustavo Moncada 8585 Piso 20-A', 'Buenos Aires', NULL, '1010', 'Argentina');\nINSERT INTO orders VALUES (10987, 'EASTC', 8, '1998-03-31', '1998-04-28', '1998-04-06', 1, 185.479996, 'Eastern Connection', '35 King George', 'London', NULL, 'WX3 6FW', 'UK');\nINSERT INTO orders VALUES (10988, 'RATTC', 3, '1998-03-31', '1998-04-28', '1998-04-10', 2, 61.1399994, 'Rattlesnake Canyon Grocery', '2817 Milton Dr.', 'Albuquerque', 'NM', '87110', 'USA');\nINSERT INTO orders VALUES (10989, 'QUEDE', 2, '1998-03-31', '1998-04-28', '1998-04-02', 1, 34.7599983, 'Que Delícia', 'Rua da Panificadora, 12', 'Rio de Janeiro', 'RJ', '02389-673', 'Brazil');\nINSERT INTO orders VALUES (10990, 'ERNSH', 2, '1998-04-01', '1998-05-13', '1998-04-07', 3, 117.610001, 'Ernst Handel', 'Kirchgasse 6', 'Graz', NULL, '8010', 'Austria');\nINSERT INTO orders VALUES (10991, 'QUICK', 1, '1998-04-01', '1998-04-29', '1998-04-07', 1, 38.5099983, 'QUICK-Stop', 'Taucherstraße 10', 'Cunewalde', NULL, '01307', 'Germany');\nINSERT INTO orders VALUES (10992, 'THEBI', 1, '1998-04-01', '1998-04-29', '1998-04-03', 3, 4.26999998, 'The Big Cheese', '89 Jefferson Way Suite 2', 'Portland', 'OR', '97201', 'USA');\nINSERT INTO orders VALUES (10993, 'FOLKO', 7, '1998-04-01', '1998-04-29', '1998-04-10', 3, 8.81000042, 'Folk och fä HB', 'Åkergatan 24', 'Bräcke', NULL, 'S-844 67', 'Sweden');\nINSERT INTO orders VALUES (10994, 'VAFFE', 2, '1998-04-02', '1998-04-16', '1998-04-09', 3, 65.5299988, 'Vaffeljernet', 'Smagsloget 45', 'Århus', NULL, '8200', 'Denmark');\nINSERT INTO orders VALUES (10995, 'PERIC', 1, '1998-04-02', '1998-04-30', '1998-04-06', 3, 46, 'Pericles Comidas clásicas', 'Calle Dr. Jorge Cash 321', 'México D.F.', NULL, '05033', 'Mexico');\nINSERT INTO orders VALUES (10996, 'QUICK', 4, '1998-04-02', '1998-04-30', '1998-04-10', 2, 1.12, 'QUICK-Stop', 'Taucherstraße 10', 'Cunewalde', NULL, '01307', 'Germany');\nINSERT INTO orders VALUES (10997, 'LILAS', 8, '1998-04-03', '1998-05-15', '1998-04-13', 2, 73.9100037, 'LILA-Supermercado', 'Carrera 52 con Ave. Bolívar #65-98 Llano Largo', 'Barquisimeto', 'Lara', '3508', 'Venezuela');\nINSERT INTO orders VALUES (10998, 'WOLZA', 8, '1998-04-03', '1998-04-17', '1998-04-17', 2, 20.3099995, 'Wolski Zajazd', 'ul. Filtrowa 68', 'Warszawa', NULL, '01-012', 'Poland');\nINSERT INTO orders VALUES (10999, 'OTTIK', 6, '1998-04-03', '1998-05-01', '1998-04-10', 2, 96.3499985, 'Ottilies Käseladen', 'Mehrheimerstr. 369', 'Köln', NULL, '50739', 'Germany');\nINSERT INTO orders VALUES (11000, 'RATTC', 2, '1998-04-06', '1998-05-04', '1998-04-14', 3, 55.1199989, 'Rattlesnake Canyon Grocery', '2817 Milton Dr.', 'Albuquerque', 'NM', '87110', 'USA');\nINSERT INTO orders VALUES (11001, 'FOLKO', 2, '1998-04-06', '1998-05-04', '1998-04-14', 2, 197.300003, 'Folk och fä HB', 'Åkergatan 24', 'Bräcke', NULL, 'S-844 67', 'Sweden');\nINSERT INTO orders VALUES (11002, 'SAVEA', 4, '1998-04-06', '1998-05-04', '1998-04-16', 1, 141.160004, 'Save-a-lot Markets', '187 Suffolk Ln.', 'Boise', 'ID', '83720', 'USA');\nINSERT INTO orders VALUES (11003, 'THECR', 3, '1998-04-06', '1998-05-04', '1998-04-08', 3, 14.9099998, 'The Cracker Box', '55 Grizzly Peak Rd.', 'Butte', 'MT', '59801', 'USA');\nINSERT INTO orders VALUES (11004, 'MAISD', 3, '1998-04-07', '1998-05-05', '1998-04-20', 1, 44.8400002, 'Maison Dewey', 'Rue Joseph-Bens 532', 'Bruxelles', NULL, 'B-1180', 'Belgium');\nINSERT INTO orders VALUES (11005, 'WILMK', 2, '1998-04-07', '1998-05-05', '1998-04-10', 1, 0.75, 'Wilman Kala', 'Keskuskatu 45', 'Helsinki', NULL, '21240', 'Finland');\nINSERT INTO orders VALUES (11006, 'GREAL', 3, '1998-04-07', '1998-05-05', '1998-04-15', 2, 25.1900005, 'Great Lakes Food Market', '2732 Baker Blvd.', 'Eugene', 'OR', '97403', 'USA');\nINSERT INTO orders VALUES (11007, 'PRINI', 8, '1998-04-08', '1998-05-06', '1998-04-13', 2, 202.240005, 'Princesa Isabel Vinhos', 'Estrada da saúde n. 58', 'Lisboa', NULL, '1756', 'Portugal');\nINSERT INTO orders VALUES (11008, 'ERNSH', 7, '1998-04-08', '1998-05-06', NULL, 3, 79.4599991, 'Ernst Handel', 'Kirchgasse 6', 'Graz', NULL, '8010', 'Austria');\nINSERT INTO orders VALUES (11009, 'GODOS', 2, '1998-04-08', '1998-05-06', '1998-04-10', 1, 59.1100006, 'Godos Cocina Típica', 'C/ Romero, 33', 'Sevilla', NULL, '41101', 'Spain');\nINSERT INTO orders VALUES (11010, 'REGGC', 2, '1998-04-09', '1998-05-07', '1998-04-21', 2, 28.7099991, 'Reggiani Caseifici', 'Strada Provinciale 124', 'Reggio Emilia', NULL, '42100', 'Italy');\nINSERT INTO orders VALUES (11011, 'ALFKI', 3, '1998-04-09', '1998-05-07', '1998-04-13', 1, 1.21000004, 'Alfred''s Futterkiste', 'Obere Str. 57', 'Berlin', NULL, '12209', 'Germany');\nINSERT INTO orders VALUES (11012, 'FRANK', 1, '1998-04-09', '1998-04-23', '1998-04-17', 3, 242.949997, 'Frankenversand', 'Berliner Platz 43', 'München', NULL, '80805', 'Germany');\nINSERT INTO orders VALUES (11013, 'ROMEY', 2, '1998-04-09', '1998-05-07', '1998-04-10', 1, 32.9900017, 'Romero y tomillo', 'Gran Vía, 1', 'Madrid', NULL, '28001', 'Spain');\nINSERT INTO orders VALUES (11014, 'LINOD', 2, '1998-04-10', '1998-05-08', '1998-04-15', 3, 23.6000004, 'LINO-Delicateses', 'Ave. 5 de Mayo Porlamar', 'I. de Margarita', 'Nueva Esparta', '4980', 'Venezuela');\nINSERT INTO orders VALUES (11015, 'SANTG', 2, '1998-04-10', '1998-04-24', '1998-04-20', 2, 4.61999989, 'Santé Gourmet', 'Erling Skakkes gate 78', 'Stavern', NULL, '4110', 'Norway');\nINSERT INTO orders VALUES (11016, 'AROUT', 9, '1998-04-10', '1998-05-08', '1998-04-13', 2, 33.7999992, 'Around the Horn', 'Brook Farm Stratford St. Mary', 'Colchester', 'Essex', 'CO7 6JX', 'UK');\nINSERT INTO orders VALUES (11017, 'ERNSH', 9, '1998-04-13', '1998-05-11', '1998-04-20', 2, 754.26001, 'Ernst Handel', 'Kirchgasse 6', 'Graz', NULL, '8010', 'Austria');\nINSERT INTO orders VALUES (11018, 'LONEP', 4, '1998-04-13', '1998-05-11', '1998-04-16', 2, 11.6499996, 'Lonesome Pine Restaurant', '89 Chiaroscuro Rd.', 'Portland', 'OR', '97219', 'USA');\nINSERT INTO orders VALUES (11019, 'RANCH', 6, '1998-04-13', '1998-05-11', NULL, 3, 3.17000008, 'Rancho grande', 'Av. del Libertador 900', 'Buenos Aires', NULL, '1010', 'Argentina');\nINSERT INTO orders VALUES (11020, 'OTTIK', 2, '1998-04-14', '1998-05-12', '1998-04-16', 2, 43.2999992, 'Ottilies Käseladen', 'Mehrheimerstr. 369', 'Köln', NULL, '50739', 'Germany');\nINSERT INTO orders VALUES (11021, 'QUICK', 3, '1998-04-14', '1998-05-12', '1998-04-21', 1, 297.179993, 'QUICK-Stop', 'Taucherstraße 10', 'Cunewalde', NULL, '01307', 'Germany');\nINSERT INTO orders VALUES (11022, 'HANAR', 9, '1998-04-14', '1998-05-12', '1998-05-04', 2, 6.26999998, 'Hanari Carnes', 'Rua do Paço, 67', 'Rio de Janeiro', 'RJ', '05454-876', 'Brazil');\nINSERT INTO orders VALUES (11023, 'BSBEV', 1, '1998-04-14', '1998-04-28', '1998-04-24', 2, 123.830002, 'B''s Beverages', 'Fauntleroy Circus', 'London', NULL, 'EC2 5NT', 'UK');\nINSERT INTO orders VALUES (11024, 'EASTC', 4, '1998-04-15', '1998-05-13', '1998-04-20', 1, 74.3600006, 'Eastern Connection', '35 King George', 'London', NULL, 'WX3 6FW', 'UK');\nINSERT INTO orders VALUES (11025, 'WARTH', 6, '1998-04-15', '1998-05-13', '1998-04-24', 3, 29.1700001, 'Wartian Herkku', 'Torikatu 38', 'Oulu', NULL, '90110', 'Finland');\nINSERT INTO orders VALUES (11026, 'FRANS', 4, '1998-04-15', '1998-05-13', '1998-04-28', 1, 47.0900002, 'Franchi S.p.A.', 'Via Monte Bianco 34', 'Torino', NULL, '10100', 'Italy');\nINSERT INTO orders VALUES (11027, 'BOTTM', 1, '1998-04-16', '1998-05-14', '1998-04-20', 1, 52.5200005, 'Bottom-Dollar Markets', '23 Tsawassen Blvd.', 'Tsawassen', 'BC', 'T2F 8M4', 'Canada');\nINSERT INTO orders VALUES (11028, 'KOENE', 2, '1998-04-16', '1998-05-14', '1998-04-22', 1, 29.5900002, 'Königlich Essen', 'Maubelstr. 90', 'Brandenburg', NULL, '14776', 'Germany');\nINSERT INTO orders VALUES (11029, 'CHOPS', 4, '1998-04-16', '1998-05-14', '1998-04-27', 1, 47.8400002, 'Chop-suey Chinese', 'Hauptstr. 31', 'Bern', NULL, '3012', 'Switzerland');\nINSERT INTO orders VALUES (11030, 'SAVEA', 7, '1998-04-17', '1998-05-15', '1998-04-27', 2, 830.75, 'Save-a-lot Markets', '187 Suffolk Ln.', 'Boise', 'ID', '83720', 'USA');\nINSERT INTO orders VALUES (11031, 'SAVEA', 6, '1998-04-17', '1998-05-15', '1998-04-24', 2, 227.220001, 'Save-a-lot Markets', '187 Suffolk Ln.', 'Boise', 'ID', '83720', 'USA');\nINSERT INTO orders VALUES (11032, 'WHITC', 2, '1998-04-17', '1998-05-15', '1998-04-23', 3, 606.190002, 'White Clover Markets', '1029 - 12th Ave. S.', 'Seattle', 'WA', '98124', 'USA');\nINSERT INTO orders VALUES (11033, 'RICSU', 7, '1998-04-17', '1998-05-15', '1998-04-23', 3, 84.7399979, 'Richter Supermarkt', 'Starenweg 5', 'Genève', NULL, '1204', 'Switzerland');\nINSERT INTO orders VALUES (11034, 'OLDWO', 8, '1998-04-20', '1998-06-01', '1998-04-27', 1, 40.3199997, 'Old World Delicatessen', '2743 Bering St.', 'Anchorage', 'AK', '99508', 'USA');\nINSERT INTO orders VALUES (11035, 'SUPRD', 2, '1998-04-20', '1998-05-18', '1998-04-24', 2, 0.170000002, 'Suprêmes délices', 'Boulevard Tirou, 255', 'Charleroi', NULL, 'B-6000', 'Belgium');\nINSERT INTO orders VALUES (11036, 'DRACD', 8, '1998-04-20', '1998-05-18', '1998-04-22', 3, 149.470001, 'Drachenblut Delikatessen', 'Walserweg 21', 'Aachen', NULL, '52066', 'Germany');\nINSERT INTO orders VALUES (11037, 'GODOS', 7, '1998-04-21', '1998-05-19', '1998-04-27', 1, 3.20000005, 'Godos Cocina Típica', 'C/ Romero, 33', 'Sevilla', NULL, '41101', 'Spain');\nINSERT INTO orders VALUES (11038, 'SUPRD', 1, '1998-04-21', '1998-05-19', '1998-04-30', 2, 29.5900002, 'Suprêmes délices', 'Boulevard Tirou, 255', 'Charleroi', NULL, 'B-6000', 'Belgium');\nINSERT INTO orders VALUES (11039, 'LINOD', 1, '1998-04-21', '1998-05-19', NULL, 2, 65, 'LINO-Delicateses', 'Ave. 5 de Mayo Porlamar', 'I. de Margarita', 'Nueva Esparta', '4980', 'Venezuela');\nINSERT INTO orders VALUES (11040, 'GREAL', 4, '1998-04-22', '1998-05-20', NULL, 3, 18.8400002, 'Great Lakes Food Market', '2732 Baker Blvd.', 'Eugene', 'OR', '97403', 'USA');\nINSERT INTO orders VALUES (11041, 'CHOPS', 3, '1998-04-22', '1998-05-20', '1998-04-28', 2, 48.2200012, 'Chop-suey Chinese', 'Hauptstr. 31', 'Bern', NULL, '3012', 'Switzerland');\nINSERT INTO orders VALUES (11042, 'COMMI', 2, '1998-04-22', '1998-05-06', '1998-05-01', 1, 29.9899998, 'Comércio Mineiro', 'Av. dos Lusíadas, 23', 'Sao Paulo', 'SP', '05432-043', 'Brazil');\nINSERT INTO orders VALUES (11043, 'SPECD', 5, '1998-04-22', '1998-05-20', '1998-04-29', 2, 8.80000019, 'Spécialités du monde', '25, rue Lauriston', 'Paris', NULL, '75016', 'France');\nINSERT INTO orders VALUES (11044, 'WOLZA', 4, '1998-04-23', '1998-05-21', '1998-05-01', 1, 8.72000027, 'Wolski Zajazd', 'ul. Filtrowa 68', 'Warszawa', NULL, '01-012', 'Poland');\nINSERT INTO orders VALUES (11045, 'BOTTM', 6, '1998-04-23', '1998-05-21', NULL, 2, 70.5800018, 'Bottom-Dollar Markets', '23 Tsawassen Blvd.', 'Tsawassen', 'BC', 'T2F 8M4', 'Canada');\nINSERT INTO orders VALUES (11046, 'WANDK', 8, '1998-04-23', '1998-05-21', '1998-04-24', 2, 71.6399994, 'Die Wandernde Kuh', 'Adenauerallee 900', 'Stuttgart', NULL, '70563', 'Germany');\nINSERT INTO orders VALUES (11047, 'EASTC', 7, '1998-04-24', '1998-05-22', '1998-05-01', 3, 46.6199989, 'Eastern Connection', '35 King George', 'London', NULL, 'WX3 6FW', 'UK');\nINSERT INTO orders VALUES (11048, 'BOTTM', 7, '1998-04-24', '1998-05-22', '1998-04-30', 3, 24.1200008, 'Bottom-Dollar Markets', '23 Tsawassen Blvd.', 'Tsawassen', 'BC', 'T2F 8M4', 'Canada');\nINSERT INTO orders VALUES (11049, 'GOURL', 3, '1998-04-24', '1998-05-22', '1998-05-04', 1, 8.34000015, 'Gourmet Lanchonetes', 'Av. Brasil, 442', 'Campinas', 'SP', '04876-786', 'Brazil');\nINSERT INTO orders VALUES (11050, 'FOLKO', 8, '1998-04-27', '1998-05-25', '1998-05-05', 2, 59.4099998, 'Folk och fä HB', 'Åkergatan 24', 'Bräcke', NULL, 'S-844 67', 'Sweden');\nINSERT INTO orders VALUES (11051, 'LAMAI', 7, '1998-04-27', '1998-05-25', NULL, 3, 2.78999996, 'La maison d''Asie', '1 rue Alsace-Lorraine', 'Toulouse', NULL, '31000', 'France');\nINSERT INTO orders VALUES (11052, 'HANAR', 3, '1998-04-27', '1998-05-25', '1998-05-01', 1, 67.2600021, 'Hanari Carnes', 'Rua do Paço, 67', 'Rio de Janeiro', 'RJ', '05454-876', 'Brazil');\nINSERT INTO orders VALUES (11053, 'PICCO', 2, '1998-04-27', '1998-05-25', '1998-04-29', 2, 53.0499992, 'Piccolo und mehr', 'Geislweg 14', 'Salzburg', NULL, '5020', 'Austria');\nINSERT INTO orders VALUES (11054, 'CACTU', 8, '1998-04-28', '1998-05-26', NULL, 1, 0.330000013, 'Cactus Comidas para llevar', 'Cerrito 333', 'Buenos Aires', NULL, '1010', 'Argentina');\nINSERT INTO orders VALUES (11055, 'HILAA', 7, '1998-04-28', '1998-05-26', '1998-05-05', 2, 120.919998, 'HILARION-Abastos', 'Carrera 22 con Ave. Carlos Soublette #8-35', 'San Cristóbal', 'Táchira', '5022', 'Venezuela');\nINSERT INTO orders VALUES (11056, 'EASTC', 8, '1998-04-28', '1998-05-12', '1998-05-01', 2, 278.959991, 'Eastern Connection', '35 King George', 'London', NULL, 'WX3 6FW', 'UK');\nINSERT INTO orders VALUES (11057, 'NORTS', 3, '1998-04-29', '1998-05-27', '1998-05-01', 3, 4.13000011, 'North/South', 'South House 300 Queensbridge', 'London', NULL, 'SW7 1RZ', 'UK');\nINSERT INTO orders VALUES (11058, 'BLAUS', 9, '1998-04-29', '1998-05-27', NULL, 3, 31.1399994, 'Blauer See Delikatessen', 'Forsterstr. 57', 'Mannheim', NULL, '68306', 'Germany');\nINSERT INTO orders VALUES (11059, 'RICAR', 2, '1998-04-29', '1998-06-10', NULL, 2, 85.8000031, 'Ricardo Adocicados', 'Av. Copacabana, 267', 'Rio de Janeiro', 'RJ', '02389-890', 'Brazil');\nINSERT INTO orders VALUES (11060, 'FRANS', 2, '1998-04-30', '1998-05-28', '1998-05-04', 2, 10.9799995, 'Franchi S.p.A.', 'Via Monte Bianco 34', 'Torino', NULL, '10100', 'Italy');\nINSERT INTO orders VALUES (11061, 'GREAL', 4, '1998-04-30', '1998-06-11', NULL, 3, 14.0100002, 'Great Lakes Food Market', '2732 Baker Blvd.', 'Eugene', 'OR', '97403', 'USA');\nINSERT INTO orders VALUES (11062, 'REGGC', 4, '1998-04-30', '1998-05-28', NULL, 2, 29.9300003, 'Reggiani Caseifici', 'Strada Provinciale 124', 'Reggio Emilia', NULL, '42100', 'Italy');\nINSERT INTO orders VALUES (11063, 'HUNGO', 3, '1998-04-30', '1998-05-28', '1998-05-06', 2, 81.7300034, 'Hungry Owl All-Night Grocers', '8 Johnstown Road', 'Cork', 'Co. Cork', NULL, 'Ireland');\nINSERT INTO orders VALUES (11064, 'SAVEA', 1, '1998-05-01', '1998-05-29', '1998-05-04', 1, 30.0900002, 'Save-a-lot Markets', '187 Suffolk Ln.', 'Boise', 'ID', '83720', 'USA');\nINSERT INTO orders VALUES (11065, 'LILAS', 8, '1998-05-01', '1998-05-29', NULL, 1, 12.9099998, 'LILA-Supermercado', 'Carrera 52 con Ave. Bolívar #65-98 Llano Largo', 'Barquisimeto', 'Lara', '3508', 'Venezuela');\nINSERT INTO orders VALUES (11066, 'WHITC', 7, '1998-05-01', '1998-05-29', '1998-05-04', 2, 44.7200012, 'White Clover Markets', '1029 - 12th Ave. S.', 'Seattle', 'WA', '98124', 'USA');\nINSERT INTO orders VALUES (11067, 'DRACD', 1, '1998-05-04', '1998-05-18', '1998-05-06', 2, 7.98000002, 'Drachenblut Delikatessen', 'Walserweg 21', 'Aachen', NULL, '52066', 'Germany');\nINSERT INTO orders VALUES (11068, 'QUEEN', 8, '1998-05-04', '1998-06-01', NULL, 2, 81.75, 'Queen Cozinha', 'Alameda dos Canàrios, 891', 'Sao Paulo', 'SP', '05487-020', 'Brazil');\nINSERT INTO orders VALUES (11069, 'TORTU', 1, '1998-05-04', '1998-06-01', '1998-05-06', 2, 15.6700001, 'Tortuga Restaurante', 'Avda. Azteca 123', 'México D.F.', NULL, '05033', 'Mexico');\nINSERT INTO orders VALUES (11070, 'LEHMS', 2, '1998-05-05', '1998-06-02', NULL, 1, 136, 'Lehmanns Marktstand', 'Magazinweg 7', 'Frankfurt a.M.', NULL, '60528', 'Germany');\nINSERT INTO orders VALUES (11071, 'LILAS', 1, '1998-05-05', '1998-06-02', NULL, 1, 0.930000007, 'LILA-Supermercado', 'Carrera 52 con Ave. Bolívar #65-98 Llano Largo', 'Barquisimeto', 'Lara', '3508', 'Venezuela');\nINSERT INTO orders VALUES (11072, 'ERNSH', 4, '1998-05-05', '1998-06-02', NULL, 2, 258.640015, 'Ernst Handel', 'Kirchgasse 6', 'Graz', NULL, '8010', 'Austria');\nINSERT INTO orders VALUES (11073, 'PERIC', 2, '1998-05-05', '1998-06-02', NULL, 2, 24.9500008, 'Pericles Comidas clásicas', 'Calle Dr. Jorge Cash 321', 'México D.F.', NULL, '05033', 'Mexico');\nINSERT INTO orders VALUES (11074, 'SIMOB', 7, '1998-05-06', '1998-06-03', NULL, 2, 18.4400005, 'Simons bistro', 'Vinbæltet 34', 'Kobenhavn', NULL, '1734', 'Denmark');\nINSERT INTO orders VALUES (11075, 'RICSU', 8, '1998-05-06', '1998-06-03', NULL, 2, 6.19000006, 'Richter Supermarkt', 'Starenweg 5', 'Genève', NULL, '1204', 'Switzerland');\nINSERT INTO orders VALUES (11076, 'BONAP', 4, '1998-05-06', '1998-06-03', NULL, 2, 38.2799988, 'Bon app''', '12, rue des Bouchers', 'Marseille', NULL, '13008', 'France');\nINSERT INTO orders VALUES (11077, 'RATTC', 1, '1998-05-06', '1998-06-03', NULL, 2, 8.52999973, 'Rattlesnake Canyon Grocery', '2817 Milton Dr.', 'Albuquerque', 'NM', '87110', 'USA');\n\n\n--\n-- Data for Name: products; Type: TABLE DATA; Schema: public; Owner: -\n--\n\nINSERT INTO products VALUES (1, 'Chai', 8, 1, '10 boxes x 30 bags', 18, 39, 0, 10, 1);\nINSERT INTO products VALUES (2, 'Chang', 1, 1, '24 - 12 oz bottles', 19, 17, 40, 25, 1);\nINSERT INTO products VALUES (3, 'Aniseed Syrup', 1, 2, '12 - 550 ml bottles', 10, 13, 70, 25, 0);\nINSERT INTO products VALUES (4, 'Chef Anton''s Cajun Seasoning', 2, 2, '48 - 6 oz jars', 22, 53, 0, 0, 0);\nINSERT INTO products VALUES (5, 'Chef Anton''s Gumbo Mix', 2, 2, '36 boxes', 21.3500004, 0, 0, 0, 1);\nINSERT INTO products VALUES (6, 'Grandma''s Boysenberry Spread', 3, 2, '12 - 8 oz jars', 25, 120, 0, 25, 0);\nINSERT INTO products VALUES (7, 'Uncle Bob''s Organic Dried Pears', 3, 7, '12 - 1 lb pkgs.', 30, 15, 0, 10, 0);\nINSERT INTO products VALUES (8, 'Northwoods Cranberry Sauce', 3, 2, '12 - 12 oz jars', 40, 6, 0, 0, 0);\nINSERT INTO products VALUES (9, 'Mishi Kobe Niku', 4, 6, '18 - 500 g pkgs.', 97, 29, 0, 0, 1);\nINSERT INTO products VALUES (10, 'Ikura', 4, 8, '12 - 200 ml jars', 31, 31, 0, 0, 0);\nINSERT INTO products VALUES (11, 'Queso Cabrales', 5, 4, '1 kg pkg.', 21, 22, 30, 30, 0);\nINSERT INTO products VALUES (12, 'Queso Manchego La Pastora', 5, 4, '10 - 500 g pkgs.', 38, 86, 0, 0, 0);\nINSERT INTO products VALUES (13, 'Konbu', 6, 8, '2 kg box', 6, 24, 0, 5, 0);\nINSERT INTO products VALUES (14, 'Tofu', 6, 7, '40 - 100 g pkgs.', 23.25, 35, 0, 0, 0);\nINSERT INTO products VALUES (15, 'Genen Shouyu', 6, 2, '24 - 250 ml bottles', 13, 39, 0, 5, 0);\nINSERT INTO products VALUES (16, 'Pavlova', 7, 3, '32 - 500 g boxes', 17.4500008, 29, 0, 10, 0);\nINSERT INTO products VALUES (17, 'Alice Mutton', 7, 6, '20 - 1 kg tins', 39, 0, 0, 0, 1);\nINSERT INTO products VALUES (18, 'Carnarvon Tigers', 7, 8, '16 kg pkg.', 62.5, 42, 0, 0, 0);\nINSERT INTO products VALUES (19, 'Teatime Chocolate Biscuits', 8, 3, '10 boxes x 12 pieces', 9.19999981, 25, 0, 5, 0);\nINSERT INTO products VALUES (20, 'Sir Rodney''s Marmalade', 8, 3, '30 gift boxes', 81, 40, 0, 0, 0);\nINSERT INTO products VALUES (21, 'Sir Rodney''s Scones', 8, 3, '24 pkgs. x 4 pieces', 10, 3, 40, 5, 0);\nINSERT INTO products VALUES (22, 'Gustaf''s Knäckebröd', 9, 5, '24 - 500 g pkgs.', 21, 104, 0, 25, 0);\nINSERT INTO products VALUES (23, 'Tunnbröd', 9, 5, '12 - 250 g pkgs.', 9, 61, 0, 25, 0);\nINSERT INTO products VALUES (24, 'Guaraná Fantástica', 10, 1, '12 - 355 ml cans', 4.5, 20, 0, 0, 1);\nINSERT INTO products VALUES (25, 'NuNuCa Nuß-Nougat-Creme', 11, 3, '20 - 450 g glasses', 14, 76, 0, 30, 0);\nINSERT INTO products VALUES (26, 'Gumbär Gummibärchen', 11, 3, '100 - 250 g bags', 31.2299995, 15, 0, 0, 0);\nINSERT INTO products VALUES (27, 'Schoggi Schokolade', 11, 3, '100 - 100 g pieces', 43.9000015, 49, 0, 30, 0);\nINSERT INTO products VALUES (28, 'Rössle Sauerkraut', 12, 7, '25 - 825 g cans', 45.5999985, 26, 0, 0, 1);\nINSERT INTO products VALUES (29, 'Thüringer Rostbratwurst', 12, 6, '50 bags x 30 sausgs.', 123.790001, 0, 0, 0, 1);\nINSERT INTO products VALUES (30, 'Nord-Ost Matjeshering', 13, 8, '10 - 200 g glasses', 25.8899994, 10, 0, 15, 0);\nINSERT INTO products VALUES (31, 'Gorgonzola Telino', 14, 4, '12 - 100 g pkgs', 12.5, 0, 70, 20, 0);\nINSERT INTO products VALUES (32, 'Mascarpone Fabioli', 14, 4, '24 - 200 g pkgs.', 32, 9, 40, 25, 0);\nINSERT INTO products VALUES (33, 'Geitost', 15, 4, '500 g', 2.5, 112, 0, 20, 0);\nINSERT INTO products VALUES (34, 'Sasquatch Ale', 16, 1, '24 - 12 oz bottles', 14, 111, 0, 15, 0);\nINSERT INTO products VALUES (35, 'Steeleye Stout', 16, 1, '24 - 12 oz bottles', 18, 20, 0, 15, 0);\nINSERT INTO products VALUES (36, 'Inlagd Sill', 17, 8, '24 - 250 g  jars', 19, 112, 0, 20, 0);\nINSERT INTO products VALUES (37, 'Gravad lax', 17, 8, '12 - 500 g pkgs.', 26, 11, 50, 25, 0);\nINSERT INTO products VALUES (38, 'Côte de Blaye', 18, 1, '12 - 75 cl bottles', 263.5, 17, 0, 15, 0);\nINSERT INTO products VALUES (39, 'Chartreuse verte', 18, 1, '750 cc per bottle', 18, 69, 0, 5, 0);\nINSERT INTO products VALUES (40, 'Boston Crab Meat', 19, 8, '24 - 4 oz tins', 18.3999996, 123, 0, 30, 0);\nINSERT INTO products VALUES (41, 'Jack''s New England Clam Chowder', 19, 8, '12 - 12 oz cans', 9.64999962, 85, 0, 10, 0);\nINSERT INTO products VALUES (42, 'Singaporean Hokkien Fried Mee', 20, 5, '32 - 1 kg pkgs.', 14, 26, 0, 0, 1);\nINSERT INTO products VALUES (43, 'Ipoh Coffee', 20, 1, '16 - 500 g tins', 46, 17, 10, 25, 0);\nINSERT INTO products VALUES (44, 'Gula Malacca', 20, 2, '20 - 2 kg bags', 19.4500008, 27, 0, 15, 0);\nINSERT INTO products VALUES (45, 'Rogede sild', 21, 8, '1k pkg.', 9.5, 5, 70, 15, 0);\nINSERT INTO products VALUES (46, 'Spegesild', 21, 8, '4 - 450 g glasses', 12, 95, 0, 0, 0);\nINSERT INTO products VALUES (47, 'Zaanse koeken', 22, 3, '10 - 4 oz boxes', 9.5, 36, 0, 0, 0);\nINSERT INTO products VALUES (48, 'Chocolade', 22, 3, '10 pkgs.', 12.75, 15, 70, 25, 0);\nINSERT INTO products VALUES (49, 'Maxilaku', 23, 3, '24 - 50 g pkgs.', 20, 10, 60, 15, 0);\nINSERT INTO products VALUES (50, 'Valkoinen suklaa', 23, 3, '12 - 100 g bars', 16.25, 65, 0, 30, 0);\nINSERT INTO products VALUES (51, 'Manjimup Dried Apples', 24, 7, '50 - 300 g pkgs.', 53, 20, 0, 10, 0);\nINSERT INTO products VALUES (52, 'Filo Mix', 24, 5, '16 - 2 kg boxes', 7, 38, 0, 25, 0);\nINSERT INTO products VALUES (53, 'Perth Pasties', 24, 6, '48 pieces', 32.7999992, 0, 0, 0, 1);\nINSERT INTO products VALUES (54, 'Tourtière', 25, 6, '16 pies', 7.44999981, 21, 0, 10, 0);\nINSERT INTO products VALUES (55, 'Pâté chinois', 25, 6, '24 boxes x 2 pies', 24, 115, 0, 20, 0);\nINSERT INTO products VALUES (56, 'Gnocchi di nonna Alice', 26, 5, '24 - 250 g pkgs.', 38, 21, 10, 30, 0);\nINSERT INTO products VALUES (57, 'Ravioli Angelo', 26, 5, '24 - 250 g pkgs.', 19.5, 36, 0, 20, 0);\nINSERT INTO products VALUES (58, 'Escargots de Bourgogne', 27, 8, '24 pieces', 13.25, 62, 0, 20, 0);\nINSERT INTO products VALUES (59, 'Raclette Courdavault', 28, 4, '5 kg pkg.', 55, 79, 0, 0, 0);\nINSERT INTO products VALUES (60, 'Camembert Pierrot', 28, 4, '15 - 300 g rounds', 34, 19, 0, 0, 0);\nINSERT INTO products VALUES (61, 'Sirop d''érable', 29, 2, '24 - 500 ml bottles', 28.5, 113, 0, 25, 0);\nINSERT INTO products VALUES (62, 'Tarte au sucre', 29, 3, '48 pies', 49.2999992, 17, 0, 0, 0);\nINSERT INTO products VALUES (63, 'Vegie-spread', 7, 2, '15 - 625 g jars', 43.9000015, 24, 0, 5, 0);\nINSERT INTO products VALUES (64, 'Wimmers gute Semmelknödel', 12, 5, '20 bags x 4 pieces', 33.25, 22, 80, 30, 0);\nINSERT INTO products VALUES (65, 'Louisiana Fiery Hot Pepper Sauce', 2, 2, '32 - 8 oz bottles', 21.0499992, 76, 0, 0, 0);\nINSERT INTO products VALUES (66, 'Louisiana Hot Spiced Okra', 2, 2, '24 - 8 oz jars', 17, 4, 100, 20, 0);\nINSERT INTO products VALUES (67, 'Laughing Lumberjack Lager', 16, 1, '24 - 12 oz bottles', 14, 52, 0, 10, 0);\nINSERT INTO products VALUES (68, 'Scottish Longbreads', 8, 3, '10 boxes x 8 pieces', 12.5, 6, 10, 15, 0);\nINSERT INTO products VALUES (69, 'Gudbrandsdalsost', 15, 4, '10 kg pkg.', 36, 26, 0, 15, 0);\nINSERT INTO products VALUES (70, 'Outback Lager', 7, 1, '24 - 355 ml bottles', 15, 15, 10, 30, 0);\nINSERT INTO products VALUES (71, 'Flotemysost', 15, 4, '10 - 500 g pkgs.', 21.5, 26, 0, 0, 0);\nINSERT INTO products VALUES (72, 'Mozzarella di Giovanni', 14, 4, '24 - 200 g pkgs.', 34.7999992, 14, 0, 0, 0);\nINSERT INTO products VALUES (73, 'Röd Kaviar', 17, 8, '24 - 150 g jars', 15, 101, 0, 5, 0);\nINSERT INTO products VALUES (74, 'Longlife Tofu', 4, 7, '5 kg pkg.', 10, 4, 20, 5, 0);\nINSERT INTO products VALUES (75, 'Rhönbräu Klosterbier', 12, 1, '24 - 0.5 l bottles', 7.75, 125, 0, 25, 0);\nINSERT INTO products VALUES (76, 'Lakkalikööri', 23, 1, '500 ml', 18, 57, 0, 20, 0);\nINSERT INTO products VALUES (77, 'Original Frankfurter grüne Soße', 12, 2, '12 boxes', 13, 32, 0, 15, 0);\n\n\n--\n-- Data for Name: region; Type: TABLE DATA; Schema: public; Owner: -\n--\n\nINSERT INTO region VALUES (1, 'Eastern');\nINSERT INTO region VALUES (2, 'Western');\nINSERT INTO region VALUES (3, 'Northern');\nINSERT INTO region VALUES (4, 'Southern');\n\n\n--\n-- Data for Name: shippers; Type: TABLE DATA; Schema: public; Owner: -\n--\n\nINSERT INTO shippers VALUES (1, 'Speedy Express', '(503) 555-9831');\nINSERT INTO shippers VALUES (2, 'United Package', '(503) 555-3199');\nINSERT INTO shippers VALUES (3, 'Federal Shipping', '(503) 555-9931');\nINSERT INTO shippers VALUES (4, 'Alliance Shippers', '1-800-222-0451');\nINSERT INTO shippers VALUES (5, 'UPS', '1-800-782-7892');\nINSERT INTO shippers VALUES (6, 'DHL', '1-800-225-5345');\n\n\n\n--\n-- Data for Name: suppliers; Type: TABLE DATA; Schema: public; Owner: -\n--\n\nINSERT INTO suppliers VALUES (1, 'Exotic Liquids', 'Charlotte Cooper', 'Purchasing Manager', '49 Gilbert St.', 'London', NULL, 'EC1 4SD', 'UK', '(171) 555-2222', NULL, NULL);\nINSERT INTO suppliers VALUES (2, 'New Orleans Cajun Delights', 'Shelley Burke', 'Order Administrator', 'P.O. Box 78934', 'New Orleans', 'LA', '70117', 'USA', '(100) 555-4822', NULL, '#CAJUN.HTM#');\nINSERT INTO suppliers VALUES (3, 'Grandma Kelly''s Homestead', 'Regina Murphy', 'Sales Representative', '707 Oxford Rd.', 'Ann Arbor', 'MI', '48104', 'USA', '(313) 555-5735', '(313) 555-3349', NULL);\nINSERT INTO suppliers VALUES (4, 'Tokyo Traders', 'Yoshi Nagase', 'Marketing Manager', '9-8 Sekimai Musashino-shi', 'Tokyo', NULL, '100', 'Japan', '(03) 3555-5011', NULL, NULL);\nINSERT INTO suppliers VALUES (5, 'Cooperativa de Quesos ''Las Cabras''', 'Antonio del Valle Saavedra', 'Export Administrator', 'Calle del Rosal 4', 'Oviedo', 'Asturias', '33007', 'Spain', '(98) 598 76 54', NULL, NULL);\nINSERT INTO suppliers VALUES (6, 'Mayumi''s', 'Mayumi Ohno', 'Marketing Representative', '92 Setsuko Chuo-ku', 'Osaka', NULL, '545', 'Japan', '(06) 431-7877', NULL, 'Mayumi''s (on the World Wide Web)#http://www.microsoft.com/accessdev/sampleapps/mayumi.htm#');\nINSERT INTO suppliers VALUES (7, 'Pavlova, Ltd.', 'Ian Devling', 'Marketing Manager', '74 Rose St. Moonie Ponds', 'Melbourne', 'Victoria', '3058', 'Australia', '(03) 444-2343', '(03) 444-6588', NULL);\nINSERT INTO suppliers VALUES (8, 'Specialty Biscuits, Ltd.', 'Peter Wilson', 'Sales Representative', '29 King''s Way', 'Manchester', NULL, 'M14 GSD', 'UK', '(161) 555-4448', NULL, NULL);\nINSERT INTO suppliers VALUES (9, 'PB Knäckebröd AB', 'Lars Peterson', 'Sales Agent', 'Kaloadagatan 13', 'Göteborg', NULL, 'S-345 67', 'Sweden', '031-987 65 43', '031-987 65 91', NULL);\nINSERT INTO suppliers VALUES (10, 'Refrescos Americanas LTDA', 'Carlos Diaz', 'Marketing Manager', 'Av. das Americanas 12.890', 'Sao Paulo', NULL, '5442', 'Brazil', '(11) 555 4640', NULL, NULL);\nINSERT INTO suppliers VALUES (11, 'Heli Süßwaren GmbH & Co. KG', 'Petra Winkler', 'Sales Manager', 'Tiergartenstraße 5', 'Berlin', NULL, '10785', 'Germany', '(010) 9984510', NULL, NULL);\nINSERT INTO suppliers VALUES (12, 'Plutzer Lebensmittelgroßmärkte AG', 'Martin Bein', 'International Marketing Mgr.', 'Bogenallee 51', 'Frankfurt', NULL, '60439', 'Germany', '(069) 992755', NULL, 'Plutzer (on the World Wide Web)#http://www.microsoft.com/accessdev/sampleapps/plutzer.htm#');\nINSERT INTO suppliers VALUES (13, 'Nord-Ost-Fisch Handelsgesellschaft mbH', 'Sven Petersen', 'Coordinator Foreign Markets', 'Frahmredder 112a', 'Cuxhaven', NULL, '27478', 'Germany', '(04721) 8713', '(04721) 8714', NULL);\nINSERT INTO suppliers VALUES (14, 'Formaggi Fortini s.r.l.', 'Elio Rossi', 'Sales Representative', 'Viale Dante, 75', 'Ravenna', NULL, '48100', 'Italy', '(0544) 60323', '(0544) 60603', '#FORMAGGI.HTM#');\nINSERT INTO suppliers VALUES (15, 'Norske Meierier', 'Beate Vileid', 'Marketing Manager', 'Hatlevegen 5', 'Sandvika', NULL, '1320', 'Norway', '(0)2-953010', NULL, NULL);\nINSERT INTO suppliers VALUES (16, 'Bigfoot Breweries', 'Cheryl Saylor', 'Regional Account Rep.', '3400 - 8th Avenue Suite 210', 'Bend', 'OR', '97101', 'USA', '(503) 555-9931', NULL, NULL);\nINSERT INTO suppliers VALUES (17, 'Svensk Sjöföda AB', 'Michael Björn', 'Sales Representative', 'Brovallavägen 231', 'Stockholm', NULL, 'S-123 45', 'Sweden', '08-123 45 67', NULL, NULL);\nINSERT INTO suppliers VALUES (18, 'Aux joyeux ecclésiastiques', 'Guylène Nodier', 'Sales Manager', '203, Rue des Francs-Bourgeois', 'Paris', NULL, '75004', 'France', '(1) 03.83.00.68', '(1) 03.83.00.62', NULL);\nINSERT INTO suppliers VALUES (19, 'New England Seafood Cannery', 'Robb Merchant', 'Wholesale Account Agent', 'Order Processing Dept. 2100 Paul Revere Blvd.', 'Boston', 'MA', '02134', 'USA', '(617) 555-3267', '(617) 555-3389', NULL);\nINSERT INTO suppliers VALUES (20, 'Leka Trading', 'Chandra Leka', 'Owner', '471 Serangoon Loop, Suite #402', 'Singapore', NULL, '0512', 'Singapore', '555-8787', NULL, NULL);\nINSERT INTO suppliers VALUES (21, 'Lyngbysild', 'Niels Petersen', 'Sales Manager', 'Lyngbysild Fiskebakken 10', 'Lyngby', NULL, '2800', 'Denmark', '43844108', '43844115', NULL);\nINSERT INTO suppliers VALUES (22, 'Zaanse Snoepfabriek', 'Dirk Luchte', 'Accounting Manager', 'Verkoop Rijnweg 22', 'Zaandam', NULL, '9999 ZZ', 'Netherlands', '(12345) 1212', '(12345) 1210', NULL);\nINSERT INTO suppliers VALUES (23, 'Karkki Oy', 'Anne Heikkonen', 'Product Manager', 'Valtakatu 12', 'Lappeenranta', NULL, '53120', 'Finland', '(953) 10956', NULL, NULL);\nINSERT INTO suppliers VALUES (24, 'G''day, Mate', 'Wendy Mackenzie', 'Sales Representative', '170 Prince Edward Parade Hunter''s Hill', 'Sydney', 'NSW', '2042', 'Australia', '(02) 555-5914', '(02) 555-4873', 'G''day Mate (on the World Wide Web)#http://www.microsoft.com/accessdev/sampleapps/gdaymate.htm#');\nINSERT INTO suppliers VALUES (25, 'Ma Maison', 'Jean-Guy Lauzon', 'Marketing Manager', '2960 Rue St. Laurent', 'Montréal', 'Québec', 'H1J 1C3', 'Canada', '(514) 555-9022', NULL, NULL);\nINSERT INTO suppliers VALUES (26, 'Pasta Buttini s.r.l.', 'Giovanni Giudici', 'Order Administrator', 'Via dei Gelsomini, 153', 'Salerno', NULL, '84100', 'Italy', '(089) 6547665', '(089) 6547667', NULL);\nINSERT INTO suppliers VALUES (27, 'Escargots Nouveaux', 'Marie Delamare', 'Sales Manager', '22, rue H. Voiron', 'Montceau', NULL, '71300', 'France', '85.57.00.07', NULL, NULL);\nINSERT INTO suppliers VALUES (28, 'Gai pâturage', 'Eliane Noz', 'Sales Representative', 'Bat. B 3, rue des Alpes', 'Annecy', NULL, '74000', 'France', '38.76.98.06', '38.76.98.58', NULL);\nINSERT INTO suppliers VALUES (29, 'Forêts d''érables', 'Chantal Goulet', 'Accounting Manager', '148 rue Chasseur', 'Ste-Hyacinthe', 'Québec', 'J2S 7S8', 'Canada', '(514) 555-2955', '(514) 555-2921', NULL);\n\n\n--\n-- Data for Name: territories; Type: TABLE DATA; Schema: public; Owner: -\n--\n\nINSERT INTO territories VALUES ('01581', 'Westboro', 1);\nINSERT INTO territories VALUES ('01730', 'Bedford', 1);\nINSERT INTO territories VALUES ('01833', 'Georgetow', 1);\nINSERT INTO territories VALUES ('02116', 'Boston', 1);\nINSERT INTO territories VALUES ('02139', 'Cambridge', 1);\nINSERT INTO territories VALUES ('02184', 'Braintree', 1);\nINSERT INTO territories VALUES ('02903', 'Providence', 1);\nINSERT INTO territories VALUES ('03049', 'Hollis', 3);\nINSERT INTO territories VALUES ('03801', 'Portsmouth', 3);\nINSERT INTO territories VALUES ('06897', 'Wilton', 1);\nINSERT INTO territories VALUES ('07960', 'Morristown', 1);\nINSERT INTO territories VALUES ('08837', 'Edison', 1);\nINSERT INTO territories VALUES ('10019', 'New York', 1);\nINSERT INTO territories VALUES ('10038', 'New York', 1);\nINSERT INTO territories VALUES ('11747', 'Mellvile', 1);\nINSERT INTO territories VALUES ('14450', 'Fairport', 1);\nINSERT INTO territories VALUES ('19428', 'Philadelphia', 3);\nINSERT INTO territories VALUES ('19713', 'Neward', 1);\nINSERT INTO territories VALUES ('20852', 'Rockville', 1);\nINSERT INTO territories VALUES ('27403', 'Greensboro', 1);\nINSERT INTO territories VALUES ('27511', 'Cary', 1);\nINSERT INTO territories VALUES ('29202', 'Columbia', 4);\nINSERT INTO territories VALUES ('30346', 'Atlanta', 4);\nINSERT INTO territories VALUES ('31406', 'Savannah', 4);\nINSERT INTO territories VALUES ('32859', 'Orlando', 4);\nINSERT INTO territories VALUES ('33607', 'Tampa', 4);\nINSERT INTO territories VALUES ('40222', 'Louisville', 1);\nINSERT INTO territories VALUES ('44122', 'Beachwood', 3);\nINSERT INTO territories VALUES ('45839', 'Findlay', 3);\nINSERT INTO territories VALUES ('48075', 'Southfield', 3);\nINSERT INTO territories VALUES ('48084', 'Troy', 3);\nINSERT INTO territories VALUES ('48304', 'Bloomfield Hills', 3);\nINSERT INTO territories VALUES ('53404', 'Racine', 3);\nINSERT INTO territories VALUES ('55113', 'Roseville', 3);\nINSERT INTO territories VALUES ('55439', 'Minneapolis', 3);\nINSERT INTO territories VALUES ('60179', 'Hoffman Estates', 2);\nINSERT INTO territories VALUES ('60601', 'Chicago', 2);\nINSERT INTO territories VALUES ('72716', 'Bentonville', 4);\nINSERT INTO territories VALUES ('75234', 'Dallas', 4);\nINSERT INTO territories VALUES ('78759', 'Austin', 4);\nINSERT INTO territories VALUES ('80202', 'Denver', 2);\nINSERT INTO territories VALUES ('80909', 'Colorado Springs', 2);\nINSERT INTO territories VALUES ('85014', 'Phoenix', 2);\nINSERT INTO territories VALUES ('85251', 'Scottsdale', 2);\nINSERT INTO territories VALUES ('90405', 'Santa Monica', 2);\nINSERT INTO territories VALUES ('94025', 'Menlo Park', 2);\nINSERT INTO territories VALUES ('94105', 'San Francisco', 2);\nINSERT INTO territories VALUES ('95008', 'Campbell', 2);\nINSERT INTO territories VALUES ('95054', 'Santa Clara', 2);\nINSERT INTO territories VALUES ('95060', 'Santa Cruz', 2);\nINSERT INTO territories VALUES ('98004', 'Bellevue', 2);\nINSERT INTO territories VALUES ('98052', 'Redmond', 2);\nINSERT INTO territories VALUES ('98104', 'Seattle', 2);\n\n\n--\n-- Data for Name: us_states; Type: TABLE DATA; Schema: public; Owner: -\n--\n\nINSERT INTO us_states VALUES (1, 'Alabama', 'AL', 'south');\nINSERT INTO us_states VALUES (2, 'Alaska', 'AK', 'north');\nINSERT INTO us_states VALUES (3, 'Arizona', 'AZ', 'west');\nINSERT INTO us_states VALUES (4, 'Arkansas', 'AR', 'south');\nINSERT INTO us_states VALUES (5, 'California', 'CA', 'west');\nINSERT INTO us_states VALUES (6, 'Colorado', 'CO', 'west');\nINSERT INTO us_states VALUES (7, 'Connecticut', 'CT', 'east');\nINSERT INTO us_states VALUES (8, 'Delaware', 'DE', 'east');\nINSERT INTO us_states VALUES (9, 'District of Columbia', 'DC', 'east');\nINSERT INTO us_states VALUES (10, 'Florida', 'FL', 'south');\nINSERT INTO us_states VALUES (11, 'Georgia', 'GA', 'south');\nINSERT INTO us_states VALUES (12, 'Hawaii', 'HI', 'west');\nINSERT INTO us_states VALUES (13, 'Idaho', 'ID', 'midwest');\nINSERT INTO us_states VALUES (14, 'Illinois', 'IL', 'midwest');\nINSERT INTO us_states VALUES (15, 'Indiana', 'IN', 'midwest');\nINSERT INTO us_states VALUES (16, 'Iowa', 'IO', 'midwest');\nINSERT INTO us_states VALUES (17, 'Kansas', 'KS', 'midwest');\nINSERT INTO us_states VALUES (18, 'Kentucky', 'KY', 'south');\nINSERT INTO us_states VALUES (19, 'Louisiana', 'LA', 'south');\nINSERT INTO us_states VALUES (20, 'Maine', 'ME', 'north');\nINSERT INTO us_states VALUES (21, 'Maryland', 'MD', 'east');\nINSERT INTO us_states VALUES (22, 'Massachusetts', 'MA', 'north');\nINSERT INTO us_states VALUES (23, 'Michigan', 'MI', 'north');\nINSERT INTO us_states VALUES (24, 'Minnesota', 'MN', 'north');\nINSERT INTO us_states VALUES (25, 'Mississippi', 'MS', 'south');\nINSERT INTO us_states VALUES (26, 'Missouri', 'MO', 'south');\nINSERT INTO us_states VALUES (27, 'Montana', 'MT', 'west');\nINSERT INTO us_states VALUES (28, 'Nebraska', 'NE', 'midwest');\nINSERT INTO us_states VALUES (29, 'Nevada', 'NV', 'west');\nINSERT INTO us_states VALUES (30, 'New Hampshire', 'NH', 'east');\nINSERT INTO us_states VALUES (31, 'New Jersey', 'NJ', 'east');\nINSERT INTO us_states VALUES (32, 'New Mexico', 'NM', 'west');\nINSERT INTO us_states VALUES (33, 'New York', 'NY', 'east');\nINSERT INTO us_states VALUES (34, 'North Carolina', 'NC', 'east');\nINSERT INTO us_states VALUES (35, 'North Dakota', 'ND', 'midwest');\nINSERT INTO us_states VALUES (36, 'Ohio', 'OH', 'midwest');\nINSERT INTO us_states VALUES (37, 'Oklahoma', 'OK', 'midwest');\nINSERT INTO us_states VALUES (38, 'Oregon', 'OR', 'west');\nINSERT INTO us_states VALUES (39, 'Pennsylvania', 'PA', 'east');\nINSERT INTO us_states VALUES (40, 'Rhode Island', 'RI', 'east');\nINSERT INTO us_states VALUES (41, 'South Carolina', 'SC', 'east');\nINSERT INTO us_states VALUES (42, 'South Dakota', 'SD', 'midwest');\nINSERT INTO us_states VALUES (43, 'Tennessee', 'TN', 'midwest');\nINSERT INTO us_states VALUES (44, 'Texas', 'TX', 'west');\nINSERT INTO us_states VALUES (45, 'Utah', 'UT', 'west');\nINSERT INTO us_states VALUES (46, 'Vermont', 'VT', 'east');\nINSERT INTO us_states VALUES (47, 'Virginia', 'VA', 'east');\nINSERT INTO us_states VALUES (48, 'Washington', 'WA', 'west');\nINSERT INTO us_states VALUES (49, 'West Virginia', 'WV', 'south');\nINSERT INTO us_states VALUES (50, 'Wisconsin', 'WI', 'midwest');\nINSERT INTO us_states VALUES (51, 'Wyoming', 'WY', 'west');\n\n\n--\n-- Name: pk_categories; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: \n--\n\nALTER TABLE ONLY categories\n    ADD CONSTRAINT pk_categories PRIMARY KEY (category_id);\n\n\n--\n-- Name: pk_customer_customer_demo; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: \n--\n\nALTER TABLE ONLY customer_customer_demo\n    ADD CONSTRAINT pk_customer_customer_demo PRIMARY KEY (customer_id, customer_type_id);\n\n\n--\n-- Name: pk_customer_demographics; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: \n--\n\nALTER TABLE ONLY customer_demographics\n    ADD CONSTRAINT pk_customer_demographics PRIMARY KEY (customer_type_id);\n\n\n--\n-- Name: pk_customers; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: \n--\n\nALTER TABLE ONLY customers\n    ADD CONSTRAINT pk_customers PRIMARY KEY (customer_id);\n\n\n--\n-- Name: pk_employees; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: \n--\n\nALTER TABLE ONLY employees\n    ADD CONSTRAINT pk_employees PRIMARY KEY (employee_id);\n\n\n--\n-- Name: pk_employee_territories; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: \n--\n\nALTER TABLE ONLY employee_territories\n    ADD CONSTRAINT pk_employee_territories PRIMARY KEY (employee_id, territory_id);\n\n\n--\n-- Name: pk_order_details; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: \n--\n\nALTER TABLE ONLY order_details\n    ADD CONSTRAINT pk_order_details PRIMARY KEY (order_id, product_id);\n\n\n--\n-- Name: pk_orders; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: \n--\n\nALTER TABLE ONLY orders\n    ADD CONSTRAINT pk_orders PRIMARY KEY (order_id);\n\n\n--\n-- Name: pk_products; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: \n--\n\nALTER TABLE ONLY products\n    ADD CONSTRAINT pk_products PRIMARY KEY (product_id);\n\n\n--\n-- Name: pk_region; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: \n--\n\nALTER TABLE ONLY region\n    ADD CONSTRAINT pk_region PRIMARY KEY (region_id);\n\n\n--\n-- Name: pk_shippers; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: \n--\n\nALTER TABLE ONLY shippers\n    ADD CONSTRAINT pk_shippers PRIMARY KEY (shipper_id);\n\n\n--\n-- Name: pk_suppliers; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: \n--\n\nALTER TABLE ONLY suppliers\n    ADD CONSTRAINT pk_suppliers PRIMARY KEY (supplier_id);\n\n\n--\n-- Name: pk_territories; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: \n--\n\nALTER TABLE ONLY territories\n    ADD CONSTRAINT pk_territories PRIMARY KEY (territory_id);\n\n\n--\n-- Name: pk_usstates; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: \n--\n\nALTER TABLE ONLY us_states\n    ADD CONSTRAINT pk_usstates PRIMARY KEY (state_id);\n\n\n--\n-- Name: fk_orders_customers; Type: Constraint; Schema: -; Owner: -\n--\n\nALTER TABLE ONLY orders\n    ADD CONSTRAINT fk_orders_customers FOREIGN KEY (customer_id) REFERENCES customers;\n\n\n--\n-- Name: fk_orders_employees; Type: Constraint; Schema: -; Owner: -\n--\n\nALTER TABLE ONLY orders\n    ADD CONSTRAINT fk_orders_employees FOREIGN KEY (employee_id) REFERENCES employees;\n\n\n--\n-- Name: fk_orders_shippers; Type: Constraint; Schema: -; Owner: -\n--\n\nALTER TABLE ONLY orders\n    ADD CONSTRAINT fk_orders_shippers FOREIGN KEY (ship_via) REFERENCES shippers;\n\n\n--\n-- Name: fk_order_details_products; Type: Constraint; Schema: -; Owner: -\n--\n\nALTER TABLE ONLY order_details\n    ADD CONSTRAINT fk_order_details_products FOREIGN KEY (product_id) REFERENCES products;\n\n\n--\n-- Name: fk_order_details_orders; Type: Constraint; Schema: -; Owner: -\n--\n\nALTER TABLE ONLY order_details\n    ADD CONSTRAINT fk_order_details_orders FOREIGN KEY (order_id) REFERENCES orders;\n\n\n--\n-- Name: fk_products_categories; Type: Constraint; Schema: -; Owner: -\n--\n\nALTER TABLE ONLY products\n    ADD CONSTRAINT fk_products_categories FOREIGN KEY (category_id) REFERENCES categories;\n\n\n--\n-- Name: fk_products_suppliers; Type: Constraint; Schema: -; Owner: -\n--\n\nALTER TABLE ONLY products\n    ADD CONSTRAINT fk_products_suppliers FOREIGN KEY (supplier_id) REFERENCES suppliers;\n\n\n--\n-- Name: fk_territories_region; Type: Constraint; Schema: -; Owner: -\n--\n\nALTER TABLE ONLY territories\n    ADD CONSTRAINT fk_territories_region FOREIGN KEY (region_id) REFERENCES region;\n\n\n--\n-- Name: fk_employee_territories_territories; Type: Constraint; Schema: -; Owner: -\n--\n\nALTER TABLE ONLY employee_territories\n    ADD CONSTRAINT fk_employee_territories_territories FOREIGN KEY (territory_id) REFERENCES territories;\n\n\n--\n-- Name: fk_employee_territories_employees; Type: Constraint; Schema: -; Owner: -\n--\n\nALTER TABLE ONLY employee_territories\n    ADD CONSTRAINT fk_employee_territories_employees FOREIGN KEY (employee_id) REFERENCES employees;\n\n\n--\n-- Name: fk_customer_customer_demo_customer_demographics; Type: Constraint; Schema: -; Owner: -\n--\n\nALTER TABLE ONLY customer_customer_demo\n    ADD CONSTRAINT fk_customer_customer_demo_customer_demographics FOREIGN KEY (customer_type_id) REFERENCES customer_demographics;\n\n\n--\n-- Name: fk_customer_customer_demo_customers; Type: Constraint; Schema: -; Owner: -\n--\n\nALTER TABLE ONLY customer_customer_demo\n    ADD CONSTRAINT fk_customer_customer_demo_customers FOREIGN KEY (customer_id) REFERENCES customers;\n\n\n--\n-- Name: fk_employees_employees; Type: Constraint; Schema: -; Owner: -\n--\n\nALTER TABLE ONLY employees\n    ADD CONSTRAINT fk_employees_employees FOREIGN KEY (reports_to) REFERENCES employees;\n\n    \n--\n-- PostgreSQL database dump complete\n--\n\n"
  },
  {
    "path": "plugins/riot/src/test/resources/db/oracle.sql",
    "content": "CREATE TABLE regions (\n\tregion_id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,\n\tregion_name VARCHAR2 (25) DEFAULT NULL\n);\n\nCREATE TABLE countries (\n\tcountry_id CHAR (2) PRIMARY KEY,\n\tcountry_name VARCHAR2 (40) DEFAULT NULL,\n\tregion_id NUMBER NOT NULL,\n\tFOREIGN KEY (region_id) REFERENCES regions (region_id) ON DELETE CASCADE\n);\n\nCREATE TABLE locations (\n\tlocation_id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,\n\tstreet_address VARCHAR2 (40) DEFAULT NULL,\n\tpostal_code VARCHAR2 (12) DEFAULT NULL,\n\tcity VARCHAR2 (30) NOT NULL,\n\tstate_province VARCHAR2 (25) DEFAULT NULL,\n\tcountry_id CHAR (2) NOT NULL,\n\tFOREIGN KEY (country_id) REFERENCES countries (country_id) ON DELETE CASCADE\n);\n\nCREATE TABLE jobs (\n\tjob_id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,\n\tjob_title VARCHAR2 (35) NOT NULL,\n\tmin_salary NUMBER (8, 2) DEFAULT NULL,\n\tmax_salary NUMBER (8, 2) DEFAULT NULL\n);\n\nCREATE TABLE departments (\n\tdepartment_id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,\n\tdepartment_name VARCHAR2 (30) NOT NULL,\n\tlocation_id NUMBER DEFAULT NULL,\n\tFOREIGN KEY (location_id) REFERENCES locations (location_id) ON DELETE CASCADE\n);\n\nCREATE TABLE employees (\n\temployee_id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,\n\tfirst_name VARCHAR2 (20) DEFAULT NULL,\n\tlast_name VARCHAR2 (25) NOT NULL,\n\temail VARCHAR2 (100) NOT NULL,\n\tphone_number VARCHAR2 (20) DEFAULT NULL,\n\thire_date DATE NOT NULL,\n\tjob_id NUMBER NOT NULL,\n\tsalary NUMBER (8, 2) NOT NULL,\n\tmanager_id NUMBER DEFAULT NULL,\n\tdepartment_id NUMBER DEFAULT NULL,\n\tFOREIGN KEY (job_id) REFERENCES jobs (job_id) ON DELETE CASCADE,\n\tFOREIGN KEY (department_id) REFERENCES departments (department_id) ON DELETE CASCADE,\n\tFOREIGN KEY (manager_id) REFERENCES employees (employee_id)\n);\n\nCREATE TABLE dependents (\n\tdependent_id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,\n\tfirst_name VARCHAR2 (50) NOT NULL,\n\tlast_name VARCHAR2 (50) NOT NULL,\n\trelationship VARCHAR2 (25) NOT NULL,\n\temployee_id NUMBER NOT NULL,\n\tFOREIGN KEY (employee_id) REFERENCES employees (employee_id) ON DELETE CASCADE\n);\n\n/*Data for the table regions*/\nINSERT INTO regions(region_id,region_name) VALUES (1,'Europe');\nINSERT INTO regions(region_id,region_name) VALUES (2,'Americas');\nINSERT INTO regions(region_id,region_name) VALUES (3,'Asia');\nINSERT INTO regions(region_id,region_name) VALUES (4,'Middle East and Africa');\n \n \n/*Data for the table countries */\nINSERT INTO countries(country_id,country_name,region_id) VALUES ('AR','Argentina',2);\nINSERT INTO countries(country_id,country_name,region_id) VALUES ('AU','Australia',3);\nINSERT INTO countries(country_id,country_name,region_id) VALUES ('BE','Belgium',1);\nINSERT INTO countries(country_id,country_name,region_id) VALUES ('BR','Brazil',2);\nINSERT INTO countries(country_id,country_name,region_id) VALUES ('CA','Canada',2);\nINSERT INTO countries(country_id,country_name,region_id) VALUES ('CH','Switzerland',1);\nINSERT INTO countries(country_id,country_name,region_id) VALUES ('CN','China',3);\nINSERT INTO countries(country_id,country_name,region_id) VALUES ('DE','Germany',1);\nINSERT INTO countries(country_id,country_name,region_id) VALUES ('DK','Denmark',1);\nINSERT INTO countries(country_id,country_name,region_id) VALUES ('EG','Egypt',4);\nINSERT INTO countries(country_id,country_name,region_id) VALUES ('FR','France',1);\nINSERT INTO countries(country_id,country_name,region_id) VALUES ('HK','HongKong',3);\nINSERT INTO countries(country_id,country_name,region_id) VALUES ('IL','Israel',4);\nINSERT INTO countries(country_id,country_name,region_id) VALUES ('IN','India',3);\nINSERT INTO countries(country_id,country_name,region_id) VALUES ('IT','Italy',1);\nINSERT INTO countries(country_id,country_name,region_id) VALUES ('JP','Japan',3);\nINSERT INTO countries(country_id,country_name,region_id) VALUES ('KW','Kuwait',4);\nINSERT INTO countries(country_id,country_name,region_id) VALUES ('MX','Mexico',2);\nINSERT INTO countries(country_id,country_name,region_id) VALUES ('NG','Nigeria',4);\nINSERT INTO countries(country_id,country_name,region_id) VALUES ('NL','Netherlands',1);\nINSERT INTO countries(country_id,country_name,region_id) VALUES ('SG','Singapore',3);\nINSERT INTO countries(country_id,country_name,region_id) VALUES ('UK','United Kingdom',1);\nINSERT INTO countries(country_id,country_name,region_id) VALUES ('US','United States of America',2);\nINSERT INTO countries(country_id,country_name,region_id) VALUES ('ZM','Zambia',4);\nINSERT INTO countries(country_id,country_name,region_id) VALUES ('ZW','Zimbabwe',4);\n \n/*Data for the table locations */\nINSERT INTO locations(location_id,street_address,postal_code,city,state_province,country_id) VALUES (1400,'2014 Jabberwocky Rd','26192','Southlake','Texas','US');\nINSERT INTO locations(location_id,street_address,postal_code,city,state_province,country_id) VALUES (1500,'2011 Interiors Blvd','99236','South San Francisco','California','US');\nINSERT INTO locations(location_id,street_address,postal_code,city,state_province,country_id) VALUES (1700,'2004 Charade Rd','98199','Seattle','Washington','US');\nINSERT INTO locations(location_id,street_address,postal_code,city,state_province,country_id) VALUES (1800,'147 Spadina Ave','M5V 2L7','Toronto','Ontario','CA');\nINSERT INTO locations(location_id,street_address,postal_code,city,state_province,country_id) VALUES (2400,'8204 Arthur St',NULL,'London',NULL,'UK');\nINSERT INTO locations(location_id,street_address,postal_code,city,state_province,country_id) VALUES (2500,'Magdalen Centre, The Oxford Science Park','OX9 9ZB','Oxford','Oxford','UK');\nINSERT INTO locations(location_id,street_address,postal_code,city,state_province,country_id) VALUES (2700,'Schwanthalerstr. 7031','80925','Munich','Bavaria','DE');\n \n \n/*Data for the table jobs */\n \nINSERT INTO jobs(job_id,job_title,min_salary,max_salary) VALUES (1,'Public Accountant',4200.00,9000.00);\nINSERT INTO jobs(job_id,job_title,min_salary,max_salary) VALUES (2,'Accounting Manager',8200.00,16000.00);\nINSERT INTO jobs(job_id,job_title,min_salary,max_salary) VALUES (3,'Administration Assistant',3000.00,6000.00);\nINSERT INTO jobs(job_id,job_title,min_salary,max_salary) VALUES (4,'President',20000.00,40000.00);\nINSERT INTO jobs(job_id,job_title,min_salary,max_salary) VALUES (5,'Administration Vice President',15000.00,30000.00);\nINSERT INTO jobs(job_id,job_title,min_salary,max_salary) VALUES (6,'Accountant',4200.00,9000.00);\nINSERT INTO jobs(job_id,job_title,min_salary,max_salary) VALUES (7,'Finance Manager',8200.00,16000.00);\nINSERT INTO jobs(job_id,job_title,min_salary,max_salary) VALUES (8,'Human Resources Representative',4000.00,9000.00);\nINSERT INTO jobs(job_id,job_title,min_salary,max_salary) VALUES (9,'Programmer',4000.00,10000.00);\nINSERT INTO jobs(job_id,job_title,min_salary,max_salary) VALUES (10,'Marketing Manager',9000.00,15000.00);\nINSERT INTO jobs(job_id,job_title,min_salary,max_salary) VALUES (11,'Marketing Representative',4000.00,9000.00);\nINSERT INTO jobs(job_id,job_title,min_salary,max_salary) VALUES (12,'Public Relations Representative',4500.00,10500.00);\nINSERT INTO jobs(job_id,job_title,min_salary,max_salary) VALUES (13,'Purchasing Clerk',2500.00,5500.00);\nINSERT INTO jobs(job_id,job_title,min_salary,max_salary) VALUES (14,'Purchasing Manager',8000.00,15000.00);\nINSERT INTO jobs(job_id,job_title,min_salary,max_salary) VALUES (15,'Sales Manager',10000.00,20000.00);\nINSERT INTO jobs(job_id,job_title,min_salary,max_salary) VALUES (16,'Sales Representative',6000.00,12000.00);\nINSERT INTO jobs(job_id,job_title,min_salary,max_salary) VALUES (17,'Shipping Clerk',2500.00,5500.00);\nINSERT INTO jobs(job_id,job_title,min_salary,max_salary) VALUES (18,'Stock Clerk',2000.00,5000.00);\nINSERT INTO jobs(job_id,job_title,min_salary,max_salary) VALUES (19,'Stock Manager',5500.00,8500.00);\n \n \n/*Data for the table departments */\n \nINSERT INTO departments(department_id,department_name,location_id) VALUES (1,'Administration',1700);\nINSERT INTO departments(department_id,department_name,location_id) VALUES (2,'Marketing',1800);\nINSERT INTO departments(department_id,department_name,location_id) VALUES (3,'Purchasing',1700);\nINSERT INTO departments(department_id,department_name,location_id) VALUES (4,'Human Resources',2400);\nINSERT INTO departments(department_id,department_name,location_id) VALUES (5,'Shipping',1500);\nINSERT INTO departments(department_id,department_name,location_id) VALUES (6,'IT',1400);\nINSERT INTO departments(department_id,department_name,location_id) VALUES (7,'Public Relations',2700);\nINSERT INTO departments(department_id,department_name,location_id) VALUES (8,'Sales',2500);\nINSERT INTO departments(department_id,department_name,location_id) VALUES (9,'Executive',1700);\nINSERT INTO departments(department_id,department_name,location_id) VALUES (10,'Finance',1700);\nINSERT INTO departments(department_id,department_name,location_id) VALUES (11,'Accounting',1700);\n \n \n \n/*Data for the table employees */\n \nINSERT INTO employees(employee_id,first_name,last_name,email,phone_number,hire_date,job_id,salary,manager_id,department_id) VALUES (100,'Steven','King','steven.king@sqltutorial.org','515.123.4567',DATE '1987-06-17',4,24000.00,NULL,9);\nINSERT INTO employees(employee_id,first_name,last_name,email,phone_number,hire_date,job_id,salary,manager_id,department_id) VALUES (101,'Neena','Kochhar','neena.kochhar@sqltutorial.org','515.123.4568',DATE '1989-09-21',5,17000.00,100,9);\nINSERT INTO employees(employee_id,first_name,last_name,email,phone_number,hire_date,job_id,salary,manager_id,department_id) VALUES (102,'Lex','De Haan','lex.de haan@sqltutorial.org','515.123.4569',DATE '1993-01-13',5,17000.00,100,9);\nINSERT INTO employees(employee_id,first_name,last_name,email,phone_number,hire_date,job_id,salary,manager_id,department_id) VALUES (103,'Alexander','Hunold','alexander.hunold@sqltutorial.org','590.423.4567',DATE '1990-01-03',9,9000.00,102,6);\nINSERT INTO employees(employee_id,first_name,last_name,email,phone_number,hire_date,job_id,salary,manager_id,department_id) VALUES (104,'Bruce','Ernst','bruce.ernst@sqltutorial.org','590.423.4568',DATE '1991-05-21',9,6000.00,103,6);\nINSERT INTO employees(employee_id,first_name,last_name,email,phone_number,hire_date,job_id,salary,manager_id,department_id) VALUES (105,'David','Austin','david.austin@sqltutorial.org','590.423.4569',DATE '1997-06-25',9,4800.00,103,6);\nINSERT INTO employees(employee_id,first_name,last_name,email,phone_number,hire_date,job_id,salary,manager_id,department_id) VALUES (106,'Valli','Pataballa','valli.pataballa@sqltutorial.org','590.423.4560',DATE '1998-02-05',9,4800.00,103,6);\nINSERT INTO employees(employee_id,first_name,last_name,email,phone_number,hire_date,job_id,salary,manager_id,department_id) VALUES (107,'Diana','Lorentz','diana.lorentz@sqltutorial.org','590.423.5567',DATE '1999-02-07',9,4200.00,103,6);\nINSERT INTO employees(employee_id,first_name,last_name,email,phone_number,hire_date,job_id,salary,manager_id,department_id) VALUES (108,'Nancy','Greenberg','nancy.greenberg@sqltutorial.org','515.124.4569',DATE '1994-08-17',7,12000.00,101,10);\nINSERT INTO employees(employee_id,first_name,last_name,email,phone_number,hire_date,job_id,salary,manager_id,department_id) VALUES (109,'Daniel','Faviet','daniel.faviet@sqltutorial.org','515.124.4169',DATE '1994-08-16',6,9000.00,108,10);\nINSERT INTO employees(employee_id,first_name,last_name,email,phone_number,hire_date,job_id,salary,manager_id,department_id) VALUES (110,'John','Chen','john.chen@sqltutorial.org','515.124.4269',DATE '1997-09-28',6,8200.00,108,10);\nINSERT INTO employees(employee_id,first_name,last_name,email,phone_number,hire_date,job_id,salary,manager_id,department_id) VALUES (111,'Ismael','Sciarra','ismael.sciarra@sqltutorial.org','515.124.4369',DATE '1997-09-30',6,7700.00,108,10);\nINSERT INTO employees(employee_id,first_name,last_name,email,phone_number,hire_date,job_id,salary,manager_id,department_id) VALUES (112,'Jose Manuel','Urman','jose manuel.urman@sqltutorial.org','515.124.4469',DATE '1998-03-07',6,7800.00,108,10);\nINSERT INTO employees(employee_id,first_name,last_name,email,phone_number,hire_date,job_id,salary,manager_id,department_id) VALUES (113,'Luis','Popp','luis.popp@sqltutorial.org','515.124.4567',DATE '1999-12-07',6,6900.00,108,10);\nINSERT INTO employees(employee_id,first_name,last_name,email,phone_number,hire_date,job_id,salary,manager_id,department_id) VALUES (114,'Den','Raphaely','den.raphaely@sqltutorial.org','515.127.4561',DATE '1994-12-07',14,11000.00,100,3);\nINSERT INTO employees(employee_id,first_name,last_name,email,phone_number,hire_date,job_id,salary,manager_id,department_id) VALUES (115,'Alexander','Khoo','alexander.khoo@sqltutorial.org','515.127.4562',DATE '1995-05-18',13,3100.00,114,3);\nINSERT INTO employees(employee_id,first_name,last_name,email,phone_number,hire_date,job_id,salary,manager_id,department_id) VALUES (116,'Shelli','Baida','shelli.baida@sqltutorial.org','515.127.4563',DATE '1997-12-24',13,2900.00,114,3);\nINSERT INTO employees(employee_id,first_name,last_name,email,phone_number,hire_date,job_id,salary,manager_id,department_id) VALUES (117,'Sigal','Tobias','sigal.tobias@sqltutorial.org','515.127.4564',DATE '1997-07-24',13,2800.00,114,3);\nINSERT INTO employees(employee_id,first_name,last_name,email,phone_number,hire_date,job_id,salary,manager_id,department_id) VALUES (118,'Guy','Himuro','guy.himuro@sqltutorial.org','515.127.4565',DATE '1998-11-15',13,2600.00,114,3);\nINSERT INTO employees(employee_id,first_name,last_name,email,phone_number,hire_date,job_id,salary,manager_id,department_id) VALUES (119,'Karen','Colmenares','karen.colmenares@sqltutorial.org','515.127.4566',DATE '1999-08-10',13,2500.00,114,3);\nINSERT INTO employees(employee_id,first_name,last_name,email,phone_number,hire_date,job_id,salary,manager_id,department_id) VALUES (120,'Matthew','Weiss','matthew.weiss@sqltutorial.org','650.123.1234',DATE '1996-07-18',19,8000.00,100,5);\nINSERT INTO employees(employee_id,first_name,last_name,email,phone_number,hire_date,job_id,salary,manager_id,department_id) VALUES (121,'Adam','Fripp','adam.fripp@sqltutorial.org','650.123.2234',DATE '1997-04-10',19,8200.00,100,5);\nINSERT INTO employees(employee_id,first_name,last_name,email,phone_number,hire_date,job_id,salary,manager_id,department_id) VALUES (122,'Payam','Kaufling','payam.kaufling@sqltutorial.org','650.123.3234',DATE '1995-05-01',19,7900.00,100,5);\nINSERT INTO employees(employee_id,first_name,last_name,email,phone_number,hire_date,job_id,salary,manager_id,department_id) VALUES (123,'Shanta','Vollman','shanta.vollman@sqltutorial.org','650.123.4234',DATE '1997-10-10',19,6500.00,100,5);\nINSERT INTO employees(employee_id,first_name,last_name,email,phone_number,hire_date,job_id,salary,manager_id,department_id) VALUES (126,'Irene','Mikkilineni','irene.mikkilineni@sqltutorial.org','650.124.1224',DATE '1998-09-28',18,2700.00,120,5);\nINSERT INTO employees(employee_id,first_name,last_name,email,phone_number,hire_date,job_id,salary,manager_id,department_id) VALUES (145,'John','Russell','john.russell@sqltutorial.org',NULL,DATE '1996-10-01',15,14000.00,100,8);\nINSERT INTO employees(employee_id,first_name,last_name,email,phone_number,hire_date,job_id,salary,manager_id,department_id) VALUES (146,'Karen','Partners','karen.partners@sqltutorial.org',NULL,DATE '1997-01-05',15,13500.00,100,8);\nINSERT INTO employees(employee_id,first_name,last_name,email,phone_number,hire_date,job_id,salary,manager_id,department_id) VALUES (176,'Jonathon','Taylor','jonathon.taylor@sqltutorial.org',NULL,DATE '1998-03-24',16,8600.00,100,8);\nINSERT INTO employees(employee_id,first_name,last_name,email,phone_number,hire_date,job_id,salary,manager_id,department_id) VALUES (177,'Jack','Livingston','jack.livingston@sqltutorial.org',NULL,DATE '1998-04-23',16,8400.00,100,8);\nINSERT INTO employees(employee_id,first_name,last_name,email,phone_number,hire_date,job_id,salary,manager_id,department_id) VALUES (178,'Kimberely','Grant','kimberely.grant@sqltutorial.org',NULL,DATE '1999-05-24',16,7000.00,100,8);\nINSERT INTO employees(employee_id,first_name,last_name,email,phone_number,hire_date,job_id,salary,manager_id,department_id) VALUES (179,'Charles','Johnson','charles.johnson@sqltutorial.org',NULL,DATE '2000-01-04',16,6200.00,100,8);\nINSERT INTO employees(employee_id,first_name,last_name,email,phone_number,hire_date,job_id,salary,manager_id,department_id) VALUES (192,'Sarah','Bell','sarah.bell@sqltutorial.org','650.501.1876',DATE '1996-02-04',17,4000.00,123,5);\nINSERT INTO employees(employee_id,first_name,last_name,email,phone_number,hire_date,job_id,salary,manager_id,department_id) VALUES (193,'Britney','Everett','britney.everett@sqltutorial.org','650.501.2876',DATE '1997-03-03',17,3900.00,123,5);\nINSERT INTO employees(employee_id,first_name,last_name,email,phone_number,hire_date,job_id,salary,manager_id,department_id) VALUES (200,'Jennifer','Whalen','jennifer.whalen@sqltutorial.org','515.123.4444',DATE '1987-09-17',3,4400.00,101,1);\nINSERT INTO employees(employee_id,first_name,last_name,email,phone_number,hire_date,job_id,salary,manager_id,department_id) VALUES (201,'Michael','Hartstein','michael.hartstein@sqltutorial.org','515.123.5555',DATE '1996-02-17',10,13000.00,100,2);\nINSERT INTO employees(employee_id,first_name,last_name,email,phone_number,hire_date,job_id,salary,manager_id,department_id) VALUES (202,'Pat','Fay','pat.fay@sqltutorial.org','603.123.6666',DATE '1997-08-17',11,6000.00,201,2);\nINSERT INTO employees(employee_id,first_name,last_name,email,phone_number,hire_date,job_id,salary,manager_id,department_id) VALUES (203,'Susan','Mavris','susan.mavris@sqltutorial.org','515.123.7777',DATE '1994-06-07',8,6500.00,101,4);\nINSERT INTO employees(employee_id,first_name,last_name,email,phone_number,hire_date,job_id,salary,manager_id,department_id) VALUES (204,'Hermann','Baer','hermann.baer@sqltutorial.org','515.123.8888',DATE '1994-06-07',12,10000.00,101,7);\nINSERT INTO employees(employee_id,first_name,last_name,email,phone_number,hire_date,job_id,salary,manager_id,department_id) VALUES (205,'Shelley','Higgins','shelley.higgins@sqltutorial.org','515.123.8080',DATE '1994-06-07',2,12000.00,101,11);\nINSERT INTO employees(employee_id,first_name,last_name,email,phone_number,hire_date,job_id,salary,manager_id,department_id) VALUES (206,'William','Gietz','william.gietz@sqltutorial.org','515.123.8181',DATE '1994-06-07',1,8300.00,205,11);\n \n \n/*Data for the table dependents */\n \nINSERT INTO dependents(dependent_id,first_name,last_name,relationship,employee_id) VALUES (1,'Penelope','Gietz','Child',206);\nINSERT INTO dependents(dependent_id,first_name,last_name,relationship,employee_id) VALUES (2,'Nick','Higgins','Child',205);\nINSERT INTO dependents(dependent_id,first_name,last_name,relationship,employee_id) VALUES (3,'Ed','Whalen','Child',200);\nINSERT INTO dependents(dependent_id,first_name,last_name,relationship,employee_id) VALUES (4,'Jennifer','King','Child',100);\nINSERT INTO dependents(dependent_id,first_name,last_name,relationship,employee_id) VALUES (5,'Johnny','Kochhar','Child',101);\nINSERT INTO dependents(dependent_id,first_name,last_name,relationship,employee_id) VALUES (6,'Bette','De Haan','Child',102);\nINSERT INTO dependents(dependent_id,first_name,last_name,relationship,employee_id) VALUES (7,'Grace','Faviet','Child',109);\nINSERT INTO dependents(dependent_id,first_name,last_name,relationship,employee_id) VALUES (8,'Matthew','Chen','Child',110);\nINSERT INTO dependents(dependent_id,first_name,last_name,relationship,employee_id) VALUES (9,'Joe','Sciarra','Child',111);\nINSERT INTO dependents(dependent_id,first_name,last_name,relationship,employee_id) VALUES (10,'Christian','Urman','Child',112);\nINSERT INTO dependents(dependent_id,first_name,last_name,relationship,employee_id) VALUES (11,'Zero','Popp','Child',113);\nINSERT INTO dependents(dependent_id,first_name,last_name,relationship,employee_id) VALUES (12,'Karl','Greenberg','Child',108);\nINSERT INTO dependents(dependent_id,first_name,last_name,relationship,employee_id) VALUES (13,'Uma','Mavris','Child',203);\nINSERT INTO dependents(dependent_id,first_name,last_name,relationship,employee_id) VALUES (14,'Vivien','Hunold','Child',103);\nINSERT INTO dependents(dependent_id,first_name,last_name,relationship,employee_id) VALUES (15,'Cuba','Ernst','Child',104);\nINSERT INTO dependents(dependent_id,first_name,last_name,relationship,employee_id) VALUES (16,'Fred','Austin','Child',105);\nINSERT INTO dependents(dependent_id,first_name,last_name,relationship,employee_id) VALUES (17,'Helen','Pataballa','Child',106);\nINSERT INTO dependents(dependent_id,first_name,last_name,relationship,employee_id) VALUES (18,'Dan','Lorentz','Child',107);\nINSERT INTO dependents(dependent_id,first_name,last_name,relationship,employee_id) VALUES (19,'Bob','Hartstein','Child',201);\nINSERT INTO dependents(dependent_id,first_name,last_name,relationship,employee_id) VALUES (20,'Lucille','Fay','Child',202);\nINSERT INTO dependents(dependent_id,first_name,last_name,relationship,employee_id) VALUES (21,'Kirsten','Baer','Child',204);\nINSERT INTO dependents(dependent_id,first_name,last_name,relationship,employee_id) VALUES (22,'Elvis','Khoo','Child',115);\nINSERT INTO dependents(dependent_id,first_name,last_name,relationship,employee_id) VALUES (23,'Sandra','Baida','Child',116);\nINSERT INTO dependents(dependent_id,first_name,last_name,relationship,employee_id) VALUES (24,'Cameron','Tobias','Child',117);\nINSERT INTO dependents(dependent_id,first_name,last_name,relationship,employee_id) VALUES (25,'Kevin','Himuro','Child',118);\nINSERT INTO dependents(dependent_id,first_name,last_name,relationship,employee_id) VALUES (26,'Rip','Colmenares','Child',119);\nINSERT INTO dependents(dependent_id,first_name,last_name,relationship,employee_id) VALUES (27,'Julia','Raphaely','Child',114);\nINSERT INTO dependents(dependent_id,first_name,last_name,relationship,employee_id) VALUES (28,'Woody','Russell','Child',145);\nINSERT INTO dependents(dependent_id,first_name,last_name,relationship,employee_id) VALUES (29,'Alec','Partners','Child',146);\nINSERT INTO dependents(dependent_id,first_name,last_name,relationship,employee_id) VALUES (30,'Sandra','Taylor','Child',176);"
  },
  {
    "path": "plugins/riot/src/test/resources/db/postgres-delta.sql",
    "content": "DROP TABLE IF EXISTS orders;\n\nCREATE TABLE orders (\n    order_id SERIAL PRIMARY KEY,\n    order_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP\n);\n\n"
  },
  {
    "path": "plugins/riot/src/test/resources/db-export-postgresql",
    "content": "riot db-export \"INSERT INTO mytable (id, field1, field2) VALUES (CAST(:id AS SMALLINT), :field1, :field2)\" --jdbc-url \"jdbc:postgresql://host:port/database\" --jdbc-user appuser --jdbc-pass passwd --key-pattern \"gen:*\" --key-regex \"gen:(?<id>.*)\""
  },
  {
    "path": "plugins/riot/src/test/resources/db-import-postgresql",
    "content": "riot db-import \"SELECT * FROM orders\" --jdbc-url \"jdbc:postgresql://host:port/database\" --jdbc-user appuser --jdbc-pass passwd hset --keyspace order --key order_id"
  },
  {
    "path": "plugins/riot/src/test/resources/db-import-postgresql-multithreaded",
    "content": "riot db-import \"SELECT * FROM orders\" --jdbc-url \"jdbc:postgresql://host:port/database\" --jdbc-user appuser --jdbc-pass passwd --threads 3 hset --keyspace order --key order_id"
  },
  {
    "path": "plugins/riot/src/test/resources/db-import-postgresql-noop",
    "content": "riot db-import \"SELECT * FROM orders\" --jdbc-url \"jdbc:postgresql://host:port/database\" --jdbc-user appuser --jdbc-pass passwd noop"
  },
  {
    "path": "plugins/riot/src/test/resources/db-import-postgresql-set",
    "content": "riot db-import \"SELECT * FROM orders\" --jdbc-url \"jdbc:postgresql://host:port/database\" --jdbc-user appuser --jdbc-pass passwd set --keyspace order --key order_id"
  },
  {
    "path": "plugins/riot/src/test/resources/faker-hset",
    "content": "riot faker id=\"numerify '##########'\" firstName=\"name.first_name\" lastName=\"name.last_name\" address=\"address.full_address\" hset --keyspace person --key id"
  },
  {
    "path": "plugins/riot/src/test/resources/faker-sadd",
    "content": "riot faker name=\"GameOfThrones.character\" --count 1000 sadd --keyspace got:characters --member name"
  },
  {
    "path": "plugins/riot/src/test/resources/faker-tsadd",
    "content": "riot faker value=\"Random.next_double\" --count 10 --batch 1 --sleep 1 --skip-policy never ts.add --keyspace ts:gen --value value"
  },
  {
    "path": "plugins/riot/src/test/resources/faker-tsadd-options",
    "content": "riot faker value=\"Random.next_double\" future=\"BackToTheFuture.character\" lebowski=\"Lebowski.character\" --count 1000 --sleep 1 ts.add --keyspace ts:gen --key future lebowski --value value --label character1=future character2=lebowski"
  },
  {
    "path": "plugins/riot/src/test/resources/faker-xadd",
    "content": "riot faker category=\"Number.random_digit\" xadd --keyspace teststream --key category"
  },
  {
    "path": "plugins/riot/src/test/resources/faker-zadd",
    "content": "riot faker ip=\"number.digits '4'\" lease=\"number.digits '2'\" time=\"number.digits '5'\" zadd --keyspace leases --key ip --member lease --score=time"
  },
  {
    "path": "plugins/riot/src/test/resources/file-export-json",
    "content": "riot file-export /tmp/redis.json"
  },
  {
    "path": "plugins/riot/src/test/resources/file-export-json-gz",
    "content": "riot file-export /tmp/beers.json.gz --key-pattern beer:*"
  },
  {
    "path": "plugins/riot/src/test/resources/file-export-xml",
    "content": "riot file-export /tmp/redis.xml"
  },
  {
    "path": "plugins/riot/src/test/resources/file-import-bad",
    "content": "riot file-import http://storage.googleapis.com/jrx/bad.psv --type psv --header --delimiter \"|\" --quote \"'\" hset --keyspace bad --key id"
  },
  {
    "path": "plugins/riot/src/test/resources/file-import-csv",
    "content": "riot file-import http://storage.googleapis.com/jrx/beers.csv --header hset --keyspace beer --key id"
  },
  {
    "path": "plugins/riot/src/test/resources/file-import-csv-max",
    "content": "riot file-import http://storage.googleapis.com/jrx/beers.csv --max 12 --header hset --keyspace beer --key id"
  },
  {
    "path": "plugins/riot/src/test/resources/file-import-csv-skiplines",
    "content": "riot file-import http://storage.googleapis.com/jrx/beers.csv --header --skip-lines 11 --header-line 0 hset --keyspace beer --key id"
  },
  {
    "path": "plugins/riot/src/test/resources/file-import-exclude",
    "content": "riot file-import http://storage.googleapis.com/jrx/beers.csv --header hset --keyspace beer --key id --exclude row ibu"
  },
  {
    "path": "plugins/riot/src/test/resources/file-import-filetype",
    "content": "riot file-import http://storage.googleapis.com/jrx/sample.dat --type csv --delimiter \"|\" --header hset --keyspace sample --key id"
  },
  {
    "path": "plugins/riot/src/test/resources/file-import-filter",
    "content": "riot file-import http://storage.googleapis.com/jrx/beers.csv --filter style==\"'American IPA'\" --header hset --keyspace beer --key id"
  },
  {
    "path": "plugins/riot/src/test/resources/file-import-fw",
    "content": "riot file-import http://storage.googleapis.com/jrx/accounts.fw --type fw --ranges 1 9 25 41 53 67 83 --header hset --keyspace account --key Account"
  },
  {
    "path": "plugins/riot/src/test/resources/file-import-gcs",
    "content": "riot file-import gs://riotx/beers.json hset --keyspace beer --key id"
  },
  {
    "path": "plugins/riot/src/test/resources/file-import-geo-processor",
    "content": "riot file-import http://storage.googleapis.com/jrx/airports.csv --header --skip-limit 1 --proc location=\"#geo(Longitude,Latitude)\" hset --keyspace airport --key AirportID"
  },
  {
    "path": "plugins/riot/src/test/resources/file-import-geoadd",
    "content": "riot file-import http://storage.googleapis.com/jrx/airports.csv --header --skip-limit 3 geoadd --keyspace airportgeo --member AirportID --lon Longitude --lat Latitude"
  },
  {
    "path": "plugins/riot/src/test/resources/file-import-hset-expire",
    "content": "riot file-import http://storage.googleapis.com/jrx/beers.csv --header hset --keyspace beer --key id expire --keyspace beer --key id --ttl 3600000"
  },
  {
    "path": "plugins/riot/src/test/resources/file-import-hset-expire-abs",
    "content": "riot file-import http://storage.googleapis.com/jrx/beers.csv --proc exp=\"T(java.lang.System).currentTimeMillis()+10000\" --header hset --keyspace beer --key id expire --keyspace beer --key id --ttl-field exp --abs"
  },
  {
    "path": "plugins/riot/src/test/resources/file-import-hset-sadd",
    "content": "riot file-import http://storage.googleapis.com/jrx/beers.csv --header hset --keyspace beer --key id sadd --keyspace breweries --member brewery_id"
  },
  {
    "path": "plugins/riot/src/test/resources/file-import-include",
    "content": "riot file-import http://storage.googleapis.com/jrx/beers.csv --header hset --keyspace beer --key id --include name style abv"
  },
  {
    "path": "plugins/riot/src/test/resources/file-import-json",
    "content": "riot file-import /tmp/redis.json"
  },
  {
    "path": "plugins/riot/src/test/resources/file-import-json-elastic-hset",
    "content": "riot file-import http://storage.googleapis.com/jrx/es_test-index.json hset --keyspace estest --key _id"
  },
  {
    "path": "plugins/riot/src/test/resources/file-import-json-elastic-jsonset",
    "content": "riot file-import http://storage.googleapis.com/jrx/es_test-index.json json.set --keyspace elastic --key _id"
  },
  {
    "path": "plugins/riot/src/test/resources/file-import-json-gz-hset",
    "content": "riot file-import http://storage.googleapis.com/jrx/beers.json.gz hset --keyspace beer --key id"
  },
  {
    "path": "plugins/riot/src/test/resources/file-import-json-hset",
    "content": "riot file-import http://storage.googleapis.com/jrx/beers.json hset --keyspace beer --key id"
  },
  {
    "path": "plugins/riot/src/test/resources/file-import-process",
    "content": "riot file-import http://storage.googleapis.com/jrx/lacity.csv --date-format \"MM/dd/yyyy HH:mm:ss a\" --proc EventStartDate=\"remove('Event Start Date')\" EpochStart=\"#date.parse(EventStartDate).getTime()\" id=\"#number.parse(Id)*2\" --header hset --keyspace event --key Id"
  },
  {
    "path": "plugins/riot/src/test/resources/file-import-process-elvis",
    "content": "riot file-import http://storage.googleapis.com/jrx/beers.csv --header --proc ibu=\"ibu?:10\" hset --keyspace beer --key id"
  },
  {
    "path": "plugins/riot/src/test/resources/file-import-process-faker",
    "content": "riot file-import http://storage.googleapis.com/jrx/beers.csv --header --proc fakeid=\"#faker.numerify('########')\" hset --keyspace beer --key fakeid"
  },
  {
    "path": "plugins/riot/src/test/resources/file-import-process-var",
    "content": "riot file-import http://storage.googleapis.com/jrx/lacity.csv --var rnd=\"new java.util.Random()\" --proc randomInt=\"#rnd.nextInt(100)\" --header hset --keyspace event --key Id"
  },
  {
    "path": "plugins/riot/src/test/resources/file-import-psv",
    "content": "riot file-import http://storage.googleapis.com/jrx/sample.psv --type psv --header hset --keyspace sample --key id"
  },
  {
    "path": "plugins/riot/src/test/resources/file-import-regex",
    "content": "riot file-import http://storage.googleapis.com/jrx/airports.csv --regex Tz=\"(?<region>\\w+)\\/(?<city>\\w+)\" --header hset --keyspace airport --key AirportID"
  },
  {
    "path": "plugins/riot/src/test/resources/file-import-s3",
    "content": "riot file-import s3://riotx/beers.json --s3-region us-west-1 hset --keyspace beer --key id"
  },
  {
    "path": "plugins/riot/src/test/resources/file-import-sugadd",
    "content": "riot file-import http://storage.googleapis.com/jrx/beers.csv --header ft.sugadd --keyspace names --value name --payload style --ignore-missing"
  },
  {
    "path": "plugins/riot/src/test/resources/file-import-tsv",
    "content": "riot file-import http://storage.googleapis.com/jrx/sample.tsv --type tsv --header hset --keyspace sample --key id"
  },
  {
    "path": "plugins/riot/src/test/resources/file-import-xml",
    "content": "riot file-import http://storage.googleapis.com/jrx/trades.xml hset --keyspace trade --key id"
  },
  {
    "path": "plugins/riot/src/test/resources/files/accounts.fw",
    "content": "Account LastName        FirstName       Balance     CreditLimit   AccountCreated  Rating \n101     Reeves          Keanu           9315.45     10000.00      1/17/1998       A      \n312     Butler          Gerard          90.00       1000.00       8/6/2003        B      \n868     Hewitt          Jennifer Love   0           17000.00      5/25/1985       B      \n761     Pinkett-Smith   Jada            49654.87    100000.00     12/5/2006       A      \n317     Murray          Bill            789.65      5000.00       2/5/2007        C      "
  },
  {
    "path": "plugins/riot/src/test/resources/files/airports.csv",
    "content": "AirportID,Name,City,Country,IATA,ICAO,Latitude,Longitude,Altitude,Timezone,DST,Tz,Type,Source\n1,\"Goroka Airport\",\"Goroka\",\"Papua New Guinea\",\"GKA\",\"AYGA\",-6.081689834590001,145.391998291,5282,10,\"U\",\"Pacific/Port_Moresby\",\"airport\",\"OurAirports\"\n2,\"Madang Airport\",\"Madang\",\"Papua New Guinea\",\"MAG\",\"AYMD\",-5.20707988739,145.789001465,20,10,\"U\",\"Pacific/Port_Moresby\",\"airport\",\"OurAirports\"\n3,\"Mount Hagen Kagamuga Airport\",\"Mount Hagen\",\"Papua New Guinea\",\"HGU\",\"AYMH\",-5.826789855957031,144.29600524902344,5388,10,\"U\",\"Pacific/Port_Moresby\",\"airport\",\"OurAirports\"\n4,\"Nadzab Airport\",\"Nadzab\",\"Papua New Guinea\",\"LAE\",\"AYNZ\",-6.569803,146.725977,239,10,\"U\",\"Pacific/Port_Moresby\",\"airport\",\"OurAirports\"\n5,\"Port Moresby Jacksons International Airport\",\"Port Moresby\",\"Papua New Guinea\",\"POM\",\"AYPY\",-9.443380355834961,147.22000122070312,146,10,\"U\",\"Pacific/Port_Moresby\",\"airport\",\"OurAirports\"\n6,\"Wewak International Airport\",\"Wewak\",\"Papua New Guinea\",\"WWK\",\"AYWK\",-3.58383011818,143.669006348,19,10,\"U\",\"Pacific/Port_Moresby\",\"airport\",\"OurAirports\"\n7,\"Narsarsuaq Airport\",\"Narssarssuaq\",\"Greenland\",\"UAK\",\"BGBW\",61.1604995728,-45.4259986877,112,-3,\"E\",\"America/Godthab\",\"airport\",\"OurAirports\"\n8,\"Godthaab / Nuuk Airport\",\"Godthaab\",\"Greenland\",\"GOH\",\"BGGH\",64.19090271,-51.6781005859,283,-3,\"E\",\"America/Godthab\",\"airport\",\"OurAirports\"\n9,\"Kangerlussuaq Airport\",\"Sondrestrom\",\"Greenland\",\"SFJ\",\"BGSF\",67.0122218992,-50.7116031647,165,-3,\"E\",\"America/Godthab\",\"airport\",\"OurAirports\"\n10,\"Thule Air Base\",\"Thule\",\"Greenland\",\"THU\",\"BGTL\",76.5311965942,-68.7032012939,251,-4,\"E\",\"America/Thule\",\"airport\",\"OurAirports\"\n11,\"Akureyri Airport\",\"Akureyri\",\"Iceland\",\"AEY\",\"BIAR\",65.66000366210938,-18.07270050048828,6,0,\"N\",\"Atlantic/Reykjavik\",\"airport\",\"OurAirports\"\n12,\"Egilsstaðir Airport\",\"Egilsstadir\",\"Iceland\",\"EGS\",\"BIEG\",65.2833023071289,-14.401399612426758,76,0,\"N\",\"Atlantic/Reykjavik\",\"airport\",\"OurAirports\"\n13,\"Hornafjörður Airport\",\"Hofn\",\"Iceland\",\"HFN\",\"BIHN\",64.295601,-15.2272,24,0,\"N\",\"Atlantic/Reykjavik\",\"airport\",\"OurAirports\"\n14,\"Húsavík Airport\",\"Husavik\",\"Iceland\",\"HZK\",\"BIHU\",65.952301,-17.426001,48,0,\"N\",\"Atlantic/Reykjavik\",\"airport\",\"OurAirports\"\n15,\"Ísafjörður Airport\",\"Isafjordur\",\"Iceland\",\"IFJ\",\"BIIS\",66.05809783935547,-23.135299682617188,8,0,\"N\",\"Atlantic/Reykjavik\",\"airport\",\"OurAirports\"\n16,\"Keflavik International Airport\",\"Keflavik\",\"Iceland\",\"KEF\",\"BIKF\",63.985000610352,-22.605600357056,171,0,\"N\",\"Atlantic/Reykjavik\",\"airport\",\"OurAirports\"\n17,\"Patreksfjörður Airport\",\"Patreksfjordur\",\"Iceland\",\"PFJ\",\"BIPA\",65.555801,-23.965,11,0,\"N\",\"Atlantic/Reykjavik\",\"airport\",\"OurAirports\"\n18,\"Reykjavik Airport\",\"Reykjavik\",\"Iceland\",\"RKV\",\"BIRK\",64.1299972534,-21.9405994415,48,0,\"N\",\"Atlantic/Reykjavik\",\"airport\",\"OurAirports\"\n19,\"Siglufjörður Airport\",\"Siglufjordur\",\"Iceland\",\"SIJ\",\"BISI\",66.133301,-18.9167,10,0,\"N\",\"Atlantic/Reykjavik\",\"airport\",\"OurAirports\"\n20,\"Vestmannaeyjar Airport\",\"Vestmannaeyjar\",\"Iceland\",\"VEY\",\"BIVM\",63.42430114746094,-20.278900146484375,326,0,\"N\",\"Atlantic/Reykjavik\",\"airport\",\"OurAirports\"\n21,\"Sault Ste Marie Airport\",\"Sault Sainte Marie\",\"Canada\",\"YAM\",\"CYAM\",46.48500061035156,-84.5093994140625,630,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n22,\"Winnipeg / St. Andrews Airport\",\"Winnipeg\",\"Canada\",\\N,\"CYAV\",50.0564002991,-97.03250122070001,760,-6,\"A\",\"America/Winnipeg\",\"airport\",\"OurAirports\"\n23,\"Halifax / CFB Shearwater Heliport\",\"Halifax\",\"Canada\",\\N,\"CYAW\",44.639702,-63.499401,144,-4,\"A\",\"America/Halifax\",\"airport\",\"OurAirports\"\n24,\"St. Anthony Airport\",\"St. Anthony\",\"Canada\",\"YAY\",\"CYAY\",51.3918991089,-56.083099365200006,108,-3.5,\"A\",\"America/St_Johns\",\"airport\",\"OurAirports\"\n25,\"Tofino / Long Beach Airport\",\"Tofino\",\"Canada\",\"YAZ\",\"CYAZ\",49.079833,-125.775583,80,-8,\"A\",\"America/Vancouver\",\"airport\",\"OurAirports\"\n26,\"Kugaaruk Airport\",\"Pelly Bay\",\"Canada\",\"YBB\",\"CYBB\",68.534401,-89.808098,56,-7,\"A\",\"America/Edmonton\",\"airport\",\"OurAirports\"\n27,\"Baie Comeau Airport\",\"Baie Comeau\",\"Canada\",\"YBC\",\"CYBC\",49.13249969482422,-68.20439910888672,71,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n28,\"CFB Bagotville\",\"Bagotville\",\"Canada\",\"YBG\",\"CYBG\",48.33060073852539,-70.99639892578125,522,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n29,\"Baker Lake Airport\",\"Baker Lake\",\"Canada\",\"YBK\",\"CYBK\",64.29889678960001,-96.077796936,59,-6,\"A\",\"America/Winnipeg\",\"airport\",\"OurAirports\"\n30,\"Campbell River Airport\",\"Campbell River\",\"Canada\",\"YBL\",\"CYBL\",49.950801849365234,-125.27100372314453,346,-8,\"A\",\"America/Vancouver\",\"airport\",\"OurAirports\"\n31,\"Brandon Municipal Airport\",\"Brandon\",\"Canada\",\"YBR\",\"CYBR\",49.91,-99.951897,1343,-6,\"A\",\"America/Winnipeg\",\"airport\",\"OurAirports\"\n32,\"Cambridge Bay Airport\",\"Cambridge Bay\",\"Canada\",\"YCB\",\"CYCB\",69.1081008911,-105.138000488,90,-7,\"A\",\"America/Edmonton\",\"airport\",\"OurAirports\"\n33,\"Nanaimo Airport\",\"Nanaimo\",\"Canada\",\"YCD\",\"CYCD\",49.054970224899996,-123.869862556,92,-8,\"A\",\"America/Vancouver\",\"airport\",\"OurAirports\"\n34,\"Castlegar/West Kootenay Regional Airport\",\"Castlegar\",\"Canada\",\"YCG\",\"CYCG\",49.2963981628,-117.632003784,1624,-8,\"A\",\"America/Vancouver\",\"airport\",\"OurAirports\"\n35,\"Miramichi Airport\",\"Chatham\",\"Canada\",\"YCH\",\"CYCH\",47.007801,-65.449203,108,-4,\"A\",\"America/Halifax\",\"airport\",\"OurAirports\"\n36,\"Charlo Airport\",\"Charlo\",\"Canada\",\"YCL\",\"CYCL\",47.990799,-66.330299,132,-4,\"A\",\"America/Halifax\",\"airport\",\"OurAirports\"\n37,\"Kugluktuk Airport\",\"Coppermine\",\"Canada\",\"YCO\",\"CYCO\",67.816704,-115.143997,74,-7,\"A\",\"America/Edmonton\",\"airport\",\"OurAirports\"\n38,\"Coronation Airport\",\"Coronation\",\"Canada\",\"YCT\",\"CYCT\",52.0750007629,-111.444999695,2595,-7,\"A\",\"America/Edmonton\",\"airport\",\"OurAirports\"\n39,\"Chilliwack Airport\",\"Chilliwack\",\"Canada\",\"YCW\",\"CYCW\",49.1528015137,-121.939002991,32,-8,\"A\",\"America/Vancouver\",\"airport\",\"OurAirports\"\n40,\"Clyde River Airport\",\"Clyde River\",\"Canada\",\"YCY\",\"CYCY\",70.4860992432,-68.5167007446,87,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n41,\"Coral Harbour Airport\",\"Coral Harbour\",\"Canada\",\"YZS\",\"CYZS\",64.1932983398,-83.3593978882,210,-5,\"A\",\"America/Coral_Harbour\",\"airport\",\"OurAirports\"\n42,\"Dawson City Airport\",\"Dawson\",\"Canada\",\"YDA\",\"CYDA\",64.04309844970703,-139.1280059814453,1215,-8,\"A\",\"America/Vancouver\",\"airport\",\"OurAirports\"\n43,\"Burwash Airport\",\"Burwash\",\"Canada\",\"YDB\",\"CYDB\",61.37110137939453,-139.04100036621094,2647,-8,\"A\",\"America/Vancouver\",\"airport\",\"OurAirports\"\n44,\"Princeton Airport\",\"Princeton\",\"Canada\",\\N,\"CYDC\",49.4681015015,-120.511001587,2298,-8,\"A\",\"America/Vancouver\",\"airport\",\"OurAirports\"\n45,\"Deer Lake Airport\",\"Deer Lake\",\"Canada\",\"YDF\",\"CYDF\",49.21080017089844,-57.39139938354492,72,-3.5,\"A\",\"America/St_Johns\",\"airport\",\"OurAirports\"\n46,\"Dease Lake Airport\",\"Dease Lake\",\"Canada\",\"YDL\",\"CYDL\",58.4221992493,-130.031997681,2600,-8,\"A\",\"America/Vancouver\",\"airport\",\"OurAirports\"\n47,\"Dauphin Barker Airport\",\"Dauphin\",\"Canada\",\"YDN\",\"CYDN\",51.100799560546875,-100.052001953125,999,-6,\"A\",\"America/Winnipeg\",\"airport\",\"OurAirports\"\n48,\"Dawson Creek Airport\",\"Dawson Creek\",\"Canada\",\"YDQ\",\"CYDQ\",55.7422981262207,-120.18299865722656,2148,-7,\"A\",\"America/Dawson_Creek\",\"airport\",\"OurAirports\"\n49,\"Edmonton International Airport\",\"Edmonton\",\"Canada\",\"YEG\",\"CYEG\",53.309700012200004,-113.580001831,2373,-7,\"A\",\"America/Edmonton\",\"airport\",\"OurAirports\"\n50,\"Arviat Airport\",\"Eskimo Point\",\"Canada\",\"YEK\",\"CYEK\",61.0942001343,-94.07080078119999,32,-6,\"A\",\"America/Winnipeg\",\"airport\",\"OurAirports\"\n51,\"Estevan Airport\",\"Estevan\",\"Canada\",\"YEN\",\"CYEN\",49.2103004456,-102.966003418,1905,-6,\"N\",\"America/Regina\",\"airport\",\"OurAirports\"\n52,\"Edson Airport\",\"Edson\",\"Canada\",\"YET\",\"CYET\",53.578899383499994,-116.464996338,3043,-7,\"A\",\"America/Edmonton\",\"airport\",\"OurAirports\"\n53,\"Eureka Airport\",\"Eureka\",\"Canada\",\"YEU\",\"CYEU\",79.9946975708,-85.814201355,256,-6,\"A\",\"America/Winnipeg\",\"airport\",\"OurAirports\"\n54,\"Inuvik Mike Zubko Airport\",\"Inuvik\",\"Canada\",\"YEV\",\"CYEV\",68.30419921880001,-133.483001709,224,-7,\"A\",\"America/Edmonton\",\"airport\",\"OurAirports\"\n55,\"Iqaluit Airport\",\"Iqaluit\",\"Canada\",\"YFB\",\"CYFB\",63.756402,-68.555801,110,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n56,\"Fredericton Airport\",\"Fredericton\",\"Canada\",\"YFC\",\"CYFC\",45.868900299072266,-66.53720092773438,68,-4,\"A\",\"America/Halifax\",\"airport\",\"OurAirports\"\n57,\"Forestville Airport\",\"Forestville\",\"Canada\",\"YFE\",\"CYFE\",48.74610137939453,-69.09719848632812,293,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n58,\"Flin Flon Airport\",\"Flin Flon\",\"Canada\",\"YFO\",\"CYFO\",54.6781005859375,-101.68199920654297,997,-6,\"A\",\"America/Winnipeg\",\"airport\",\"OurAirports\"\n59,\"Fort Resolution Airport\",\"Fort Resolution\",\"Canada\",\"YFR\",\"CYFR\",61.1808013916,-113.690002441,526,-7,\"A\",\"America/Edmonton\",\"airport\",\"OurAirports\"\n60,\"Fort Simpson Airport\",\"Fort Simpson\",\"Canada\",\"YFS\",\"CYFS\",61.76020050048828,-121.23699951171875,555,-7,\"A\",\"America/Edmonton\",\"airport\",\"OurAirports\"\n61,\"Kingston Norman Rogers Airport\",\"Kingston\",\"Canada\",\"YGK\",\"CYGK\",44.22529983520508,-76.5969009399414,305,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n62,\"La Grande Rivière Airport\",\"La Grande Riviere\",\"Canada\",\"YGL\",\"CYGL\",53.625301361083984,-77.7042007446289,639,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n63,\"Gaspé (Michel-Pouliot) Airport\",\"Gaspe\",\"Canada\",\"YGP\",\"CYGP\",48.7752990723,-64.4785995483,112,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n64,\"Geraldton Greenstone Regional Airport\",\"Geraldton\",\"Canada\",\"YGQ\",\"CYGQ\",49.77830123901367,-86.93939971923828,1144,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n65,\"Îles-de-la-Madeleine Airport\",\"Iles De La Madeleine\",\"Canada\",\"YGR\",\"CYGR\",47.42470169067383,-61.778099060058594,35,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n66,\"Hudson Bay Airport\",\"Hudson Bay\",\"Canada\",\"YHB\",\"CYHB\",52.8166999817,-102.310997009,1175,-6,\"N\",\"America/Regina\",\"airport\",\"OurAirports\"\n67,\"Dryden Regional Airport\",\"Dryden\",\"Canada\",\"YHD\",\"CYHD\",49.831699,-92.744202,1354,-6,\"A\",\"America/Winnipeg\",\"airport\",\"OurAirports\"\n68,\"Ulukhaktok Holman Airport\",\"Holman Island\",\"Canada\",\"YHI\",\"CYHI\",70.76280212402344,-117.80599975585938,117,-7,\"A\",\"America/Edmonton\",\"airport\",\"OurAirports\"\n69,\"Gjoa Haven Airport\",\"Gjoa Haven\",\"Canada\",\"YHK\",\"CYHK\",68.635597229,-95.84970092770001,152,-7,\"A\",\"America/Edmonton\",\"airport\",\"OurAirports\"\n70,\"John C. Munro Hamilton International Airport\",\"Hamilton\",\"Canada\",\"YHM\",\"CYHM\",43.173599243199995,-79.93499755859999,780,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n71,\"Montréal / Saint-Hubert Airport\",\"Montreal\",\"Canada\",\"YHU\",\"CYHU\",45.5175018311,-73.4169006348,90,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n72,\"Hay River / Merlyn Carter Airport\",\"Hay River\",\"Canada\",\"YHY\",\"CYHY\",60.8396987915,-115.782997131,541,-7,\"A\",\"America/Edmonton\",\"airport\",\"OurAirports\"\n73,\"Halifax / Stanfield International Airport\",\"Halifax\",\"Canada\",\"YHZ\",\"CYHZ\",44.8807983398,-63.5085983276,477,-4,\"A\",\"America/Halifax\",\"airport\",\"OurAirports\"\n74,\"Atikokan Municipal Airport\",\"Atikokan\",\"Canada\",\"YIB\",\"CYIB\",48.7738990784,-91.6386032104,1408,-5,\"A\",\"America/Coral_Harbour\",\"airport\",\"OurAirports\"\n75,\"Pond Inlet Airport\",\"Pond Inlet\",\"Canada\",\"YIO\",\"CYIO\",72.6832962036,-77.9666976929,181,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n76,\"St Jean Airport\",\"St. Jean\",\"Canada\",\"YJN\",\"CYJN\",45.29439926147461,-73.28109741210938,136,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n77,\"Stephenville Airport\",\"Stephenville\",\"Canada\",\"YJT\",\"CYJT\",48.5442008972168,-58.54999923706055,84,-3.5,\"A\",\"America/St_Johns\",\"airport\",\"OurAirports\"\n78,\"Kamloops Airport\",\"Kamloops\",\"Canada\",\"YKA\",\"CYKA\",50.7022018433,-120.444000244,1133,-8,\"A\",\"America/Vancouver\",\"airport\",\"OurAirports\"\n79,\"Waterloo Airport\",\"Waterloo\",\"Canada\",\"YKF\",\"CYKF\",43.460800170899994,-80.3786010742,1055,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n80,\"Schefferville Airport\",\"Schefferville\",\"Canada\",\"YKL\",\"CYKL\",54.805301666259766,-66.8052978515625,1709,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n81,\"Kindersley Airport\",\"Kindersley\",\"Canada\",\"YKY\",\"CYKY\",51.5175018311,-109.180999756,2277,-6,\"N\",\"America/Regina\",\"airport\",\"OurAirports\"\n82,\"Buttonville Municipal Airport\",\"Toronto\",\"Canada\",\"YKZ\",\"CYKZ\",43.86220169067383,-79.37000274658203,650,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n83,\"Chapleau Airport\",\"Chapleau\",\"Canada\",\"YLD\",\"CYLD\",47.81999969482422,-83.3467025756836,1470,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n84,\"Meadow Lake Airport\",\"Meadow Lake\",\"Canada\",\"YLJ\",\"CYLJ\",54.125301361083984,-108.52300262451172,1576,-6,\"N\",\"America/Regina\",\"airport\",\"OurAirports\"\n85,\"Lloydminster Airport\",\"Lloydminster\",\"Canada\",\"YLL\",\"CYLL\",53.309200286865234,-110.072998046875,2193,-7,\"A\",\"America/Edmonton\",\"airport\",\"OurAirports\"\n86,\"Alert Airport\",\"Alert\",\"Canada\",\"YLT\",\"CYLT\",82.51779937740001,-62.2806015015,100,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n87,\"Kelowna International Airport\",\"Kelowna\",\"Canada\",\"YLW\",\"CYLW\",49.9561004639,-119.377998352,1421,-8,\"A\",\"America/Vancouver\",\"airport\",\"OurAirports\"\n88,\"Mayo Airport\",\"Mayo\",\"Canada\",\"YMA\",\"CYMA\",63.61640167236328,-135.8679962158203,1653,-8,\"A\",\"America/Vancouver\",\"airport\",\"OurAirports\"\n89,\"Moose Jaw Air Vice Marshal C. M. McEwen Airport\",\"Moose Jaw\",\"Canada\",\"YMJ\",\"CYMJ\",50.330299377441406,-105.55899810791016,1892,-6,\"N\",\"America/Regina\",\"airport\",\"OurAirports\"\n90,\"Fort McMurray Airport\",\"Fort Mcmurray\",\"Canada\",\"YMM\",\"CYMM\",56.653301239,-111.222000122,1211,-7,\"A\",\"America/Edmonton\",\"airport\",\"OurAirports\"\n91,\"Moosonee Airport\",\"Moosonee\",\"Canada\",\"YMO\",\"CYMO\",51.291099548339844,-80.60780334472656,30,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n92,\"Maniwaki Airport\",\"Maniwaki\",\"Canada\",\"YMW\",\"CYMW\",46.2728004456,-75.9906005859,656,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n93,\"Montreal International (Mirabel) Airport\",\"Montreal\",\"Canada\",\"YMX\",\"CYMX\",45.679501,-74.038696,270,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n94,\"Natashquan Airport\",\"Natashquan\",\"Canada\",\"YNA\",\"CYNA\",50.189998626708984,-61.78919982910156,39,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n95,\"Ottawa / Gatineau Airport\",\"Gatineau\",\"Canada\",\"YND\",\"CYND\",45.521701812699995,-75.5635986328,211,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n96,\"Matagami Airport\",\"Matagami\",\"Canada\",\"YNM\",\"CYNM\",49.76169967651367,-77.80280303955078,918,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n97,\"Old Crow Airport\",\"Old Crow\",\"Canada\",\"YOC\",\"CYOC\",67.57060241699219,-139.83900451660156,824,-8,\"A\",\"America/Vancouver\",\"airport\",\"OurAirports\"\n98,\"CFB Cold Lake\",\"Cold Lake\",\"Canada\",\"YOD\",\"CYOD\",54.404998779296875,-110.27899932861328,1775,-7,\"A\",\"America/Edmonton\",\"airport\",\"OurAirports\"\n99,\"High Level Airport\",\"High Level\",\"Canada\",\"YOJ\",\"CYOJ\",58.62139892578125,-117.16500091552734,1110,-7,\"A\",\"America/Edmonton\",\"airport\",\"OurAirports\"\n100,\"Ottawa Macdonald-Cartier International Airport\",\"Ottawa\",\"Canada\",\"YOW\",\"CYOW\",45.3224983215332,-75.66919708251953,374,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n101,\"Prince Albert Glass Field\",\"Prince Albert\",\"Canada\",\"YPA\",\"CYPA\",53.214199066199996,-105.672996521,1405,-6,\"N\",\"America/Regina\",\"airport\",\"OurAirports\"\n102,\"Peace River Airport\",\"Peace River\",\"Canada\",\"YPE\",\"CYPE\",56.226898,-117.446999,1873,-7,\"A\",\"America/Edmonton\",\"airport\",\"OurAirports\"\n103,\"Southport Airport\",\"Portage-la-prairie\",\"Canada\",\"YPG\",\"CYPG\",49.903099,-98.273817,885,-6,\"A\",\"America/Winnipeg\",\"airport\",\"OurAirports\"\n104,\"Pitt Meadows Airport\",\"Pitt Meadows\",\"Canada\",\\N,\"CYPK\",49.21609878540039,-122.70999908447266,11,-8,\"A\",\"America/Vancouver\",\"airport\",\"OurAirports\"\n105,\"Pickle Lake Airport\",\"Pickle Lake\",\"Canada\",\"YPL\",\"CYPL\",51.4463996887207,-90.21420288085938,1267,-5,\"A\",\"America/Coral_Harbour\",\"airport\",\"OurAirports\"\n106,\"Port Menier Airport\",\"Port Menier\",\"Canada\",\"YPN\",\"CYPN\",49.83639907836914,-64.2885971069336,167,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n107,\"Peterborough Airport\",\"Peterborough\",\"Canada\",\"YPQ\",\"CYPQ\",44.22999954223633,-78.36329650878906,628,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n108,\"Prince Rupert Airport\",\"Prince Pupert\",\"Canada\",\"YPR\",\"CYPR\",54.286098480199996,-130.445007324,116,-8,\"A\",\"America/Vancouver\",\"airport\",\"OurAirports\"\n109,\"Fort Chipewyan Airport\",\"Fort Chipewyan\",\"Canada\",\"YPY\",\"CYPY\",58.7672004699707,-111.11699676513672,761,-7,\"A\",\"America/Edmonton\",\"airport\",\"OurAirports\"\n110,\"Muskoka Airport\",\"Muskoka\",\"Canada\",\"YQA\",\"CYQA\",44.974700927734375,-79.30329895019531,925,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n111,\"Quebec Jean Lesage International Airport\",\"Quebec\",\"Canada\",\"YQB\",\"CYQB\",46.7911,-71.393303,244,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n112,\"Red Deer Regional Airport\",\"Red Deer Industrial\",\"Canada\",\"YQF\",\"CYQF\",52.18220138549805,-113.89399719238281,2968,-7,\"A\",\"America/Edmonton\",\"airport\",\"OurAirports\"\n113,\"Windsor Airport\",\"Windsor\",\"Canada\",\"YQG\",\"CYQG\",42.27560043334961,-82.95559692382812,622,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n114,\"Watson Lake Airport\",\"Watson Lake\",\"Canada\",\"YQH\",\"CYQH\",60.11640167236328,-128.82200622558594,2255,-8,\"A\",\"America/Vancouver\",\"airport\",\"OurAirports\"\n115,\"Kenora Airport\",\"Kenora\",\"Canada\",\"YQK\",\"CYQK\",49.788299560546875,-94.36309814453125,1332,-6,\"A\",\"America/Winnipeg\",\"airport\",\"OurAirports\"\n116,\"Lethbridge County Airport\",\"Lethbridge\",\"Canada\",\"YQL\",\"CYQL\",49.6302986145,-112.800003052,3048,-7,\"A\",\"America/Edmonton\",\"airport\",\"OurAirports\"\n117,\"Greater Moncton International Airport\",\"Moncton\",\"Canada\",\"YQM\",\"CYQM\",46.11220169067383,-64.67859649658203,232,-4,\"A\",\"America/Halifax\",\"airport\",\"OurAirports\"\n119,\"Comox Airport\",\"Comox\",\"Canada\",\"YQQ\",\"CYQQ\",49.71080017089844,-124.88700103759766,84,-8,\"A\",\"America/Vancouver\",\"airport\",\"OurAirports\"\n120,\"Regina International Airport\",\"Regina\",\"Canada\",\"YQR\",\"CYQR\",50.43190002441406,-104.66600036621094,1894,-6,\"N\",\"America/Regina\",\"airport\",\"OurAirports\"\n121,\"Thunder Bay Airport\",\"Thunder Bay\",\"Canada\",\"YQT\",\"CYQT\",48.37189865112305,-89.32389831542969,653,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n122,\"Grande Prairie Airport\",\"Grande Prairie\",\"Canada\",\"YQU\",\"CYQU\",55.1796989441,-118.885002136,2195,-7,\"A\",\"America/Edmonton\",\"airport\",\"OurAirports\"\n123,\"Yorkton Municipal Airport\",\"Yorkton\",\"Canada\",\"YQV\",\"CYQV\",51.26470184326172,-102.46199798583984,1635,-6,\"N\",\"America/Regina\",\"airport\",\"OurAirports\"\n124,\"North Battleford Airport\",\"North Battleford\",\"Canada\",\"YQW\",\"CYQW\",52.76919937133789,-108.24400329589844,1799,-6,\"N\",\"America/Regina\",\"airport\",\"OurAirports\"\n125,\"Gander International Airport\",\"Gander\",\"Canada\",\"YQX\",\"CYQX\",48.9369010925293,-54.56809997558594,496,-3.5,\"A\",\"America/St_Johns\",\"airport\",\"OurAirports\"\n126,\"Sydney / J.A. Douglas McCurdy Airport\",\"Sydney\",\"Canada\",\"YQY\",\"CYQY\",46.1614,-60.047798,203,-4,\"A\",\"America/Halifax\",\"airport\",\"OurAirports\"\n127,\"Quesnel Airport\",\"Quesnel\",\"Canada\",\"YQZ\",\"CYQZ\",53.026100158691406,-122.51000213623047,1789,-8,\"A\",\"America/Vancouver\",\"airport\",\"OurAirports\"\n128,\"Resolute Bay Airport\",\"Resolute\",\"Canada\",\"YRB\",\"CYRB\",74.7169036865,-94.9693984985,215,-6,\"A\",\"America/Winnipeg\",\"airport\",\"OurAirports\"\n129,\"Rivière-du-Loup Airport\",\"Riviere Du Loup\",\"Canada\",\"YRI\",\"CYRI\",47.764400482177734,-69.58470153808594,427,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n130,\"Roberval Airport\",\"Roberval\",\"Canada\",\"YRJ\",\"CYRJ\",48.52000045776367,-72.2656021118164,586,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n131,\"Rocky Mountain House Airport\",\"Rocky Mountain House\",\"Canada\",\"YRM\",\"CYRM\",52.4296989441,-114.903999329,3244,-7,\"A\",\"America/Edmonton\",\"airport\",\"OurAirports\"\n132,\"Rankin Inlet Airport\",\"Rankin Inlet\",\"Canada\",\"YRT\",\"CYRT\",62.8114013672,-92.1157989502,94,-6,\"A\",\"America/Winnipeg\",\"airport\",\"OurAirports\"\n133,\"Sudbury Airport\",\"Sudbury\",\"Canada\",\"YSB\",\"CYSB\",46.625,-80.79889678955078,1141,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n134,\"Sherbrooke Airport\",\"Sherbrooke\",\"Canada\",\"YSC\",\"CYSC\",45.4385986328125,-71.69139862060547,792,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n135,\"Saint John Airport\",\"St. John\",\"Canada\",\"YSJ\",\"CYSJ\",45.31610107421875,-65.89029693603516,357,-4,\"A\",\"America/Halifax\",\"airport\",\"OurAirports\"\n136,\"Fort Smith Airport\",\"Fort Smith\",\"Canada\",\"YSM\",\"CYSM\",60.020301818847656,-111.96199798583984,671,-7,\"A\",\"America/Edmonton\",\"airport\",\"OurAirports\"\n137,\"Nanisivik Airport\",\"Nanisivik\",\"Canada\",\"YSR\",\"CYSR\",72.982201,-84.613602,2106,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n138,\"Summerside Airport\",\"Summerside\",\"Canada\",\"YSU\",\"CYSU\",46.44060134887695,-63.83359909057617,56,-4,\"A\",\"America/Halifax\",\"airport\",\"OurAirports\"\n139,\"Sachs Harbour (David Nasogaluak Jr. Saaryuaq) Airport\",\"Sachs Harbour\",\"Canada\",\"YSY\",\"CYSY\",71.9938964844,-125.242996216,282,-7,\"A\",\"America/Edmonton\",\"airport\",\"OurAirports\"\n140,\"Cape Dorset Airport\",\"Cape Dorset\",\"Canada\",\"YTE\",\"CYTE\",64.2300033569,-76.5267028809,164,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n141,\"Thompson Airport\",\"Thompson\",\"Canada\",\"YTH\",\"CYTH\",55.80110168457031,-97.86419677734375,729,-6,\"A\",\"America/Winnipeg\",\"airport\",\"OurAirports\"\n142,\"CFB Trenton\",\"Trenton\",\"Canada\",\"YTR\",\"CYTR\",44.118900299072266,-77.5280990600586,283,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n143,\"Timmins/Victor M. Power\",\"Timmins\",\"Canada\",\"YTS\",\"CYTS\",48.569698333699996,-81.376701355,967,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n144,\"Billy Bishop Toronto City Centre Airport\",\"Toronto\",\"Canada\",\"YTZ\",\"CYTZ\",43.627499,-79.396202,252,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n145,\"Tuktoyaktuk Airport\",\"Tuktoyaktuk\",\"Canada\",\"YUB\",\"CYUB\",69.43329620361328,-133.0260009765625,15,-7,\"A\",\"America/Edmonton\",\"airport\",\"OurAirports\"\n146,\"Montreal / Pierre Elliott Trudeau International Airport\",\"Montreal\",\"Canada\",\"YUL\",\"CYUL\",45.4706001282,-73.7407989502,118,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n147,\"Repulse Bay Airport\",\"Repulse Bay\",\"Canada\",\"YUT\",\"CYUT\",66.5214004517,-86.22470092770001,80,-6,\"A\",\"America/Winnipeg\",\"airport\",\"OurAirports\"\n148,\"Hall Beach Airport\",\"Hall Beach\",\"Canada\",\"YUX\",\"CYUX\",68.77610015869999,-81.2425,30,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n149,\"Rouyn Noranda Airport\",\"Rouyn\",\"Canada\",\"YUY\",\"CYUY\",48.20610046386719,-78.83560180664062,988,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n150,\"La Ronge Airport\",\"La Ronge\",\"Canada\",\"YVC\",\"CYVC\",55.151401519800004,-105.262001038,1242,-6,\"N\",\"America/Regina\",\"airport\",\"OurAirports\"\n151,\"Vermilion Airport\",\"Vermillion\",\"Canada\",\"YVG\",\"CYVG\",53.355800628699996,-110.823997498,2025,-7,\"A\",\"America/Edmonton\",\"airport\",\"OurAirports\"\n152,\"Qikiqtarjuaq Airport\",\"Broughton Island\",\"Canada\",\"YVM\",\"CYVM\",67.5457992554,-64.03140258789999,21,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n153,\"Val-d'Or Airport\",\"Val D'or\",\"Canada\",\"YVO\",\"CYVO\",48.0532989502,-77.7827987671,1107,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n154,\"Kuujjuaq Airport\",\"Quujjuaq\",\"Canada\",\"YVP\",\"CYVP\",58.096099853515625,-68.4269027709961,129,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n155,\"Norman Wells Airport\",\"Norman Wells\",\"Canada\",\"YVQ\",\"CYVQ\",65.28160095214844,-126.7979965209961,238,-7,\"A\",\"America/Edmonton\",\"airport\",\"OurAirports\"\n156,\"Vancouver International Airport\",\"Vancouver\",\"Canada\",\"YVR\",\"CYVR\",49.193901062,-123.183998108,14,-8,\"A\",\"America/Vancouver\",\"airport\",\"OurAirports\"\n157,\"Buffalo Narrows Airport\",\"Buffalo Narrows\",\"Canada\",\"YVT\",\"CYVT\",55.8418998718,-108.417999268,1423,-6,\"N\",\"America/Regina\",\"airport\",\"OurAirports\"\n158,\"Wiarton Airport\",\"Wiarton\",\"Canada\",\"YVV\",\"CYVV\",44.7458,-81.107201,729,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n159,\"Petawawa Airport\",\"Petawawa\",\"Canada\",\"YWA\",\"CYWA\",45.95220184326172,-77.31919860839844,427,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n160,\"Winnipeg / James Armstrong Richardson International Airport\",\"Winnipeg\",\"Canada\",\"YWG\",\"CYWG\",49.909999847399995,-97.2398986816,783,-6,\"A\",\"America/Winnipeg\",\"airport\",\"OurAirports\"\n161,\"Wabush Airport\",\"Wabush\",\"Canada\",\"YWK\",\"CYWK\",52.92190170288086,-66.8644027709961,1808,-4,\"A\",\"America/Halifax\",\"airport\",\"OurAirports\"\n162,\"Williams Lake Airport\",\"Williams Lake\",\"Canada\",\"YWL\",\"CYWL\",52.1831016541,-122.054000854,3085,-8,\"A\",\"America/Vancouver\",\"airport\",\"OurAirports\"\n163,\"Wrigley Airport\",\"Wrigley\",\"Canada\",\"YWY\",\"CYWY\",63.20940017700195,-123.43699645996094,489,-7,\"A\",\"America/Edmonton\",\"airport\",\"OurAirports\"\n164,\"Cranbrook/Canadian Rockies International Airport\",\"Cranbrook\",\"Canada\",\"YXC\",\"CYXC\",49.610801696777,-115.78199768066,3082,-7,\"A\",\"America/Edmonton\",\"airport\",\"OurAirports\"\n165,\"Edmonton City Centre (Blatchford Field) Airport\",\"Edmonton\",\"Canada\",\"YXD\",\"CYXD\",53.5724983215,-113.521003723,2202,-7,\"A\",\"America/Edmonton\",\"airport\",\"OurAirports\"\n166,\"Saskatoon John G. Diefenbaker International Airport\",\"Saskatoon\",\"Canada\",\"YXE\",\"CYXE\",52.170799255371094,-106.69999694824219,1653,-6,\"N\",\"America/Regina\",\"airport\",\"OurAirports\"\n167,\"Medicine Hat Airport\",\"Medicine Hat\",\"Canada\",\"YXH\",\"CYXH\",50.01890182495117,-110.72100067138672,2352,-7,\"A\",\"America/Edmonton\",\"airport\",\"OurAirports\"\n168,\"Fort St John Airport\",\"Fort Saint John\",\"Canada\",\"YXJ\",\"CYXJ\",56.23809814453125,-120.73999786376953,2280,-7,\"A\",\"America/Dawson_Creek\",\"airport\",\"OurAirports\"\n169,\"Sioux Lookout Airport\",\"Sioux Lookout\",\"Canada\",\"YXL\",\"CYXL\",50.11389923095703,-91.9052963256836,1258,-6,\"A\",\"America/Winnipeg\",\"airport\",\"OurAirports\"\n170,\"Pangnirtung Airport\",\"Pangnirtung\",\"Canada\",\"YXP\",\"CYXP\",66.1449966431,-65.71360015869999,75,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n171,\"Earlton (Timiskaming Regional) Airport\",\"Earlton\",\"Canada\",\"YXR\",\"CYXR\",47.697400654599996,-79.8473453522,800,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n172,\"Prince George Airport\",\"Prince George\",\"Canada\",\"YXS\",\"CYXS\",53.8894004822,-122.679000854,2267,-8,\"A\",\"America/Vancouver\",\"airport\",\"OurAirports\"\n173,\"Northwest Regional Airport Terrace-Kitimat\",\"Terrace\",\"Canada\",\"YXT\",\"CYXT\",54.468498,-128.576009,713,-8,\"A\",\"America/Vancouver\",\"airport\",\"OurAirports\"\n174,\"London Airport\",\"London\",\"Canada\",\"YXU\",\"CYXU\",43.035599,-81.1539,912,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n175,\"Abbotsford Airport\",\"Abbotsford\",\"Canada\",\"YXX\",\"CYXX\",49.025299072265625,-122.36100006103516,195,-8,\"A\",\"America/Vancouver\",\"airport\",\"OurAirports\"\n176,\"Whitehorse / Erik Nielsen International Airport\",\"Whitehorse\",\"Canada\",\"YXY\",\"CYXY\",60.7095985413,-135.067001343,2317,-8,\"A\",\"America/Vancouver\",\"airport\",\"OurAirports\"\n177,\"North Bay Jack Garland Airport\",\"North Bay\",\"Canada\",\"YYB\",\"CYYB\",46.363602,-79.422798,1215,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n178,\"Calgary International Airport\",\"Calgary\",\"Canada\",\"YYC\",\"CYYC\",51.113899231,-114.019996643,3557,-7,\"A\",\"America/Edmonton\",\"airport\",\"OurAirports\"\n179,\"Smithers Airport\",\"Smithers\",\"Canada\",\"YYD\",\"CYYD\",54.82469940185547,-127.18299865722656,1712,-8,\"A\",\"America/Vancouver\",\"airport\",\"OurAirports\"\n180,\"Fort Nelson Airport\",\"Fort Nelson\",\"Canada\",\"YYE\",\"CYYE\",58.8363990784,-122.597000122,1253,-8,\"A\",\"America/Vancouver\",\"airport\",\"OurAirports\"\n181,\"Penticton Airport\",\"Penticton\",\"Canada\",\"YYF\",\"CYYF\",49.46310043334961,-119.60199737548828,1129,-8,\"A\",\"America/Vancouver\",\"airport\",\"OurAirports\"\n182,\"Charlottetown Airport\",\"Charlottetown\",\"Canada\",\"YYG\",\"CYYG\",46.290000915527344,-63.12110137939453,160,-4,\"A\",\"America/Halifax\",\"airport\",\"OurAirports\"\n183,\"Taloyoak Airport\",\"Spence Bay\",\"Canada\",\"YYH\",\"CYYH\",69.5466995239,-93.5766983032,92,-7,\"A\",\"America/Edmonton\",\"airport\",\"OurAirports\"\n184,\"Victoria International Airport\",\"Victoria\",\"Canada\",\"YYJ\",\"CYYJ\",48.646900177,-123.426002502,63,-8,\"A\",\"America/Vancouver\",\"airport\",\"OurAirports\"\n185,\"Lynn Lake Airport\",\"Lynn Lake\",\"Canada\",\"YYL\",\"CYYL\",56.86389923095703,-101.07599639892578,1170,-6,\"A\",\"America/Winnipeg\",\"airport\",\"OurAirports\"\n186,\"Swift Current Airport\",\"Swift Current\",\"Canada\",\"YYN\",\"CYYN\",50.291900634799994,-107.691001892,2680,-6,\"N\",\"America/Regina\",\"airport\",\"OurAirports\"\n187,\"Churchill Airport\",\"Churchill\",\"Canada\",\"YYQ\",\"CYYQ\",58.739200592041016,-94.06500244140625,94,-6,\"A\",\"America/Winnipeg\",\"airport\",\"OurAirports\"\n188,\"Goose Bay Airport\",\"Goose Bay\",\"Canada\",\"YYR\",\"CYYR\",53.3191986084,-60.4258003235,160,-4,\"A\",\"America/Halifax\",\"airport\",\"OurAirports\"\n189,\"St. John's International Airport\",\"St. John's\",\"Canada\",\"YYT\",\"CYYT\",47.618598938,-52.7518997192,461,-3.5,\"A\",\"America/St_Johns\",\"airport\",\"OurAirports\"\n190,\"Kapuskasing Airport\",\"Kapuskasing\",\"Canada\",\"YYU\",\"CYYU\",49.41389846801758,-82.46749877929688,743,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n191,\"Armstrong Airport\",\"Armstrong\",\"Canada\",\"YYW\",\"CYYW\",50.29029846191406,-88.90969848632812,1058,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n192,\"Mont Joli Airport\",\"Mont Joli\",\"Canada\",\"YYY\",\"CYYY\",48.60860061645508,-68.20809936523438,172,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n193,\"Lester B. Pearson International Airport\",\"Toronto\",\"Canada\",\"YYZ\",\"CYYZ\",43.6772003174,-79.63059997559999,569,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n194,\"Downsview Airport\",\"Toronto\",\"Canada\",\"YZD\",\"CYZD\",43.74250030517578,-79.4655990600586,652,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n195,\"Gore Bay Manitoulin Airport\",\"Gore Bay\",\"Canada\",\"YZE\",\"CYZE\",45.88529968261719,-82.56780242919922,635,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n196,\"Yellowknife Airport\",\"Yellowknife\",\"Canada\",\"YZF\",\"CYZF\",62.462799072265625,-114.44000244140625,675,-7,\"A\",\"America/Edmonton\",\"airport\",\"OurAirports\"\n197,\"Slave Lake Airport\",\"Slave Lake\",\"Canada\",\"YZH\",\"CYZH\",55.2930984497,-114.777000427,1912,-7,\"A\",\"America/Edmonton\",\"airport\",\"OurAirports\"\n198,\"Sandspit Airport\",\"Sandspit\",\"Canada\",\"YZP\",\"CYZP\",53.25429916379999,-131.813995361,21,-8,\"A\",\"America/Vancouver\",\"airport\",\"OurAirports\"\n199,\"Chris Hadfield Airport\",\"Sarnia\",\"Canada\",\"YZR\",\"CYZR\",42.9994010925293,-82.30889892578125,594,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n200,\"Port Hardy Airport\",\"Port Hardy\",\"Canada\",\"YZT\",\"CYZT\",50.680599212646484,-127.36699676513672,71,-8,\"A\",\"America/Vancouver\",\"airport\",\"OurAirports\"\n201,\"Whitecourt Airport\",\"Whitecourt\",\"Canada\",\"YZU\",\"CYZU\",54.14390182495117,-115.78700256347656,2567,-7,\"A\",\"America/Edmonton\",\"airport\",\"OurAirports\"\n202,\"Sept-Îles Airport\",\"Sept-iles\",\"Canada\",\"YZV\",\"CYZV\",50.22330093383789,-66.2656021118164,180,-5,\"A\",\"America/Toronto\",\"airport\",\"OurAirports\"\n203,\"Teslin Airport\",\"Teslin\",\"Canada\",\"YZW\",\"CYZW\",60.17279815673828,-132.7429962158203,2313,-8,\"A\",\"America/Vancouver\",\"airport\",\"OurAirports\"\n204,\"CFB Greenwood\",\"Greenwood\",\"Canada\",\"YZX\",\"CYZX\",44.98440170288086,-64.91690063476562,92,-4,\"A\",\"America/Halifax\",\"airport\",\"OurAirports\"\n205,\"Faro Airport\",\"Faro\",\"Canada\",\"ZFA\",\"CZFA\",62.20750045776367,-133.37600708007812,2351,-8,\"A\",\"America/Vancouver\",\"airport\",\"OurAirports\"\n206,\"Fort Mcpherson Airport\",\"Fort Mcpherson\",\"Canada\",\"ZFM\",\"CZFM\",67.40750122070312,-134.86099243164062,116,-7,\"A\",\"America/Edmonton\",\"airport\",\"OurAirports\"\n207,\"Blida Airport\",\"Blida\",\"Algeria\",\"QLD\",\"DAAB\",36.50360107421875,2.8141698837280273,535,1,\"N\",\"Africa/Algiers\",\"airport\",\"OurAirports\"\n208,\"Bou Saada Airport\",\"Bou Saada\",\"Algeria\",\"BUJ\",\"DAAD\",35.33250045776367,4.206389904022217,1506,1,\"N\",\"Africa/Algiers\",\"airport\",\"OurAirports\"\n209,\"Soummam Airport\",\"Bejaja\",\"Algeria\",\"BJA\",\"DAAE\",36.7120018005,5.0699200630200005,20,1,\"N\",\"Africa/Algiers\",\"airport\",\"OurAirports\"\n210,\"Houari Boumediene Airport\",\"Algier\",\"Algeria\",\"ALG\",\"DAAG\",36.691001892089844,3.215409994125366,82,1,\"N\",\"Africa/Algiers\",\"airport\",\"OurAirports\"\n211,\"Djanet Inedbirene Airport\",\"Djanet\",\"Algeria\",\"DJG\",\"DAAJ\",24.292801,9.45244,3176,1,\"N\",\"Africa/Algiers\",\"airport\",\"OurAirports\"\n212,\"Boufarik Airport\",\"Boufarik\",\"Algeria\",\\N,\"DAAK\",36.545799,2.87611,335,1,\"N\",\"Africa/Algiers\",\"airport\",\"OurAirports\"\n213,\"Reggane Airport\",\"Reggan\",\"Algeria\",\\N,\"DAAN\",26.7101,0.285647,955,1,\"N\",\"Africa/Algiers\",\"airport\",\"OurAirports\"\n214,\"Illizi Takhamalt Airport\",\"Illizi\",\"Algeria\",\"VVZ\",\"DAAP\",26.7234992981,8.62265014648,1778,1,\"N\",\"Africa/Algiers\",\"airport\",\"OurAirports\"\n215,\"Ain Oussera Airport\",\"Ain Oussera\",\"Algeria\",\\N,\"DAAQ\",35.52539825439453,2.8787100315093994,2132,1,\"N\",\"Africa/Algiers\",\"airport\",\"OurAirports\"\n216,\"Aguenar – Hadj Bey Akhamok Airport\",\"Tamanrasset\",\"Algeria\",\"TMR\",\"DAAT\",22.8115005493,5.45107984543,4518,1,\"N\",\"Africa/Algiers\",\"airport\",\"OurAirports\"\n217,\"Jijel Ferhat Abbas Airport\",\"Jijel\",\"Algeria\",\"GJL\",\"DAAV\",36.7951011658,5.87361001968,36,1,\"N\",\"Africa/Algiers\",\"airport\",\"OurAirports\"\n218,\"Mecheria Airport\",\"Mecheria\",\"Algeria\",\"MZW\",\"DAAY\",33.535900116,-0.242353007197,3855,1,\"N\",\"Africa/Algiers\",\"airport\",\"OurAirports\"\n219,\"Relizane Airport\",\"Relizane\",\"Algeria\",\\N,\"DAAZ\",35.752201,0.626272,282,1,\"N\",\"Africa/Algiers\",\"airport\",\"OurAirports\"\n220,\"Rabah Bitat Airport\",\"Annaba\",\"Algeria\",\"AAE\",\"DABB\",36.822201,7.809174,16,1,\"N\",\"Africa/Algiers\",\"airport\",\"OurAirports\"\n221,\"Mohamed Boudiaf International Airport\",\"Constantine\",\"Algeria\",\"CZL\",\"DABC\",36.2760009765625,6.620389938354492,2265,1,\"N\",\"Africa/Algiers\",\"airport\",\"OurAirports\"\n222,\"Cheikh Larbi Tébessi Airport\",\"Tebessa\",\"Algeria\",\"TEE\",\"DABS\",35.4315986633,8.12071990967,2661,1,\"N\",\"Africa/Algiers\",\"airport\",\"OurAirports\"\n224,\"Hassi R'Mel Airport\",\"Tilrempt\",\"Algeria\",\"HRM\",\"DAFH\",32.93040084838867,3.311539888381958,2540,1,\"N\",\"Africa/Algiers\",\"airport\",\"OurAirports\"\n225,\"Bou Chekif Airport\",\"Tiaret\",\"Algeria\",\"TID\",\"DAOB\",35.3410987854,1.46315002441,3245,1,\"N\",\"Africa/Algiers\",\"airport\",\"OurAirports\"\n226,\"Bou Sfer Airport\",\"Bou Sfer\",\"Algeria\",\\N,\"DAOE\",35.73540115356445,-0.8053889870643616,187,1,\"N\",\"Africa/Algiers\",\"airport\",\"OurAirports\"\n227,\"Tindouf Airport\",\"Tindouf\",\"Algeria\",\"TIN\",\"DAOF\",27.7003993988,-8.167099952700001,1453,1,\"N\",\"Africa/Algiers\",\"airport\",\"OurAirports\"\n228,\"Ech Cheliff Airport\",\"Ech-cheliff\",\"Algeria\",\"CFK\",\"DAOI\",36.2126998901,1.33176994324,463,1,\"N\",\"Africa/Algiers\",\"airport\",\"OurAirports\"\n229,\"Tafaraoui Airport\",\"Oran\",\"Algeria\",\"TAF\",\"DAOL\",35.54240036010742,-0.5322780013084412,367,1,\"N\",\"Africa/Algiers\",\"airport\",\"OurAirports\"\n230,\"Zenata – Messali El Hadj Airport\",\"Tlemcen\",\"Algeria\",\"TLM\",\"DAON\",35.0167007446,-1.45000004768,814,1,\"N\",\"Africa/Algiers\",\"airport\",\"OurAirports\"\n231,\"Es Senia Airport\",\"Oran\",\"Algeria\",\"ORN\",\"DAOO\",35.6239013672,-0.6211829781529999,295,1,\"N\",\"Africa/Algiers\",\"airport\",\"OurAirports\"\n232,\"Sidi Bel Abbes Airport\",\"Sidi Bel Abbes\",\"Algeria\",\"BFW\",\"DAOS\",35.1717987061,-0.593275010586,1614,1,\"N\",\"Africa/Algiers\",\"airport\",\"OurAirports\"\n233,\"Ghriss Airport\",\"Ghriss\",\"Algeria\",\"MUW\",\"DAOV\",35.207698822021484,0.14714199304580688,1686,1,\"N\",\"Africa/Algiers\",\"airport\",\"OurAirports\"\n234,\"Touat Cheikh Sidi Mohamed Belkebir Airport\",\"Adrar\",\"Algeria\",\"AZR\",\"DAUA\",27.837600708007812,-0.18641400337219238,919,1,\"N\",\"Africa/Algiers\",\"airport\",\"OurAirports\"\n235,\"Biskra Airport\",\"Biskra\",\"Algeria\",\"BSK\",\"DAUB\",34.793300628699996,5.73823022842,289,1,\"N\",\"Africa/Algiers\",\"airport\",\"OurAirports\"\n236,\"El Golea Airport\",\"El Golea\",\"Algeria\",\"ELG\",\"DAUE\",30.571300506591797,2.8595900535583496,1306,1,\"N\",\"Africa/Algiers\",\"airport\",\"OurAirports\"\n237,\"Noumérat - Moufdi Zakaria Airport\",\"Ghardaia\",\"Algeria\",\"GHA\",\"DAUG\",32.38410186767578,3.794110059738159,1512,1,\"N\",\"Africa/Algiers\",\"airport\",\"OurAirports\"\n238,\"Oued Irara Airport\",\"Hassi Messaoud\",\"Algeria\",\"HME\",\"DAUH\",31.673000335699996,6.140439987180001,463,1,\"N\",\"Africa/Algiers\",\"airport\",\"OurAirports\"\n239,\"In Salah Airport\",\"In Salah\",\"Algeria\",\"INZ\",\"DAUI\",27.250999450699997,2.51202011108,896,1,\"N\",\"Africa/Algiers\",\"airport\",\"OurAirports\"\n240,\"Touggourt Sidi Madhi Airport\",\"Touggourt\",\"Algeria\",\"TGR\",\"DAUK\",33.06779861450195,6.088669776916504,279,1,\"N\",\"Africa/Algiers\",\"airport\",\"OurAirports\"\n241,\"Laghouat Airport\",\"Laghouat\",\"Algeria\",\"LOO\",\"DAUL\",33.764400482199996,2.92833995819,2510,1,\"N\",\"Africa/Algiers\",\"airport\",\"OurAirports\"\n242,\"Timimoun Airport\",\"Timimoun\",\"Algeria\",\"TMX\",\"DAUT\",29.2371006012,0.276033014059,1027,1,\"N\",\"Africa/Algiers\",\"airport\",\"OurAirports\"\n243,\"Ain el Beida Airport\",\"Ouargla\",\"Algeria\",\"OGX\",\"DAUU\",31.917200088500977,5.412779808044434,492,1,\"N\",\"Africa/Algiers\",\"airport\",\"OurAirports\"\n244,\"In Aménas Airport\",\"Zarzaitine\",\"Algeria\",\"IAM\",\"DAUZ\",28.0515,9.64291,1847,1,\"N\",\"Africa/Algiers\",\"airport\",\"OurAirports\"\n245,\"Cadjehoun Airport\",\"Cotonou\",\"Benin\",\"COO\",\"DBBB\",6.357230186462402,2.384350061416626,19,1,\"N\",\"Africa/Porto-Novo\",\"airport\",\"OurAirports\"\n246,\"Ouagadougou Airport\",\"Ouagadougou\",\"Burkina Faso\",\"OUA\",\"DFFD\",12.3532,-1.51242,1037,0,\"N\",\"Africa/Ouagadougou\",\"airport\",\"OurAirports\"\n247,\"Bobo Dioulasso Airport\",\"Bobo-dioulasso\",\"Burkina Faso\",\"BOY\",\"DFOO\",11.160099983215332,-4.33096981048584,1511,0,\"N\",\"Africa/Ouagadougou\",\"airport\",\"OurAirports\"\n248,\"Kotoka International Airport\",\"Accra\",\"Ghana\",\"ACC\",\"DGAA\",5.605189800262451,-0.16678600013256073,205,0,\"N\",\"Africa/Accra\",\"airport\",\"OurAirports\"\n249,\"Tamale Airport\",\"Tamale\",\"Ghana\",\"TML\",\"DGLE\",9.55718994140625,-0.8632140159606934,553,0,\"N\",\"Africa/Accra\",\"airport\",\"OurAirports\"\n250,\"Wa Airport\",\"Wa\",\"Ghana\",\\N,\"DGLW\",10.0826997756958,-2.507689952850342,1060,0,\"N\",\"Africa/Accra\",\"airport\",\"OurAirports\"\n251,\"Sunyani Airport\",\"Sunyani\",\"Ghana\",\"NYI\",\"DGSN\",7.361830234527588,-2.3287599086761475,1014,0,\"N\",\"Africa/Accra\",\"airport\",\"OurAirports\"\n252,\"Takoradi Airport\",\"Takoradi\",\"Ghana\",\"TKD\",\"DGTK\",4.896059989929199,-1.7747600078582764,21,0,\"N\",\"Africa/Accra\",\"airport\",\"OurAirports\"\n253,\"Port Bouet Airport\",\"Abidjan\",\"Cote d'Ivoire\",\"ABJ\",\"DIAP\",5.261390209197998,-3.9262900352478027,21,0,\"N\",\"Africa/Abidjan\",\"airport\",\"OurAirports\"\n254,\"Bouaké Airport\",\"Bouake\",\"Cote d'Ivoire\",\"BYK\",\"DIBK\",7.738800048828125,-5.073669910430908,1230,0,\"N\",\"Africa/Abidjan\",\"airport\",\"OurAirports\"\n255,\"Daloa Airport\",\"Daloa\",\"Cote d'Ivoire\",\"DJO\",\"DIDL\",6.792809963226318,-6.473189830780029,823,0,\"N\",\"Africa/Abidjan\",\"airport\",\"OurAirports\"\n256,\"Korhogo Airport\",\"Korhogo\",\"Cote d'Ivoire\",\"HGO\",\"DIKO\",9.38718032837,-5.55666017532,1214,0,\"N\",\"Africa/Abidjan\",\"airport\",\"OurAirports\"\n257,\"Man Airport\",\"Man\",\"Cote d'Ivoire\",\"MJC\",\"DIMN\",7.272069931030273,-7.58735990524292,1089,0,\"N\",\"Africa/Abidjan\",\"airport\",\"OurAirports\"\n258,\"San Pedro Airport\",\"San Pedro\",\"Cote d'Ivoire\",\"SPY\",\"DISP\",4.746719837188721,-6.660820007324219,26,0,\"N\",\"Africa/Abidjan\",\"airport\",\"OurAirports\"\n259,\"Yamoussoukro Airport\",\"Yamoussoukro\",\"Cote d'Ivoire\",\"ASK\",\"DIYO\",6.9031701088,-5.36558008194,699,0,\"N\",\"Africa/Abidjan\",\"airport\",\"OurAirports\"\n260,\"Nnamdi Azikiwe International Airport\",\"Abuja\",\"Nigeria\",\"ABV\",\"DNAA\",9.006790161132812,7.263169765472412,1123,1,\"N\",\"Africa/Lagos\",\"airport\",\"OurAirports\"\n261,\"Akure Airport\",\"Akure\",\"Nigeria\",\"AKR\",\"DNAK\",7.246739864349365,5.3010101318359375,1100,1,\"N\",\"Africa/Lagos\",\"airport\",\"OurAirports\"\n262,\"Benin Airport\",\"Benin\",\"Nigeria\",\"BNI\",\"DNBE\",6.316979885101318,5.5995001792907715,258,1,\"N\",\"Africa/Lagos\",\"airport\",\"OurAirports\"\n263,\"Margaret Ekpo International Airport\",\"Calabar\",\"Nigeria\",\"CBQ\",\"DNCA\",4.976019859313965,8.347200393676758,210,1,\"N\",\"Africa/Lagos\",\"airport\",\"OurAirports\"\n264,\"Akanu Ibiam International Airport\",\"Enugu\",\"Nigeria\",\"ENU\",\"DNEN\",6.474269866943359,7.561960220336914,466,1,\"N\",\"Africa/Lagos\",\"airport\",\"OurAirports\"\n265,\"Gusau Airport\",\"Gusau\",\"Nigeria\",\\N,\"DNGU\",12.1717,6.69611,1520,1,\"N\",\"Africa/Lagos\",\"airport\",\"OurAirports\"\n266,\"Ibadan Airport\",\"Ibadan\",\"Nigeria\",\"IBA\",\"DNIB\",7.362460136413574,3.97832989692688,725,1,\"N\",\"Africa/Lagos\",\"airport\",\"OurAirports\"\n267,\"Ilorin International Airport\",\"Ilorin\",\"Nigeria\",\"ILR\",\"DNIL\",8.440210342407227,4.493919849395752,1126,1,\"N\",\"Africa/Lagos\",\"airport\",\"OurAirports\"\n268,\"Yakubu Gowon Airport\",\"Jos\",\"Nigeria\",\"JOS\",\"DNJO\",9.639829635620117,8.869050025939941,4232,1,\"N\",\"Africa/Lagos\",\"airport\",\"OurAirports\"\n269,\"Kaduna Airport\",\"Kaduna\",\"Nigeria\",\"KAD\",\"DNKA\",10.696000099182129,7.320109844207764,2073,1,\"N\",\"Africa/Lagos\",\"airport\",\"OurAirports\"\n270,\"Mallam Aminu International Airport\",\"Kano\",\"Nigeria\",\"KAN\",\"DNKN\",12.0476,8.52462,1562,1,\"N\",\"Africa/Lagos\",\"airport\",\"OurAirports\"\n271,\"Maiduguri International Airport\",\"Maiduguri\",\"Nigeria\",\"MIU\",\"DNMA\",11.855299949645996,13.080900192260742,1099,1,\"N\",\"Africa/Lagos\",\"airport\",\"OurAirports\"\n272,\"Makurdi Airport\",\"Makurdi\",\"Nigeria\",\"MDI\",\"DNMK\",7.70388,8.61394,371,1,\"N\",\"Africa/Lagos\",\"airport\",\"OurAirports\"\n273,\"Murtala Muhammed International Airport\",\"Lagos\",\"Nigeria\",\"LOS\",\"DNMM\",6.5773701667785645,3.321160078048706,135,1,\"N\",\"Africa/Lagos\",\"airport\",\"OurAirports\"\n274,\"Minna Airport\",\"Minna\",\"Nigeria\",\"MXJ\",\"DNMN\",9.652170181274414,6.462259769439697,834,1,\"N\",\"Africa/Lagos\",\"airport\",\"OurAirports\"\n275,\"Port Harcourt International Airport\",\"Port Hartcourt\",\"Nigeria\",\"PHC\",\"DNPO\",5.0154900550842285,6.94959020614624,87,1,\"N\",\"Africa/Lagos\",\"airport\",\"OurAirports\"\n276,\"Sadiq Abubakar III International Airport\",\"Sokoto\",\"Nigeria\",\"SKO\",\"DNSO\",12.916299819946289,5.207190036773682,1010,1,\"N\",\"Africa/Lagos\",\"airport\",\"OurAirports\"\n277,\"Yola Airport\",\"Yola\",\"Nigeria\",\"YOL\",\"DNYO\",9.257550239562988,12.430399894714355,599,1,\"N\",\"Africa/Lagos\",\"airport\",\"OurAirports\"\n278,\"Zaria Airport\",\"Zaria\",\"Nigeria\",\"ZAR\",\"DNZA\",11.1302,7.68581,2170,1,\"N\",\"Africa/Lagos\",\"airport\",\"OurAirports\"\n279,\"Maradi Airport\",\"Maradi\",\"Niger\",\"MFQ\",\"DRRM\",13.5024995803833,7.1267499923706055,1240,1,\"N\",\"Africa/Niamey\",\"airport\",\"OurAirports\"\n280,\"Diori Hamani International Airport\",\"Niamey\",\"Niger\",\"NIM\",\"DRRN\",13.4815,2.18361,732,1,\"N\",\"Africa/Niamey\",\"airport\",\"OurAirports\"\n281,\"Tahoua Airport\",\"Tahoua\",\"Niger\",\"THZ\",\"DRRT\",14.875699996948242,5.265359878540039,1266,1,\"N\",\"Africa/Niamey\",\"airport\",\"OurAirports\"\n282,\"Mano Dayak International Airport\",\"Agadez\",\"Niger\",\"AJY\",\"DRZA\",16.965999603271484,8.000109672546387,1657,1,\"N\",\"Africa/Niamey\",\"airport\",\"OurAirports\"\n283,\"Dirkou Airport\",\"Dirkou\",\"Niger\",\\N,\"DRZD\",18.968700408935547,12.86870002746582,1273,1,\"N\",\"Africa/Niamey\",\"airport\",\"OurAirports\"\n284,\"Diffa Airport\",\"Diffa\",\"Niger\",\\N,\"DRZF\",13.372900009155273,12.626700401306152,994,1,\"N\",\"Africa/Niamey\",\"airport\",\"OurAirports\"\n285,\"Zinder Airport\",\"Zinder\",\"Niger\",\"ZND\",\"DRZR\",13.779000282287598,8.983759880065918,1516,1,\"N\",\"Africa/Niamey\",\"airport\",\"OurAirports\"\n286,\"Monastir Habib Bourguiba International Airport\",\"Monastir\",\"Tunisia\",\"MIR\",\"DTMB\",35.75809860229492,10.75469970703125,9,1,\"E\",\"Africa/Tunis\",\"airport\",\"OurAirports\"\n287,\"Tunis Carthage International Airport\",\"Tunis\",\"Tunisia\",\"TUN\",\"DTTA\",36.85100173950195,10.22719955444336,22,1,\"E\",\"Africa/Tunis\",\"airport\",\"OurAirports\"\n288,\"Sidi Ahmed Air Base\",\"Bizerte\",\"Tunisia\",\\N,\"DTTB\",37.245398,9.79145,20,1,\"E\",\"Africa/Tunis\",\"airport\",\"OurAirports\"\n289,\"Remada Air Base\",\"Remada\",\"Tunisia\",\\N,\"DTTD\",32.30619812011719,10.382100105285645,1004,1,\"E\",\"Africa/Tunis\",\"airport\",\"OurAirports\"\n290,\"Gafsa Ksar International Airport\",\"Gafsa\",\"Tunisia\",\"GAF\",\"DTTF\",34.422000885009766,8.822500228881836,1060,1,\"E\",\"Africa/Tunis\",\"airport\",\"OurAirports\"\n291,\"Gabès Matmata International Airport\",\"Gabes\",\"Tunisia\",\"GAE\",\"DTTG\",33.87689971923828,10.103300094604492,26,1,\"E\",\"Africa/Tunis\",\"airport\",\"OurAirports\"\n292,\"Borj El Amri Airport\",\"Bordj El Amri\",\"Tunisia\",\\N,\"DTTI\",36.72129821777344,9.94314956665039,110,1,\"E\",\"Africa/Tunis\",\"airport\",\"OurAirports\"\n293,\"Djerba Zarzis International Airport\",\"Djerba\",\"Tunisia\",\"DJE\",\"DTTJ\",33.875,10.775500297546387,19,1,\"E\",\"Africa/Tunis\",\"airport\",\"OurAirports\"\n294,\"El Borma Airport\",\"El Borma\",\"Tunisia\",\"EBM\",\"DTTR\",31.704299926757812,9.254619598388672,827,1,\"E\",\"Africa/Tunis\",\"airport\",\"OurAirports\"\n295,\"Sfax Thyna International Airport\",\"Sfax\",\"Tunisia\",\"SFA\",\"DTTX\",34.71799850463867,10.690999984741211,85,1,\"E\",\"Africa/Tunis\",\"airport\",\"OurAirports\"\n296,\"Tozeur Nefta International Airport\",\"Tozeur\",\"Tunisia\",\"TOE\",\"DTTZ\",33.939701080322266,8.110560417175293,287,1,\"E\",\"Africa/Tunis\",\"airport\",\"OurAirports\"\n297,\"Niamtougou International Airport\",\"Niatougou\",\"Togo\",\"LRL\",\"DXNG\",9.767330169677734,1.091249942779541,1515,0,\"N\",\"Africa/Lome\",\"airport\",\"OurAirports\"\n298,\"Lomé-Tokoin Airport\",\"Lome\",\"Togo\",\"LFW\",\"DXXX\",6.165609836578369,1.2545100450515747,72,0,\"N\",\"Africa/Lome\",\"airport\",\"OurAirports\"\n299,\"Antwerp International Airport (Deurne)\",\"Antwerp\",\"Belgium\",\"ANR\",\"EBAW\",51.1893997192,4.46027994156,39,1,\"E\",\"Europe/Brussels\",\"airport\",\"OurAirports\"\n300,\"Beauvechain Air Base\",\"Beauvechain\",\"Belgium\",\\N,\"EBBE\",50.75859832763672,4.768330097198486,370,1,\"E\",\"Europe/Brussels\",\"airport\",\"OurAirports\"\n301,\"Kleine Brogel Air Base\",\"Kleine Brogel\",\"Belgium\",\\N,\"EBBL\",51.168301,5.47,200,1,\"E\",\"Europe/Brussels\",\"airport\",\"OurAirports\"\n302,\"Brussels Airport\",\"Brussels\",\"Belgium\",\"BRU\",\"EBBR\",50.901401519800004,4.48443984985,184,1,\"E\",\"Europe/Brussels\",\"airport\",\"OurAirports\"\n303,\"Jehonville Air Base\",\"Bertrix\",\"Belgium\",\\N,\"EBBX\",49.891700744628906,5.2238898277282715,1514,1,\"E\",\"Europe/Brussels\",\"airport\",\"OurAirports\"\n304,\"Brussels South Charleroi Airport\",\"Charleroi\",\"Belgium\",\"CRL\",\"EBCI\",50.459202,4.45382,614,1,\"E\",\"Europe/Brussels\",\"airport\",\"OurAirports\"\n305,\"Chièvres Air Base\",\"Chievres\",\"Belgium\",\\N,\"EBCV\",50.575801849365234,3.8310000896453857,194,1,\"E\",\"Europe/Brussels\",\"airport\",\"OurAirports\"\n306,\"Koksijde Air Base\",\"Koksijde\",\"Belgium\",\\N,\"EBFN\",51.090301513671875,2.652780055999756,20,1,\"E\",\"Europe/Brussels\",\"airport\",\"OurAirports\"\n307,\"Florennes Air Base\",\"Florennes\",\"Belgium\",\\N,\"EBFS\",50.2433013916,4.64583015442,935,1,\"E\",\"Europe/Brussels\",\"airport\",\"OurAirports\"\n308,\"Wevelgem Airport\",\"Kortrijk-vevelgem\",\"Belgium\",\"KJK\",\"EBKT\",50.817199707,3.20472002029,64,1,\"E\",\"Europe/Brussels\",\"airport\",\"OurAirports\"\n309,\"Liège Airport\",\"Liege\",\"Belgium\",\"LGG\",\"EBLG\",50.63740158081055,5.443220138549805,659,1,\"E\",\"Europe/Brussels\",\"airport\",\"OurAirports\"\n310,\"Ostend-Bruges International Airport\",\"Ostend\",\"Belgium\",\"OST\",\"EBOS\",51.198898315399994,2.8622200489,13,1,\"E\",\"Europe/Brussels\",\"airport\",\"OurAirports\"\n311,\"Zutendaal Air Base\",\"Zutendaal\",\"Belgium\",\\N,\"EBSL\",50.9474983215332,5.590559959411621,312,1,\"E\",\"Europe/Brussels\",\"airport\",\"OurAirports\"\n312,\"Brustem Airfield Sint Truiden\",\"Sint-truiden\",\"Belgium\",\\N,\"EBST\",50.791901,5.20167,246,1,\"E\",\"Europe/Brussels\",\"airport\",\"OurAirports\"\n313,\"Saint Hubert Air Base\",\"St.-hubert\",\"Belgium\",\\N,\"EBSU\",50.034400939941406,5.440810203552246,1930,1,\"E\",\"Europe/Brussels\",\"airport\",\"OurAirports\"\n314,\"Ursel Air Base\",\"Ursel\",\"Belgium\",\\N,\"EBUL\",51.14419937133789,3.475559949874878,95,1,\"E\",\"Europe/Brussels\",\"airport\",\"OurAirports\"\n315,\"Weelde Air Base\",\"Weelde\",\"Belgium\",\\N,\"EBWE\",51.394798278808594,4.9601898193359375,105,1,\"E\",\"Europe/Brussels\",\"airport\",\"OurAirports\"\n316,\"Zoersel (Oostmalle) Airfield\",\"Zoersel\",\"Belgium\",\"OBL\",\"EBZR\",51.264702,4.75333,53,1,\"E\",\"Europe/Brussels\",\"airport\",\"OurAirports\"\n317,\"Flugplatz Bautzen\",\"Bautzen\",\"Germany\",\\N,\"EDAB\",51.193611,14.519722,568,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n318,\"Altenburg-Nobitz Airport\",\"Altenburg\",\"Germany\",\"AOC\",\"EDAC\",50.981945,12.506389,640,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n319,\"Dessau Airfield\",\"Dessau\",\"Germany\",\\N,\"EDAD\",51.831694,12.190962,187,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n320,\"Eisenhüttenstadt Airfield\",\"Eisenhuettenstadt\",\"Germany\",\\N,\"EDAE\",52.195856,14.58753,144,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n322,\"Großenhain Airport\",\"Suhl\",\"Germany\",\\N,\"EDAK\",51.30805587768555,13.555556297302246,417,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n323,\"Merseburg Airport\",\"Muehlhausen\",\"Germany\",\\N,\"EDAM\",51.3630556,11.9408333,341,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n324,\"Halle-Oppin Airport\",\"Halle\",\"Germany\",\\N,\"EDAQ\",51.552223,12.053889,348,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n325,\"Riesa-Göhlis Airport\",\"Riesa\",\"Germany\",\"IES\",\"EDAU\",51.2936096191,13.3561105728,322,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n326,\"Rechlin-Lärz Airport\",\"Rechlin-laerz\",\"Germany\",\"REB\",\"EDAX\",53.306388855,12.7522220612,220,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n327,\"Strausberg Airport\",\"Strausberg\",\"Germany\",\\N,\"EDAY\",52.5805549621582,13.916666984558105,262,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n328,\"Schönhagen Airport\",\"Schoenhagen\",\"Germany\",\"QXH\",\"EDAZ\",52.203609,13.156389,152,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n329,\"Barth Airport\",\"Barth\",\"Germany\",\"BBH\",\"EDBH\",54.338253,12.710515,23,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n330,\"Jena-Schöngleina Airfield\",\"Jena\",\"Germany\",\\N,\"EDBJ\",50.915279,11.714444,1247,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n331,\"Kyritz Airport\",\"Kyritz\",\"Germany\",\\N,\"EDBK\",52.918888092041016,12.425277709960938,131,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n332,\"Magdeburg \"\"City\"\" Airport\",\"Magdeburg\",\"Germany\",\"ZMG\",\"EDBM\",52.073612,11.626389,259,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n333,\"Rothenburg/Görlitz Airport\",\"Rothenburg/ol\",\"Germany\",\\N,\"EDBR\",51.36333465576172,14.949999809265137,518,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n334,\"Anklam Airfield\",\"Anklam\",\"Germany\",\\N,\"EDCA\",53.832779,13.668611,16,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n335,\"Cottbus-Drewitz Airport\",\"Cottbus\",\"Germany\",\"CBU\",\"EDCD\",51.889442,14.531944,272,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n336,\"Kamenz Airport\",\"Kamenz\",\"Germany\",\\N,\"EDCM\",51.29694366455078,14.1274995803833,495,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n337,\"Berlin-Schönefeld Airport\",\"Berlin\",\"Germany\",\"SXF\",\"EDDB\",52.380001,13.5225,157,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n338,\"Dresden Airport\",\"Dresden\",\"Germany\",\"DRS\",\"EDDC\",51.1328010559082,13.767200469970703,755,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n339,\"Erfurt Airport\",\"Erfurt\",\"Germany\",\"ERF\",\"EDDE\",50.979801177978516,10.958100318908691,1036,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n340,\"Frankfurt am Main Airport\",\"Frankfurt\",\"Germany\",\"FRA\",\"EDDF\",50.033333,8.570556,364,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n341,\"Münster Osnabrück Airport\",\"Munster\",\"Germany\",\"FMO\",\"EDDG\",52.134601593,7.68483018875,160,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n342,\"Hamburg Airport\",\"Hamburg\",\"Germany\",\"HAM\",\"EDDH\",53.630401611328,9.9882297515869,53,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n343,\"Berlin-Tempelhof International Airport\",\"Berlin\",\"Germany\",\"THF\",\"EDDI\",52.472999572753906,13.403900146484375,167,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n344,\"Cologne Bonn Airport\",\"Cologne\",\"Germany\",\"CGN\",\"EDDK\",50.8658981323,7.1427397728,302,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n345,\"Düsseldorf Airport\",\"Duesseldorf\",\"Germany\",\"DUS\",\"EDDL\",51.289501,6.76678,147,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n346,\"Munich Airport\",\"Munich\",\"Germany\",\"MUC\",\"EDDM\",48.353802,11.7861,1487,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n347,\"Nuremberg Airport\",\"Nuernberg\",\"Germany\",\"NUE\",\"EDDN\",49.498699,11.078056,1046,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n348,\"Leipzig/Halle Airport\",\"Leipzig\",\"Germany\",\"LEJ\",\"EDDP\",51.423889,12.236389,465,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n349,\"Saarbrücken Airport\",\"Saarbruecken\",\"Germany\",\"SCN\",\"EDDR\",49.214599609400004,7.10950994492,1058,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n350,\"Stuttgart Airport\",\"Stuttgart\",\"Germany\",\"STR\",\"EDDS\",48.689899444599995,9.22196006775,1276,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n351,\"Berlin-Tegel Airport\",\"Berlin\",\"Germany\",\"TXL\",\"EDDT\",52.5597,13.2877,122,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n352,\"Hannover Airport\",\"Hannover\",\"Germany\",\"HAJ\",\"EDDV\",52.461101532,9.685079574580001,183,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n353,\"Bremen Airport\",\"Bremen\",\"Germany\",\"BRE\",\"EDDW\",53.0475006104,8.78666973114,14,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n354,\"Frankfurt-Egelsbach Airport\",\"Egelsbach\",\"Germany\",\"QEF\",\"EDFE\",49.959999,8.645833,384,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n355,\"Frankfurt-Hahn Airport\",\"Hahn\",\"Germany\",\"HHN\",\"EDFH\",49.9487,7.26389,1649,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n356,\"Mannheim-City Airport\",\"Mannheim\",\"Germany\",\"MHG\",\"EDFM\",49.473057,8.514167,308,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n357,\"Allendorf/Eder Airport\",\"Allendorf\",\"Germany\",\\N,\"EDFQ\",51.03499984741211,8.680832862854004,1158,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n358,\"Worms Airport\",\"Worms\",\"Germany\",\\N,\"EDFV\",49.606945,8.368333,295,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n359,\"Mainz-Finthen Airport\",\"Mainz\",\"Germany\",\\N,\"EDFZ\",49.967499,8.147222,525,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n360,\"Eisenach-Kindel Airport\",\"Eisenach\",\"Germany\",\"EIB\",\"EDGE\",50.991604,10.47973,1112,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n361,\"Siegerland Airport\",\"Siegerland\",\"Germany\",\"SGE\",\"EDGS\",50.707698822021484,8.082969665527344,1966,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n362,\"Hamburg-Finkenwerder Airport\",\"Hamburg\",\"Germany\",\"XFW\",\"EDHI\",53.5352783203125,9.835556030273438,23,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n363,\"Kiel-Holtenau Airport\",\"Kiel\",\"Germany\",\"KEL\",\"EDHK\",54.37944412231445,10.145277976989746,102,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n364,\"Lübeck Blankensee Airport\",\"Luebeck\",\"Germany\",\"LBC\",\"EDHL\",53.8054008484,10.7192001343,53,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n365,\"Flugplatz Dahlemer Binz\",\"Dahlemer Binz\",\"Germany\",\\N,\"EDKV\",50.405555725,6.5288891792,1896,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n366,\"Meinerzhagen Airport\",\"Meinerzhagen\",\"Germany\",\\N,\"EDKZ\",51.099998474121094,7.599999904632568,1549,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n367,\"Arnsberg-Menden Airport\",\"Arnsberg\",\"Germany\",\\N,\"EDLA\",51.483890533447266,7.8983330726623535,794,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n368,\"Essen Mulheim Airport\",\"Essen\",\"Germany\",\"ESS\",\"EDLE\",51.40230178833008,6.9373297691345215,424,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n369,\"Bielefeld Airport\",\"Bielefeld\",\"Germany\",\"BFE\",\"EDLI\",51.964722,8.544444,454,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n370,\"Mönchengladbach Airport\",\"Moenchengladbach\",\"Germany\",\"MGL\",\"EDLN\",51.230278,6.504444,125,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n371,\"Paderborn Lippstadt Airport\",\"Paderborn\",\"Germany\",\"PAD\",\"EDLP\",51.614101409899995,8.616319656369999,699,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n372,\"Stadtlohn-Vreden Airport\",\"Stadtlohn\",\"Germany\",\\N,\"EDLS\",51.99583435058594,6.8405561447143555,157,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n373,\"Dortmund Airport\",\"Dortmund\",\"Germany\",\"DTM\",\"EDLW\",51.51829910279999,7.61223983765,425,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n374,\"Augsburg Airport\",\"Augsburg\",\"Germany\",\"AGB\",\"EDMA\",48.425278,10.931667,1516,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n375,\"Biberach a.d. Riß Airfield\",\"Biberach\",\"Germany\",\\N,\"EDMB\",48.111111,9.762778,1903,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n376,\"Eggenfelden Airport\",\"Eggenfelden\",\"Germany\",\\N,\"EDME\",48.39611053466797,12.723610877990723,1342,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n377,\"Mindelheim-Mattsies Airfield\",\"Mindelheim\",\"Germany\",\\N,\"EDMN\",48.106945,10.525,1857,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n378,\"Oberpfaffenhofen Airport\",\"Oberpfaffenhofen\",\"Germany\",\"OBF\",\"EDMO\",48.081402,11.2831,1947,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n379,\"Straubing Airport\",\"Straubing\",\"Germany\",\"RBM\",\"EDMS\",48.90083312988281,12.516667366027832,1047,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n380,\"Vilshofen Airport\",\"Vilshofen\",\"Germany\",\\N,\"EDMV\",48.6349983215332,13.195555686950684,991,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n381,\"Leutkirch-Unterzeil Airport\",\"Leutkirch\",\"Germany\",\\N,\"EDNL\",47.858890533447266,10.014166831970215,2100,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n382,\"Friedrichshafen Airport\",\"Friedrichshafen\",\"Germany\",\"FDH\",\"EDNY\",47.671298980699994,9.51148986816,1367,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n383,\"Schwerin Parchim Airport\",\"Parchim\",\"Germany\",\"SZW\",\"EDOP\",53.426998,11.7834,166,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n384,\"Stendal-Borstel Airport\",\"Stendal\",\"Germany\",\\N,\"EDOV\",52.62888717651367,11.818611145019531,184,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n385,\"Aalen-Heidenheim/Elchingen Airport\",\"Aalen-heidenheim\",\"Germany\",\\N,\"EDPA\",48.77777862548828,10.264721870422363,1916,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n386,\"Bayreuth Airport\",\"Bayreuth\",\"Germany\",\"BYU\",\"EDQD\",49.985001,11.64,1601,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n387,\"Burg Feuerstein Airport\",\"Burg Feuerstein\",\"Germany\",\"URD\",\"EDQE\",49.794166564941,11.133610725403,1673,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n388,\"Hof-Plauen Airport\",\"Hof\",\"Germany\",\"HOQ\",\"EDQM\",50.288612365722656,11.856389045715332,1959,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n389,\"Haßfurt-Schweinfurt Airport\",\"Hassfurt\",\"Germany\",\\N,\"EDQT\",50.0180549621582,10.529443740844727,719,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n390,\"Koblenz-Winningen Airfield\",\"Koblenz\",\"Germany\",\\N,\"EDRK\",50.325558,7.528611,640,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n391,\"Trier-Föhren Airport\",\"Trier\",\"Germany\",\\N,\"EDRT\",49.863888,6.7875,666,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n392,\"Speyer Airfield\",\"Speyer\",\"Germany\",\\N,\"EDRY\",49.304722,8.451389,312,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n393,\"Zweibrücken Airport\",\"Zweibruecken\",\"Germany\",\"ZQW\",\"EDRZ\",49.2094,7.40056,1132,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n394,\"Donaueschingen-Villingen Airport\",\"Donaueschingen\",\"Germany\",\"ZQL\",\"EDTD\",47.97333145139999,8.52222156525,2231,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n395,\"Freiburg i. Br. Airport\",\"Freiburg\",\"Germany\",\\N,\"EDTF\",48.022777557400005,7.83249998093,801,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n396,\"Mengen-Hohentengen Airport\",\"Mengen\",\"Germany\",\\N,\"EDTM\",48.053890228271484,9.372777938842773,1818,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n397,\"Adolf Würth Airport\",\"Schwaebisch Hall\",\"Germany\",\\N,\"EDTY\",49.1183319092,9.783888816829998,1299,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n398,\"Finsterwalde/Schacksdorf Airport\",\"Soest\",\"Germany\",\\N,\"EDUS\",51.607498,13.743611,384,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n399,\"Braunschweig-Wolfsburg Airport\",\"Braunschweig\",\"Germany\",\"BWE\",\"EDVE\",52.319199,10.5561,295,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n400,\"Kassel-Calden Airport\",\"Kassel\",\"Germany\",\"KSF\",\"EDVK\",51.417273,9.384967,820,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n401,\"Hildesheim Airport\",\"Hildesheim\",\"Germany\",\\N,\"EDVM\",52.18138885498047,9.946389198303223,292,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n402,\"Bremerhaven Airport\",\"Bremerhaven\",\"Germany\",\"BRV\",\"EDWB\",53.506943,8.572778,10,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n403,\"Emden Airport\",\"Emden\",\"Germany\",\"EME\",\"EDWE\",53.391109,7.2275,3,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n404,\"Leer-Papenburg Airport\",\"Leer\",\"Germany\",\\N,\"EDWF\",53.271942138671875,7.441667079925537,3,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n405,\"Wilhelmshaven-Mariensiel Airport\",\"Wilhelmshaven\",\"Germany\",\"WVN\",\"EDWI\",53.502220153808594,8.05222225189209,16,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n406,\"Borkum Airport\",\"Borkum\",\"Germany\",\"BMK\",\"EDWR\",53.59639,6.709167,3,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n407,\"Norderney Airport\",\"Norderney\",\"Germany\",\"NRD\",\"EDWY\",53.70694351196289,7.230000019073486,7,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n408,\"Flensburg-Schäferhaus Airport\",\"Flensburg\",\"Germany\",\"FLF\",\"EDXF\",54.77333450317383,9.378889083862305,131,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n409,\"Rendsburg-Schachtholm Airport\",\"Rendsburg\",\"Germany\",\\N,\"EDXR\",54.220001220703125,9.599444389343262,23,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n410,\"Westerland Sylt Airport\",\"Westerland\",\"Germany\",\"GWT\",\"EDXW\",54.9132003784,8.34047031403,51,1,\"E\",\"Europe/Berlin\",\"airport\",\"OurAirports\"\n411,\"Ämari Air Base\",\"Armari Air Force Base\",\"Estonia\",\\N,\"EEEI\",59.26029968261719,24.208499908447266,65,2,\"E\",\"Europe/Tallinn\",\"airport\",\"OurAirports\"\n412,\"Kärdla Airport\",\"Kardla\",\"Estonia\",\"KDL\",\"EEKA\",58.99079895019531,22.830699920654297,18,2,\"E\",\"Europe/Tallinn\",\"airport\",\"OurAirports\"\n413,\"Kuressaare Airport\",\"Kuressaare\",\"Estonia\",\"URE\",\"EEKE\",58.22990036010742,22.50950050354004,14,2,\"E\",\"Europe/Tallinn\",\"airport\",\"OurAirports\"\n414,\"Pärnu Airport\",\"Parnu\",\"Estonia\",\"EPU\",\"EEPU\",58.41899871826172,24.47279930114746,47,2,\"E\",\"Europe/Tallinn\",\"airport\",\"OurAirports\"\n415,\"Lennart Meri Tallinn Airport\",\"Tallinn-ulemiste International\",\"Estonia\",\"TLL\",\"EETN\",59.41329956049999,24.832799911499997,131,2,\"E\",\"Europe/Tallinn\",\"airport\",\"OurAirports\"\n416,\"Tartu Airport\",\"Tartu\",\"Estonia\",\"TAY\",\"EETU\",58.3074989319,26.690399169900004,219,2,\"E\",\"Europe/Tallinn\",\"airport\",\"OurAirports\"\n417,\"Enontekio Airport\",\"Enontekio\",\"Finland\",\"ENF\",\"EFET\",68.362602233887,23.424299240112,1005,2,\"E\",\"Europe/Helsinki\",\"airport\",\"OurAirports\"\n418,\"Eura Airport\",\"Eura\",\"Finland\",\\N,\"EFEU\",61.1161003112793,22.201400756835938,259,2,\"E\",\"Europe/Helsinki\",\"airport\",\"OurAirports\"\n419,\"Halli Airport\",\"Halli\",\"Finland\",\"KEV\",\"EFHA\",61.856039,24.786686,479,2,\"E\",\"Europe/Helsinki\",\"airport\",\"OurAirports\"\n420,\"Helsinki Malmi Airport\",\"Helsinki\",\"Finland\",\"HEM\",\"EFHF\",60.254600524902344,25.042800903320312,57,2,\"E\",\"Europe/Helsinki\",\"airport\",\"OurAirports\"\n421,\"Helsinki Vantaa Airport\",\"Helsinki\",\"Finland\",\"HEL\",\"EFHK\",60.317199707031,24.963300704956,179,2,\"E\",\"Europe/Helsinki\",\"airport\",\"OurAirports\"\n422,\"Hameenkyro Airport\",\"Hameenkyro\",\"Finland\",\\N,\"EFHM\",61.689701080322266,23.073699951171875,449,2,\"E\",\"Europe/Helsinki\",\"airport\",\"OurAirports\"\n423,\"Hanko Airport\",\"Hanko\",\"Finland\",\\N,\"EFHN\",59.848899841308594,23.083599090576172,20,2,\"E\",\"Europe/Helsinki\",\"airport\",\"OurAirports\"\n424,\"Hyvinkää Airfield\",\"Hyvinkaa\",\"Finland\",\"HYV\",\"EFHV\",60.6543998718,24.8810997009,430,2,\"E\",\"Europe/Helsinki\",\"airport\",\"OurAirports\"\n425,\"Kiikala Airport\",\"Kikala\",\"Finland\",\\N,\"EFIK\",60.4625015259,23.6525001526,381,2,\"E\",\"Europe/Helsinki\",\"airport\",\"OurAirports\"\n426,\"Immola Airport\",\"Immola\",\"Finland\",\\N,\"EFIM\",61.24919891357422,28.90369987487793,338,2,\"E\",\"Europe/Helsinki\",\"airport\",\"OurAirports\"\n427,\"Kitee Airport\",\"Kitee\",\"Finland\",\"KTQ\",\"EFIT\",62.1661,30.073601,364,2,\"E\",\"Europe/Helsinki\",\"airport\",\"OurAirports\"\n428,\"Ivalo Airport\",\"Ivalo\",\"Finland\",\"IVL\",\"EFIV\",68.607299804688,27.405300140381,481,2,\"E\",\"Europe/Helsinki\",\"airport\",\"OurAirports\"\n429,\"Joensuu Airport\",\"Joensuu\",\"Finland\",\"JOE\",\"EFJO\",62.662899017334,29.607500076294,398,2,\"E\",\"Europe/Helsinki\",\"airport\",\"OurAirports\"\n430,\"Jyvaskyla Airport\",\"Jyvaskyla\",\"Finland\",\"JYV\",\"EFJY\",62.399501800537,25.678300857544,459,2,\"E\",\"Europe/Helsinki\",\"airport\",\"OurAirports\"\n431,\"Kauhava Airport\",\"Kauhava\",\"Finland\",\"KAU\",\"EFKA\",63.127102,23.051399,151,2,\"E\",\"Europe/Helsinki\",\"airport\",\"OurAirports\"\n432,\"Kemi-Tornio Airport\",\"Kemi\",\"Finland\",\"KEM\",\"EFKE\",65.778701782227,24.582099914551,61,2,\"E\",\"Europe/Helsinki\",\"airport\",\"OurAirports\"\n433,\"Kajaani Airport\",\"Kajaani\",\"Finland\",\"KAJ\",\"EFKI\",64.285499572754,27.692399978638,483,2,\"E\",\"Europe/Helsinki\",\"airport\",\"OurAirports\"\n434,\"Kauhajoki Airport\",\"Kauhajoki\",\"Finland\",\"KHJ\",\"EFKJ\",62.4625015259,22.3931007385,407,2,\"E\",\"Europe/Helsinki\",\"airport\",\"OurAirports\"\n435,\"Kokkola-Pietarsaari Airport\",\"Kruunupyy\",\"Finland\",\"KOK\",\"EFKK\",63.721199035645,23.143100738525,84,2,\"E\",\"Europe/Helsinki\",\"airport\",\"OurAirports\"\n436,\"Kemijarvi Airport\",\"Kemijarvi\",\"Finland\",\\N,\"EFKM\",66.712898,27.156799,692,2,\"E\",\"Europe/Helsinki\",\"airport\",\"OurAirports\"\n437,\"Kuusamo Airport\",\"Kuusamo\",\"Finland\",\"KAO\",\"EFKS\",65.987602233887,29.239400863647,866,2,\"E\",\"Europe/Helsinki\",\"airport\",\"OurAirports\"\n438,\"Kittilä Airport\",\"Kittila\",\"Finland\",\"KTT\",\"EFKT\",67.700996398926,24.846799850464,644,2,\"E\",\"Europe/Helsinki\",\"airport\",\"OurAirports\"\n439,\"Kuopio Airport\",\"Kuopio\",\"Finland\",\"KUO\",\"EFKU\",63.007099151611,27.797800064087,323,2,\"E\",\"Europe/Helsinki\",\"airport\",\"OurAirports\"\n440,\"Lahti Vesivehmaa Airport\",\"Vesivehmaa\",\"Finland\",\"QLF\",\"EFLA\",61.144199,25.693501,502,2,\"E\",\"Europe/Helsinki\",\"airport\",\"OurAirports\"\n441,\"Lappeenranta Airport\",\"Lappeenranta\",\"Finland\",\"LPP\",\"EFLP\",61.044601,28.144743,349,2,\"E\",\"Europe/Helsinki\",\"airport\",\"OurAirports\"\n442,\"Mariehamn Airport\",\"Mariehamn\",\"Finland\",\"MHQ\",\"EFMA\",60.122200012207,19.898199081421,17,2,\"E\",\"Europe/Mariehamn\",\"airport\",\"OurAirports\"\n443,\"Menkijarvi Airport\",\"Menkijarvi\",\"Finland\",\\N,\"EFME\",62.94670104980469,23.51889991760254,331,2,\"E\",\"Europe/Helsinki\",\"airport\",\"OurAirports\"\n444,\"Mikkeli Airport\",\"Mikkeli\",\"Finland\",\"MIK\",\"EFMI\",61.6866,27.201799,329,2,\"E\",\"Europe/Helsinki\",\"airport\",\"OurAirports\"\n445,\"Nummela Airport\",\"Nummela\",\"Finland\",\\N,\"EFNU\",60.333900451699996,24.2964000702,367,2,\"E\",\"Europe/Helsinki\",\"airport\",\"OurAirports\"\n446,\"Oulu Airport\",\"Oulu\",\"Finland\",\"OUL\",\"EFOU\",64.930099487305,25.354600906372,47,2,\"E\",\"Europe/Helsinki\",\"airport\",\"OurAirports\"\n447,\"Piikajarvi Airport\",\"Piikajarvi\",\"Finland\",\\N,\"EFPI\",61.245601654052734,22.19339942932129,148,2,\"E\",\"Europe/Helsinki\",\"airport\",\"OurAirports\"\n448,\"Pori Airport\",\"Pori\",\"Finland\",\"POR\",\"EFPO\",61.461700439453,21.799999237061,44,2,\"E\",\"Europe/Helsinki\",\"airport\",\"OurAirports\"\n449,\"Pudasjärvi Airport\",\"Pudasjarvi\",\"Finland\",\\N,\"EFPU\",65.4021987915,26.946899414100002,397,2,\"E\",\"Europe/Helsinki\",\"airport\",\"OurAirports\"\n450,\"Pyhäsalmi Airport\",\"Pyhasalmi\",\"Finland\",\\N,\"EFPY\",63.7318992615,25.926300048799998,528,2,\"E\",\"Europe/Helsinki\",\"airport\",\"OurAirports\"\n451,\"Raahe Pattijoki Airport\",\"Pattijoki\",\"Finland\",\\N,\"EFRH\",64.6881027222,24.6958007812,118,2,\"E\",\"Europe/Helsinki\",\"airport\",\"OurAirports\"\n452,\"Rantasalmi Airport\",\"Rantasalmi\",\"Finland\",\\N,\"EFRN\",62.0654983521,28.3565006256,292,2,\"E\",\"Europe/Helsinki\",\"airport\",\"OurAirports\"\n453,\"Rovaniemi Airport\",\"Rovaniemi\",\"Finland\",\"RVN\",\"EFRO\",66.564796447754,25.830400466919,642,2,\"E\",\"Europe/Helsinki\",\"airport\",\"OurAirports\"\n454,\"Rayskala Airport\",\"Rayskala\",\"Finland\",\\N,\"EFRY\",60.74470138549805,24.107799530029297,407,2,\"E\",\"Europe/Helsinki\",\"airport\",\"OurAirports\"\n455,\"Savonlinna Airport\",\"Savonlinna\",\"Finland\",\"SVL\",\"EFSA\",61.943099975586,28.945100784302,311,2,\"E\",\"Europe/Helsinki\",\"airport\",\"OurAirports\"\n456,\"Selanpaa Airport\",\"Selanpaa\",\"Finland\",\\N,\"EFSE\",61.062400817871094,26.798900604248047,417,2,\"E\",\"Europe/Helsinki\",\"airport\",\"OurAirports\"\n457,\"Sodankyla Airport\",\"Sodankyla\",\"Finland\",\"SOT\",\"EFSO\",67.3949966431,26.6191005707,602,2,\"E\",\"Europe/Helsinki\",\"airport\",\"OurAirports\"\n458,\"Tampere-Pirkkala Airport\",\"Tampere\",\"Finland\",\"TMP\",\"EFTP\",61.414100646973,23.604400634766,390,2,\"E\",\"Europe/Helsinki\",\"airport\",\"OurAirports\"\n459,\"Teisko Airport\",\"Teisko\",\"Finland\",\\N,\"EFTS\",61.7733,24.027,515,2,\"E\",\"Europe/Helsinki\",\"airport\",\"OurAirports\"\n460,\"Turku Airport\",\"Turku\",\"Finland\",\"TKU\",\"EFTU\",60.514099121094,22.262800216675,161,2,\"E\",\"Europe/Helsinki\",\"airport\",\"OurAirports\"\n461,\"Utti Air Base\",\"Utti\",\"Finland\",\"UTI\",\"EFUT\",60.89640045166,26.938400268555,339,2,\"E\",\"Europe/Helsinki\",\"airport\",\"OurAirports\"\n462,\"Vaasa Airport\",\"Vaasa\",\"Finland\",\"VAA\",\"EFVA\",63.050701141357,21.762199401855,19,2,\"E\",\"Europe/Helsinki\",\"airport\",\"OurAirports\"\n463,\"Varkaus Airport\",\"Varkaus\",\"Finland\",\"VRK\",\"EFVR\",62.171100616455,27.868600845337,286,2,\"E\",\"Europe/Helsinki\",\"airport\",\"OurAirports\"\n464,\"Ylivieska Airfield\",\"Ylivieska-raudaskyla\",\"Finland\",\"YLI\",\"EFYL\",64.0547222,24.7252778,252,2,\"E\",\"Europe/Helsinki\",\"airport\",\"OurAirports\"\n465,\"Belfast International Airport\",\"Belfast\",\"United Kingdom\",\"BFS\",\"EGAA\",54.6575012207,-6.2158298492399995,268,0,\"E\",\"Europe/London\",\"airport\",\"OurAirports\"\n466,\"St Angelo Airport\",\"Enniskillen\",\"United Kingdom\",\"ENK\",\"EGAB\",54.39889907836914,-7.651669979095459,155,0,\"E\",\"Europe/London\",\"airport\",\"OurAirports\"\n467,\"George Best Belfast City Airport\",\"Belfast\",\"United Kingdom\",\"BHD\",\"EGAC\",54.618099212646484,-5.872499942779541,15,0,\"E\",\"Europe/London\",\"airport\",\"OurAirports\"\n468,\"City of Derry Airport\",\"Londonderry\",\"United Kingdom\",\"LDY\",\"EGAE\",55.04280090332031,-7.161109924316406,22,0,\"E\",\"Europe/London\",\"airport\",\"OurAirports\"\n469,\"Birmingham International Airport\",\"Birmingham\",\"United Kingdom\",\"BHX\",\"EGBB\",52.453899383499994,-1.74802994728,327,0,\"E\",\"Europe/London\",\"airport\",\"OurAirports\"\n470,\"Coventry Airport\",\"Coventry\",\"United Kingdom\",\"CVT\",\"EGBE\",52.3697013855,-1.4797199964499999,267,0,\"E\",\"Europe/London\",\"airport\",\"OurAirports\"\n471,\"Leicester Airport\",\"Leicester\",\"United Kingdom\",\\N,\"EGBG\",52.6077995300293,-1.03193998336792,469,0,\"E\",\"Europe/London\",\"airport\",\"OurAirports\"\n472,\"Gloucestershire Airport\",\"Golouchestershire\",\"United Kingdom\",\"GLO\",\"EGBJ\",51.89419937133789,-2.167220115661621,101,0,\"E\",\"Europe/London\",\"airport\",\"OurAirports\"\n474,\"Wolverhampton Halfpenny Green Airport\",\"Halfpenny Green\",\"United Kingdom\",\\N,\"EGBO\",52.51750183105469,-2.2594399452209473,283,0,\"E\",\"Europe/London\",\"airport\",\"OurAirports\"\n475,\"Cotswold Airport\",\"Pailton\",\"United Kingdom\",\"GBA\",\"EGBP\",51.668095,-2.05694,433,0,\"E\",\"Europe/London\",\"airport\",\"OurAirports\"\n476,\"Turweston Airport\",\"Turweston\",\"United Kingdom\",\\N,\"EGBT\",52.0407981873,-1.09555995464,448,0,\"E\",\"Europe/London\",\"airport\",\"OurAirports\"\n477,\"Wellesbourne Mountford Airport\",\"Wellesbourne\",\"United Kingdom\",\\N,\"EGBW\",52.19219970703125,-1.6144399642944336,159,0,\"E\",\"Europe/London\",\"airport\",\"OurAirports\"\n478,\"Manchester Airport\",\"Manchester\",\"United Kingdom\",\"MAN\",\"EGCC\",53.35369873046875,-2.2749500274658203,257,0,\"E\",\"Europe/London\",\"airport\",\"OurAirports\"\n479,\"Manchester Woodford Airport\",\"Woodfort\",\"United Kingdom\",\\N,\"EGCD\",53.3381,-2.14889,295,0,\"E\",\"Europe/London\",\"airport\",\"OurAirports\"\n480,\"Royal Marines Base Chivenor Airport\",\"Chivenor\",\"United Kingdom\",\\N,\"EGDC\",51.08720016479492,-4.1503400802612305,27,0,\"E\",\"Europe/London\",\"airport\",\"OurAirports\"\n481,\"Newquay Cornwall Airport\",\"Newquai\",\"United Kingdom\",\"NQY\",\"EGHQ\",50.44060134887695,-4.995409965515137,390,0,\"E\",\"Europe/London\",\"airport\",\"OurAirports\"\n482,\"RAF Lyneham\",\"Lyneham\",\"United Kingdom\",\"LYE\",\"EGDL\",51.5051,-1.99343,513,0,\"E\",\"Europe/London\",\"airport\",\"OurAirports\"\n483,\"MoD Boscombe Down Airport\",\"Boscombe Down\",\"United Kingdom\",\\N,\"EGDM\",51.152198791503906,-1.7474100589752197,407,0,\"E\",\"Europe/London\",\"airport\",\"OurAirports\"\n484,\"RNAS Culdrose\",\"Culdrose\",\"United Kingdom\",\\N,\"EGDR\",50.08610153198242,-5.255710124969482,267,0,\"E\",\"Europe/London\",\"airport\",\"OurAirports\"\n485,\"MoD St. Athan\",\"St. Athan\",\"United Kingdom\",\\N,\"EGDX\",51.4048,-3.43575,163,0,\"E\",\"Europe/London\",\"airport\",\"OurAirports\"\n486,\"RNAS Yeovilton\",\"Yeovilton\",\"United Kingdom\",\"YEO\",\"EGDY\",51.0093994140625,-2.638819932937622,75,0,\"E\",\"Europe/London\",\"airport\",\"OurAirports\"\n487,\"Haverfordwest Airport\",\"Haverfordwest\",\"United Kingdom\",\"HAW\",\"EGFE\",51.833099365234375,-4.9611101150512695,159,0,\"E\",\"Europe/London\",\"airport\",\"OurAirports\"\n488,\"Cardiff International Airport\",\"Cardiff\",\"United Kingdom\",\"CWL\",\"EGFF\",51.39670181274414,-3.343329906463623,220,0,\"E\",\"Europe/London\",\"airport\",\"OurAirports\"\n489,\"Swansea Airport\",\"Swansea\",\"United Kingdom\",\"SWS\",\"EGFH\",51.60530090332031,-4.0678300857543945,299,0,\"E\",\"Europe/London\",\"airport\",\"OurAirports\"\n490,\"Bristol Airport\",\"Bristol\",\"United Kingdom\",\"BRS\",\"EGGD\",51.382702,-2.71909,622,0,\"E\",\"Europe/London\",\"airport\",\"OurAirports\"\n491,\"Liverpool John Lennon Airport\",\"Liverpool\",\"United Kingdom\",\"LPL\",\"EGGP\",53.33359909057617,-2.849720001220703,80,0,\"E\",\"Europe/London\",\"airport\",\"OurAirports\"\n492,\"London Luton Airport\",\"London\",\"United Kingdom\",\"LTN\",\"EGGW\",51.874698638916016,-0.36833301186561584,526,0,\"E\",\"Europe/London\",\"airport\",\"OurAirports\"\n493,\"Plymouth City Airport\",\"Plymouth\",\"United Kingdom\",\"PLH\",\"EGHD\",50.422798,-4.10583,476,0,\"E\",\"Europe/London\",\"airport\",\"OurAirports\"\n494,\"Bournemouth Airport\",\"Bournemouth\",\"United Kingdom\",\"BOH\",\"EGHH\",50.779998779296875,-1.8424999713897705,38,0,\"E\",\"Europe/London\",\"airport\",\"OurAirports\"\n495,\"Southampton Airport\",\"Southampton\",\"United Kingdom\",\"SOU\",\"EGHI\",50.95029830932617,-1.3567999601364136,44,0,\"E\",\"Europe/London\",\"airport\",\"OurAirports\"\n496,\"Lasham Airport\",\"Lasham\",\"United Kingdom\",\"QLA\",\"EGHL\",51.187198638916016,-1.0334999561309814,618,0,\"E\",\"Europe/London\",\"airport\",\"OurAirports\"\n497,\"Alderney Airport\",\"Alderney\",\"Guernsey\",\"ACI\",\"EGJA\",49.706104,-2.21472,290,0,\"E\",\"Europe/Guernsey\",\"airport\",\"OurAirports\"\n498,\"Guernsey Airport\",\"Guernsey\",\"Guernsey\",\"GCI\",\"EGJB\",49.435001373291016,-2.6019699573516846,336,0,\"E\",\"Europe/Guernsey\",\"airport\",\"OurAirports\"\n499,\"Jersey Airport\",\"Jersey\",\"Jersey\",\"JER\",\"EGJJ\",49.20790100097656,-2.195509910583496,277,0,\"E\",\"Europe/Jersey\",\"airport\",\"OurAirports\"\n500,\"Shoreham Airport\",\"Shoreham By Sea\",\"United Kingdom\",\"ESH\",\"EGKA\",50.835602,-0.297222,7,0,\"E\",\"Europe/London\",\"airport\",\"OurAirports\"\n501,\"London Biggin Hill Airport\",\"Biggin Hill\",\"United Kingdom\",\"BQH\",\"EGKB\",51.33079910279999,0.0324999988079,598,0,\"E\",\"Europe/London\",\"airport\",\"OurAirports\""
  },
  {
    "path": "plugins/riot/src/test/resources/files/bad.psv",
    "content": "id|field1|field2|field3\n1|sdf\"dsf|jeje|sdfsdf\n2|sdkdskd|slfd|sdfkdsf\n3|kdkerker|ksdkdk|sdldls"
  },
  {
    "path": "plugins/riot/src/test/resources/files/beers.csv",
    "content": "row,abv,ibu,id,name,style,brewery_id,ounces\n0,0.05,,1436,Pub Beer,American Pale Lager,408,12.0\n1,0.066,,2265,Devil's Cup,American Pale Ale (APA),177,12.0\n2,0.071,,2264,Rise of the Phoenix,American IPA,177,12.0\n3,0.09,,2263,Sinister,American Double / Imperial IPA,177,12.0\n4,0.075,,2262,Sex and Candy,American IPA,177,12.0\n5,0.077,,2261,Black Exodus,Oatmeal Stout,177,12.0\n6,0.045,,2260,Lake Street Express,American Pale Ale (APA),177,12.0\n7,0.065,,2259,Foreman,American Porter,177,12.0\n8,0.055,,2258,Jade,American Pale Ale (APA),177,12.0\n9,0.086,,2131,Cone Crusher,American Double / Imperial IPA,177,12.0\n10,0.07200000000000001,,2099,Sophomoric Saison,Saison / Farmhouse Ale,177,12.0\n11,0.073,,2098,Regional Ring Of Fire,Saison / Farmhouse Ale,177,12.0\n12,0.069,,2097,Garce Selé,Saison / Farmhouse Ale,177,12.0\n13,0.085,,1980,Troll Destroyer,Belgian IPA,177,12.0\n14,0.061,60.0,1979,Bitter Bitch,American Pale Ale (APA),177,12.0\n15,0.06,,2318,Ginja Ninja,Cider,154,12.0\n16,0.06,,2170,Cherried Away,Cider,154,12.0\n17,0.06,,2169,Rhubarbarian,Cider,154,12.0\n18,0.06,,1502,BrightCider,Cider,154,12.0\n19,0.08199999999999999,,1593,He Said Baltic-Style Porter,Baltic Porter,368,12.0\n20,0.08199999999999999,,1592,He Said Belgian-Style Tripel,Tripel,368,12.0\n21,0.099,92.0,1036,Lower De Boom,American Barleywine,368,8.4\n22,0.079,45.0,1024,Fireside Chat,Winter Warmer,368,12.0\n23,0.079,,976,Marooned On Hog Island,American Stout,368,12.0\n24,0.044000000000000004,42.0,876,Bitter American,American Pale Ale (APA),368,12.0\n25,0.049,17.0,802,Hell or High Watermelon Wheat (2009),Fruit / Vegetable Beer,368,12.0\n26,0.049,17.0,801,Hell or High Watermelon Wheat (2009),Fruit / Vegetable Beer,368,12.0\n27,0.049,17.0,800,21st Amendment Watermelon Wheat Beer (2006),Fruit / Vegetable Beer,368,12.0\n28,0.07,70.0,799,21st Amendment IPA (2006),American IPA,368,12.0\n29,0.07,70.0,797,Brew Free! or Die IPA (2008),American IPA,368,12.0\n30,0.07,70.0,796,Brew Free! or Die IPA (2009),American IPA,368,12.0\n31,0.085,52.0,531,Special Edition: Allies Win The War!,English Strong Ale,368,12.0\n32,0.09699999999999999,94.0,432,Hop Crisis,American Double / Imperial IPA,368,12.0\n33,0.044000000000000004,42.0,353,Bitter American (2011),American Pale Ale (APA),368,12.0\n34,0.079,45.0,321,Fireside Chat (2010),Winter Warmer,368,12.0\n35,0.068,65.0,173,Back in Black,American Black Ale,368,12.0\n36,0.083,35.0,11,Monk's Blood,Belgian Dark Ale,368,12.0\n37,0.07,65.0,10,Brew Free! or Die IPA,American IPA,368,12.0\n38,0.049,17.0,9,Hell or High Watermelon Wheat,Fruit / Vegetable Beer,368,12.0\n39,0.07,82.0,2519,Bimini Twist,American IPA,67,12.0\n40,0.05,,2518,Beach Blonde,American Blonde Ale,67,12.0\n41,0.059000000000000004,,2517,Rod Bender Red,American Amber / Red Ale,67,12.0\n42,0.035,11.0,2545,Passion Fruit Prussia,Berliner Weissbier,60,12.0\n43,0.045,18.0,2544,Send Help,American Blonde Ale,60,12.0\n44,0.055,,2324,Cast Iron Oatmeal Brown,American Brown Ale,60,12.0\n45,0.06,,2288,Reprise Centennial Red,American Amber / Red Ale,60,12.0\n46,0.055,,2287,Alter Ego,American Black Ale,60,12.0\n47,0.065,,2286,Divided Sky,American IPA,60,12.0\n48,0.065,,2285,Resurrected,American IPA,60,12.0\n49,0.05,28.0,1870,Contact High,American Pale Wheat Ale,60,12.0\n50,0.065,,2603,Galaxyfest,American IPA,27,16.0\n51,0.05,45.0,2602,Citrafest,American IPA,27,16.0\n52,0.09,,2220,Barn Yeti,Belgian Strong Dark Ale,27,16.0\n53,0.069,65.0,2219,Scarecrow,American IPA,27,16.0\n54,0.09,50.0,2218,Ironman,English Strong Ale,27,16.0\n55,0.046,15.0,2217,Honey Kolsch,Kölsch,27,16.0\n56,0.052000000000000005,18.0,2216,Copperhead Amber,Belgian Dark Ale,27,16.0\n57,0.059000000000000004,75.0,972,Rude Parrot IPA,American IPA,481,16.0\n58,0.054000000000000006,30.0,866,British Pale Ale (2010),English Pale Ale,481,16.0\n59,0.054000000000000006,30.0,48,British Pale Ale,English Pale Ale,481,16.0\n60,0.084,82.0,47,Ballz Deep Double IPA,American Double / Imperial IPA,481,16.0\n61,0.038,,1583,Wolfman's Berliner,Berliner Weissbier,373,12.0\n62,0.055,26.0,1165,Colorado Native,American Amber / Red Lager,462,12.0\n63,0.055,26.0,431,Colorado Native (2011),American Amber / Red Lager,462,12.0\n64,0.065,52.0,516,Jockamo IPA,American IPA,533,12.0\n65,0.042,13.0,515,Purple Haze,Fruit / Vegetable Beer,533,12.0\n66,0.045,17.0,514,Abita Amber,American Amber / Red Lager,533,12.0\n67,0.08199999999999999,68.0,2540,Citra Ass Down,American IPA,62,16.0\n68,0.05,20.0,2539,The Brown Note,American Brown Ale,62,16.0\n69,0.08,68.0,2686,Citra Ass Down,American Double / Imperial IPA,1,16.0\n70,0.125,80.0,2685,London Balling,English Barleywine,1,16.0\n71,0.077,25.0,2684,35 K,Milk / Sweet Stout,1,16.0\n72,0.042,42.0,2683,A Beer,American Pale Ale (APA),1,16.0\n73,0.05,25.0,2682,Rules are Rules,German Pilsener,1,16.0\n74,0.066,21.0,2681,Flesh Gourd'n,Pumpkin Ale,1,16.0\n75,0.04,13.0,2680,Sho'nuff,Belgian Pale Ale,1,16.0\n76,0.055,17.0,2679,Bloody Show,American Pilsner,1,16.0\n77,0.076,68.0,2678,Rico Sauvin,American Double / Imperial IPA,1,16.0\n78,0.051,38.0,2677,Coq de la Marche,Saison / Farmhouse Ale,1,16.0\n79,0.065,,2676,Kamen Knuddeln,American Wild Ale,1,16.0\n80,0.06,65.0,2675,Pile of Face,American IPA,1,16.0\n81,0.05,20.0,2674,The Brown Note,English Brown Ale,1,16.0\n82,0.053,35.0,1594,Maylani's Coconut Stout,American Stout,367,16.0\n83,0.05,35.0,1162,Oatmeal PSA,American Pale Ale (APA),367,16.0\n84,0.052000000000000005,33.0,1137,Pre Flight Pilsner,American Pilsner,367,16.0\n85,0.04,20.0,2403,P-Town Pilsner,American Pilsner,117,12.0\n86,0.053,36.0,2402,Klickitat Pale Ale,American Pale Ale (APA),117,12.0\n87,0.08199999999999999,103.0,2401,Yellow Wolf Imperial IPA,American Double / Imperial IPA,117,12.0\n88,0.053,40.0,1921,Freeride APA,American Pale Ale (APA),270,12.0\n89,0.053,18.0,1920,Alaskan Amber,Altbier,270,12.0\n90,0.057,,2501,Hopalicious,American Pale Ale (APA),73,12.0\n91,0.043,,1535,Kentucky Kölsch,Kölsch,388,16.0\n92,0.065,,1149,Kentucky IPA,American IPA,388,16.0\n93,0.054000000000000006,,1474,Dusty Trail Pale Ale,American Pale Ale (APA),401,16.0\n94,0.062,,1473,Damnesia,American IPA,401,16.0\n95,0.062,43.0,837,Desolation IPA,American IPA,401,16.0\n96,0.059000000000000004,,2592,Liberty Ale,American IPA,35,12.0\n97,0.065,,2578,IPA,American IPA,35,12.0\n98,0.045,,2577,Summer Wheat,American Pale Wheat Ale,35,12.0\n99,0.049,,2103,California Lager,American Amber / Red Lager,35,12.0\n100,0.055999999999999994,,2102,Brotherhood Steam,California Common / Steam Beer,35,12.0\n101,0.042,,2291,Blood Orange Gose,Gose,171,12.0\n102,0.042,,1818,Keebarlin' Pale Ale,American Pale Ale (APA),171,12.0\n103,0.048,,1738,\"the Kimmie, the Yink and the Holy Gose\",Gose,171,12.0\n104,0.06,,1563,Fall Hornin',Pumpkin Ale,171,12.0\n105,0.057,13.0,1520,Barney Flats Oatmeal Stout,Oatmeal Stout,171,12.0\n106,0.055999999999999994,4.0,1350,Summer Solstice,Cream Ale,171,12.0\n107,0.07,80.0,1327,Hop Ottin' IPA,American IPA,171,12.0\n108,0.057999999999999996,15.0,1326,Boont Amber Ale,American Amber / Red Ale,171,12.0\n109,0.057,13.0,1221,Barney Flats Oatmeal Stout,Oatmeal Stout,171,12.0\n110,0.055,25.0,1217,El Steinber Dark Lager,Vienna Lager,171,16.0\n111,0.057999999999999996,15.0,811,Boont Amber Ale (2010),American Amber / Red Ale,171,12.0\n112,0.055999999999999994,4.0,753,Summer Solstice Cerveza Crema (2009),Cream Ale,171,12.0\n113,0.057,13.0,572,Barney Flats Oatmeal Stout (2012),Oatmeal Stout,171,12.0\n114,0.069,6.0,523,Winter Solstice,Winter Warmer,171,12.0\n115,0.07,80.0,367,Hop Ottin' IPA (2011),American IPA,171,12.0\n116,0.057999999999999996,15.0,78,Boont Amber Ale (2011),American Amber / Red Ale,171,12.0\n117,0.055999999999999994,4.0,77,Summer Solstice (2011),Cream Ale,171,12.0\n118,0.055,28.0,76,Poleeko Gold Pale Ale (2009),American Pale Ale (APA),171,12.0\n119,0.06,,2337,Charlie's Rye IPA,American IPA,146,16.0\n120,0.054000000000000006,,410,River Pig Pale Ale,American Pale Ale (APA),542,16.0\n121,0.047,,409,Oaky's Oatmeal Stout,Oatmeal Stout,542,16.0\n122,0.05,,1294,Angry Orchard Apple Ginger,Cider,434,16.0\n123,0.05,,1293,Angry Orchard Crisp Apple,Cider,434,16.0\n124,0.05,,1292,Angry Orchard Crisp Apple,Cider,434,12.0\n125,0.068,,2207,Golden One,Belgian Pale Ale,193,12.0\n126,0.06,,2040,Arjuna,Witbier,193,12.0\n127,0.085,,2039,Uroboros,American Stout,193,12.0\n128,0.071,75.0,2511,Long Leaf,American IPA,69,16.0\n129,0.047,19.0,2510,Honey Badger Blonde,American Blonde Ale,69,16.0\n130,0.06,23.0,2509,Porter (a/k/a Black Gold Porter),American Porter,69,16.0\n131,0.06,55.0,413,Sky High Rye,American Pale Ale (APA),541,12.0\n132,0.062,17.0,390,Whitsun,American Pale Wheat Ale,541,12.0\n133,0.052000000000000005,,735,On-On Ale (2008),American Pale Ale (APA),513,12.0\n134,0.092,50.0,1333,Quakertown Stout,American Double / Imperial Stout,426,12.0\n135,0.051,20.0,1332,Greenbelt Farmhouse Ale,Saison / Farmhouse Ale,426,12.0\n136,0.052000000000000005,10.0,1172,Mo's Gose,Gose,461,16.0\n137,0.07,45.0,1322,Green Bullet Organic India Pale Ale,American IPA,429,16.0\n138,0.032,27.0,550,Rocket Girl,Kölsch,528,12.0\n139,0.053,26.0,429,Ninja Porter,American Porter,528,12.0\n140,0.06,69.0,428,Shiva IPA,American IPA,528,12.0\n141,0.048,,1640,Aslan Kölsch,Kölsch,353,16.0\n142,0.077,,1639,Aslan IPA,American IPA,353,16.0\n143,0.077,,1638,Aslan Amber,American Amber / Red Ale,353,16.0\n144,0.055999999999999994,27.0,597,This Season's Blonde,American Blonde Ale,523,12.0\n145,0.07,67.0,596,Independence Pass Ale,American IPA,523,12.0\n146,0.057,40.0,1580,Trolley Stop Stout,American Stout,374,12.0\n147,0.08199999999999999,138.0,980,Bitter Bitch Imperial IPA,American Double / Imperial IPA,374,12.0\n148,0.062,35.0,979,Poop Deck Porter,American Porter,374,12.0\n149,0.06,35.0,978,Old Red Beard Amber Ale,American Amber / Red Ale,374,12.0\n150,0.075,115.0,2503,Hop A-Peel,American Double / Imperial IPA,72,16.0\n151,0.055,12.0,2502,Vanilla Java Porter,American Porter,72,16.0\n152,0.052000000000000005,,2495,Michelada,Fruit / Vegetable Beer,72,16.0\n153,0.045,8.0,534,Dirty Blonde Ale,American Blonde Ale,72,12.0\n154,0.05,62.0,528,Grand Circus IPA,American IPA,72,12.0\n155,0.05,12.0,527,Atwater's Lager,Munich Helles Lager,72,12.0\n156,0.07,,1409,Heavy Machinery IPA Series #1: Heavy Fist,American Black Ale,413,16.0\n157,0.062,,343,Fire Eagle IPA,American IPA,413,12.0\n158,0.051,,342,Peacemaker,American Pale Ale (APA),413,12.0\n159,0.053,,341,Pearl-Snap,German Pilsener,413,12.0\n160,0.052000000000000005,,340,Black Thunder,Schwarzbier,413,12.0\n161,0.08,,2589,Raja,American Double / Imperial IPA,37,12.0\n162,0.064,,2546,Perzik Saison,Saison / Farmhouse Ale,37,12.0\n163,0.047,42.0,146,Avery Joe’s Premium American Pilsner,German Pilsener,37,12.0\n164,0.055999999999999994,10.0,108,White Rascal,Witbier,37,12.0\n165,0.063,69.0,107,Avery India Pale Ale,American IPA,37,12.0\n166,0.055,17.0,106,Ellie’s Brown Ale,American Brown Ale,37,12.0\n167,0.062,17.0,1620,Pumpkin Beast,Pumpkin Ale,360,12.0\n168,0.07200000000000001,22.0,1579,OktoberBeast,Märzen / Oktoberfest,360,12.0\n169,0.048,23.0,1228,Mad Beach,American Pale Wheat Ale,360,12.0\n170,0.067,,705,Hog Wild India Pale Ale,American IPA,360,12.0\n171,0.092,5.0,704,Devils Tramping Ground Tripel,Tripel,360,12.0\n172,0.061,41.0,702,Hot Rod Red,American Amber / Red Ale,360,12.0\n173,0.086,,2058,Palate Mallet,American Double / Imperial IPA,235,12.0\n174,0.06,,1483,Back East Porter,American Porter,235,12.0\n175,0.049,,1426,Back East Golden Ale,American Blonde Ale,235,12.0\n176,0.07,,1132,Misty Mountain IPA,American IPA,235,12.0\n177,0.05,,1131,Back East Ale,American Amber / Red Ale,235,12.0\n178,0.06,,1876,Truck Stop Honey Brown Ale,English Brown Ale,286,12.0\n179,0.06,43.0,1875,Naked Pig Pale Ale,American Pale Ale (APA),286,12.0\n180,0.068,70.0,966,Topcutter India Pale Ale,American IPA,483,12.0\n181,0.044000000000000004,38.0,965,Field 41 Pale Ale,American Pale Ale (APA),483,12.0\n182,0.07,,2593,Grapefruit Sculpin,American IPA,34,12.0\n183,0.038,40.0,2105,Even Keel,American IPA,34,12.0\n184,0.052000000000000005,23.0,1401,Ballast Point Pale Ale,Kölsch,34,12.0\n185,0.07,75.0,1400,Big Eye India Pale Ale,American IPA,34,12.0\n186,0.046,,1019,Longfin Lager,Munich Helles Lager,34,12.0\n187,0.07,70.0,1018,Sculpin IPA,American IPA,34,12.0\n188,0.045,,1776,All Nighter Ale,Extra Special / Strong Bitter (ESB),318,12.0\n189,0.045,20.0,1644,Banner American Rye,Rye Beer,318,12.0\n190,0.035,45.0,1643,Banner American Ale,American Amber / Red Ale,318,12.0\n191,0.07,46.0,2618,Thai.p.a,American IPA,20,16.0\n192,0.06,60.0,2005,Barrio Blanco,American IPA,251,12.0\n193,0.045,,1343,Barrio Tucson Blonde,American Blonde Ale,251,12.0\n194,0.049,22.0,2404,Hop in the ‘Pool Helles,American Pilsner,116,12.0\n195,0.067,60.0,2323,Ultra Gnar Gnar IPA,American IPA,116,12.0\n196,0.068,62.0,2189,In-Tents India Pale Lager,American Pale Lager,116,12.0\n197,0.05,20.0,2188,Lost Meridian Wit,Witbier,116,12.0\n198,0.051,45.0,2187,Celestial Meridian Cascadian Dark Lager,Euro Dark Lager,116,12.0\n199,0.054000000000000006,55.0,1966,Wagon Party,California Common / Steam Beer,258,12.0\n200,0.067,70.0,1965,Sky-Five,American IPA,258,12.0\n201,0.05,28.0,1964,Stargrazer,Schwarzbier,258,12.0\n202,0.054000000000000006,48.0,1963,Wonderstuff,German Pilsener,258,12.0\n203,0.053,,1855,Tarnation California-Style Lager,California Common / Steam Beer,292,12.0\n204,0.07,42.0,1778,On the Count of 3 (2015),Hefeweizen,292,16.0\n205,0.047,,1209,Summer Swelter,American Pale Wheat Ale,292,12.0\n206,0.068,,954,Phantom Punch Winter Stout,Foreign / Export Stout,292,12.0\n207,0.066,,910,Hayride Autumn Ale,Rye Beer,292,12.0\n208,0.047,,707,Celsius Summer Ale (2012),American Pale Wheat Ale,292,12.0\n209,0.055,35.0,533,Amber Road,American Amber / Red Ale,292,12.0\n210,0.049,28.0,183,Pamola Xtra Pale Ale,American Pale Ale (APA),292,12.0\n211,0.069,69.0,182,Stowaway IPA,American IPA,292,12.0\n212,0.08800000000000001,108.0,1806,Hoptopus Double IPA,American Double / Imperial IPA,306,16.0\n213,0.05,10.0,2435,Watermelon Ale,Fruit / Vegetable Beer,103,12.0\n214,0.057999999999999996,45.0,2423,Fenway American Pale Ale,American Pale Ale (APA),103,12.0\n215,0.068,85.0,2420,Back Bay IPA,American IPA,103,12.0\n216,0.048,16.0,2419,Bunker Hill Blueberry Ale ,Other,103,12.0\n217,0.057999999999999996,,2494,Oberon,American Pale Wheat Ale,76,12.0\n218,0.06,,2325,Smitten,Rye Beer,76,16.0\n219,0.05,,2022,Winter White,Witbier,76,16.0\n220,0.057999999999999996,,1989,Oberon,American Pale Wheat Ale,76,16.0\n221,0.07,,1988,Two Hearted,American IPA,76,16.0\n222,0.057999999999999996,,1955,Best Brown,American Brown Ale,76,16.0\n223,0.044000000000000004,44.0,2558,Moar,English India Pale Ale (IPA),53,12.0\n224,0.083,,2557,Uber Lupin Schwarz IPA,American Double / Imperial IPA,53,16.0\n225,0.057,27.0,2556,Nordic Blonde,American Blonde Ale,53,12.0\n226,0.06,,2496,Cold Press,American Black Ale,75,12.0\n227,0.07200000000000001,87.0,2410,Harness the Winter,American IPA,75,12.0\n228,0.055999999999999994,32.0,1902,14° ESB ,Extra Special / Strong Bitter (ESB),75,12.0\n229,0.062,68.0,1901,Bent Hop Golden IPA,American IPA,75,12.0\n230,0.06,34.0,1261,Bent Paddle Black Ale,American Black Ale,75,12.0\n231,0.05,38.0,1253,Venture Pils,German Pilsener,75,12.0\n232,0.055,40.0,1900,Lost Sailor IPA,English India Pale Ale (IPA),278,12.0\n233,0.053,20.0,1317,Steel Rail Extra Pale Ale,American Pale Ale (APA),278,12.0\n234,0.078,,1158,La Frontera Premium IPA,American IPA,463,12.0\n235,0.047,,1157,Tejas Lager,Czech Pilsener,463,12.0\n236,0.064,,1156,Number 22 Porter,American Porter,463,12.0\n237,0.055999999999999994,,1155,Big Bend Hefeweizen,Hefeweizen,463,12.0\n238,0.06,,1154,Terlingua Gold,American Blonde Ale,463,12.0\n239,0.081,17.0,2104,Aprè Shred,American Strong Ale,220,16.0\n240,0.095,104.0,1762,Hemlock Double IPA,American Double / Imperial IPA,220,12.0\n241,0.040999999999999995,,1422,West Portal Colorado Common Summer Ale,California Common / Steam Beer,220,16.0\n242,0.067,85.0,1067,Disconnected Red,American Amber / Red Ale,220,16.0\n243,0.07,,1003,Big Elm IPA,American IPA,477,12.0\n244,0.065,,1002,Gerry Dog Stout,American Stout,477,12.0\n245,0.06,,1001,413 Farmhouse Ale,Saison / Farmhouse Ale,477,12.0\n246,0.08,54.0,2639,Dark Star,American Stout,8,16.0\n247,0.062,,2469,Ryecoe,American IPA,8,16.0\n248,0.06,,2586,Blueberry Blonde,Fruit / Vegetable Beer,40,12.0\n249,0.075,60.0,2585,Galaxy IPA,American IPA,40,16.0\n250,0.05,32.0,643,Big River Pilsner,Czech Pilsener,519,12.0\n251,0.06,55.0,632,House Brand IPA,American IPA,519,12.0\n252,0.062,65.0,1714,Big Sky IPA,American IPA,336,12.0\n253,0.05,40.0,1713,Scape Goat Pale Ale,English Pale Ale,336,12.0\n254,0.05,35.0,1712,Montana Trout Slayer Ale,American Pale Wheat Ale,336,12.0\n255,0.051,26.0,1711,Moose Drool Brown Ale,American Brown Ale,336,12.0\n256,0.07200000000000001,60.0,1456,Powder Hound Winter Ale,English Strong Ale,336,12.0\n257,0.051,26.0,767,Moose Drool Brown Ale (2011),American Brown Ale,336,12.0\n258,0.05,35.0,766,Montana Trout Slayer Ale (2012),American Pale Wheat Ale,336,12.0\n259,0.062,65.0,579,Big Sky IPA (2012),American IPA,336,12.0\n260,0.047,,168,Summer Honey,American Blonde Ale,336,12.0\n261,0.05,40.0,159,Scape Goat Pale Ale (2010),English Pale Ale,336,12.0\n262,0.05,35.0,35,Montana Trout Slayer Ale (2009),American Pale Wheat Ale,336,12.0\n263,0.051,26.0,34,Moose Drool Brown Ale (2009),American Brown Ale,336,12.0\n264,0.069,81.0,2096,Arcus IPA,American IPA,221,12.0\n265,0.057999999999999996,38.0,2095,Wavemaker,American Amber / Red Ale,221,12.0\n266,0.053,43.0,1257,Jack Pine Savage,American Pale Ale (APA),444,16.0\n267,0.099,85.0,1256,Forest Fire Imperial Smoked Rye,Rye Beer,444,16.0\n268,0.098,76.0,1255,Bad Axe Imperial IPA,American Double / Imperial IPA,444,16.0\n269,0.055,35.0,986,Morning Wood,Oatmeal Stout,444,16.0\n270,0.066,50.0,985,Bark Bite IPA,American IPA,444,16.0\n271,0.055,45.0,2508,Jalapeno Pale Ale,American Pale Ale (APA),70,16.0\n272,0.052000000000000005,,1441,Blown Out Brown,American Brown Ale,407,12.0\n273,0.063,,1413,Single Hop Ale,American Pale Ale (APA),407,12.0\n274,0.054000000000000006,,1411,Sawtooth Ale,American Blonde Ale,407,12.0\n275,0.07200000000000001,75.0,2620,Saucy Intruder,Rye Beer,18,16.0\n276,0.045,16.0,2412,Deception,American Blonde Ale,112,12.0\n277,0.075,35.0,1898,Blackmarket Rye IPA,American IPA,112,12.0\n278,0.05,8.0,1897,Black Market Hefeweizen,Hefeweizen,112,12.0\n279,0.057999999999999996,44.0,1896,Aftermath Pale Ale,American Pale Ale (APA),112,12.0\n280,0.071,83.0,1850,American India Red Ale,American Strong Ale,294,12.0\n281,0.071,45.0,1849,American Red Porter,American Porter,294,12.0\n282,0.078,34.0,1848,American Red Saison,Saison / Farmhouse Ale,294,12.0\n283,0.066,44.0,1847,Colorado Red Ale,American Amber / Red Ale,294,12.0\n284,0.048,16.0,2485,Saddle Bronc Brown Ale,American Brown Ale,79,12.0\n285,0.046,20.0,2484,Bomber Mountain Amber Ale,American Amber / Red Ale,79,12.0\n286,0.073,,2449,Flying Sailor,Rye Beer,95,12.0\n287,0.048,47.0,2634,Nordskye ,American IPA,12,12.0\n288,0.06,30.0,2153,North Third Stout,Foreign / Export Stout,12,12.0\n289,0.052000000000000005,,1953,Honey Lav,American Pale Wheat Ale,12,12.0\n290,0.068,,1496,Coconut Brown Ale,American Brown Ale,12,12.0\n291,0.07,51.0,1481,51K IPA,American IPA,12,12.0\n292,0.055,,1480,Grand Rabbits,Cream Ale,12,12.0\n293,0.05,,1564,1800 Big Log Wheat (2012),American Pale Wheat Ale,380,12.0\n294,,,1541,Double Play Pilsner,American Pilsner,380,12.0\n295,0.055,,1321,Brewerhood Brown Ale,American Brown Ale,380,12.0\n296,0.08,,1320,Last Call Imperial Amber Ale,American Amber / Red Ale,380,12.0\n297,0.096,,1319,Pernicious Double IPA,American Double / Imperial IPA,380,12.0\n298,0.052000000000000005,,1303,6-4-3 Double Play Pilsner,German Pilsener,380,12.0\n299,,,1025,N Street Drive-In 50th Anniversary IPA,American Double / Imperial IPA,380,12.0\n300,0.05,,1012,467 Ethan's Stout,American Stout,380,12.0\n301,0.064,,942,1335 Wicked Snout,Saison / Farmhouse Ale,380,12.0\n302,0.045,,937,543 Skull Creek Fresh Hopped Pale Ale,American Pale Ale (APA),380,12.0\n303,0.055999999999999994,37.0,888,1327 Pod's ESB,Extra Special / Strong Bitter (ESB),380,12.0\n304,0.055999999999999994,37.0,886,1327 Pod's ESB,Extra Special / Strong Bitter (ESB),380,12.0\n305,0.055999999999999994,37.0,612,1327 Pod's ESB,Extra Special / Strong Bitter (ESB),380,12.0\n306,0.046,35.0,611,834 Happy As Ale,American Pale Ale (APA),380,12.0\n307,0.059000000000000004,,1372,Yellow Collar,Mead,422,12.0\n308,0.059000000000000004,,1371,Green Collar,Mead,422,12.0\n309,0.08,80.0,1812,Quarter Mile Double IPA,American Double / Imperial IPA,304,12.0\n310,0.059000000000000004,60.0,1547,Full Nelson Pale Ale,American Pale Ale (APA),382,12.0\n311,0.065,30.0,1546,Steel Wheels ESB,Extra Special / Strong Bitter (ESB),382,12.0\n312,0.053,22.0,1545,Blue Mountain Classic Lager,Euro Pale Lager,382,12.0\n313,0.059000000000000004,60.0,119,Full Nelson Pale Ale (2010),American Pale Ale (APA),382,12.0\n314,0.049,16.0,1408,Kölsch 151,Kölsch,414,12.0\n315,,,2490,Professor Black,American Stout,77,12.0\n316,,,2489,Little Boss,American Pale Wheat Ale,77,12.0\n317,,,2488,Van Dayum!,American Amber / Red Ale,77,12.0\n318,,,2487,Spirit Animal,American Pale Ale (APA),77,12.0\n319,0.07,,939,Toxic Sludge,American Black Ale,489,16.0\n320,0.06,40.0,692,Blue Point White IPA,American White IPA,489,12.0\n321,0.044000000000000004,16.0,667,Blue Point Summer Ale,American Blonde Ale,489,12.0\n322,0.055,28.0,665,Toasted Lager,Vienna Lager,489,12.0\n323,0.06,,1607,Bohemian Export Lager,Dortmunder / Export Lager,364,12.0\n324,0.053,,1597,Altus Bohemes Altbier,Altbier,364,12.0\n325,0.04,,344,Cherny Bock,Schwarzbier,364,12.0\n326,0.05,,89,Czech Pilsner,Czech Pilsener,364,12.0\n327,0.05,,88,Viennese Lager,Vienna Lager,364,12.0\n328,0.065,,1569,Mad Manatee IPA,American IPA,378,12.0\n329,0.055,,1568,Killer Whale Cream Ale,Cream Ale,378,12.0\n330,0.06,,1188,Duke's Cold Nose Brown Ale,American Brown Ale,378,12.0\n331,0.042,30.0,1891,Longhop IPA,American IPA,281,16.0\n332,0.04,34.0,1890,Lucky Buck,Irish Dry Stout,281,16.0\n333,0.051,,577,Bomb Lager (New Recipe),Munich Helles Lager,525,12.0\n334,0.045,27.0,513,Bomb Lager (Old Recipe),Munich Helles Lager,525,12.0\n335,0.066,72.0,2422,Firestarter India Pale Ale,American IPA,107,12.0\n336,0.075,22.0,1727,Kilt Dropper Scotch Ale,Scotch Ale / Wee Heavy,107,16.0\n337,0.048,30.0,1614,Wood Splitter Pilsner,Czech Pilsener,107,16.0\n338,0.055999999999999994,26.0,1613,Gyptoberfest,Märzen / Oktoberfest,107,12.0\n339,0.07,94.0,1549,Farmer Wirtz India Pale Ale,English India Pale Ale (IPA),107,16.0\n340,0.047,,1548,Slow & Steady Golden Ale,American Blonde Ale,107,12.0\n341,0.068,,1517,Pink-I Raspberry IPA,American IPA,107,16.0\n342,0.047,,1500,Moe's Original Bar B Que 'Bama Brew Golden Ale,American Blonde Ale,107,12.0\n343,0.047,,1421,Live Local Golden Ale,American Blonde Ale,107,12.0\n344,0.048,38.0,1360,Screaming Eagle Special Ale ESB,Extra Special / Strong Bitter (ESB),107,12.0\n345,0.049,,1184,Dirtbag Dunkel,Munich Dunkel Lager,107,16.0\n346,0.053,45.0,1183,Kindler Pale Ale,American Pale Ale (APA),107,12.0\n347,0.064,,1023,Mistress Winter Wheat,Winter Warmer,107,12.0\n348,0.061,,998,Tent Pole Vanilla Porter,American Porter,107,16.0\n349,0.057999999999999996,,997,Awry Rye Pale Ale,American Pale Ale (APA),107,12.0\n350,0.057999999999999996,,996,Demshitz Brown Ale,American Brown Ale,107,12.0\n351,0.048,,931,Wood Splitter Pilsner (2012),Czech Pilsener,107,12.0\n352,0.048,,798,Brush Creek Blonde,American Blonde Ale,107,16.0\n353,0.066,72.0,633,Firestarter India Pale Ale,American IPA,107,16.0\n354,0.071,16.0,2062,Noche Dulce,American Porter,231,16.0\n355,0.045,8.0,1830,Porch Rocker,Radler,300,12.0\n356,0.065,45.0,1629,Rebel IPA,American IPA,300,16.0\n357,0.055,,1601,Cold Snap,Witbier,300,12.0\n358,0.055999999999999994,,1427,Samuel Adams Winter Lager,Bock,300,12.0\n359,0.049,30.0,1349,Boston Lager,Vienna Lager,300,16.0\n360,0.049,30.0,1310,Boston Lager,Vienna Lager,300,12.0\n361,0.053,15.0,1281,Samuel Adams Octoberfest,Märzen / Oktoberfest,300,12.0\n362,0.053,7.0,1144,Samuel Adams Summer Ale,American Pale Wheat Ale,300,12.0\n363,0.049,30.0,1143,Boston Lager,Vienna Lager,300,12.0\n364,0.049,35.0,1395,Hazed & Infused,American Pale Ale (APA),417,12.0\n365,0.057,35.0,808,Hoopla Pale Ale,American Pale Ale (APA),417,12.0\n366,0.049,35.0,81,Hazed & Infused (2010),American Pale Ale (APA),417,12.0\n367,0.062,80.0,2596,Heavy Lifting,American IPA,31,12.0\n368,0.065,,2300,1492,American Pale Ale (APA),167,12.0\n369,0.057999999999999996,,2299,Mango Ginger,American IPA,167,12.0\n370,0.047,,2298,Passenger,English Dark Mild Ale,167,12.0\n371,0.06,52.0,2107,Plum St. Porter,American Porter,219,12.0\n372,0.057,52.0,1573,Plum St. Porter,American Porter,219,12.0\n373,0.07,80.0,1289,Bozone HopZone IPA,American IPA,219,12.0\n374,0.06,25.0,1288,Bozone Hefe Weizen,Hefeweizen,219,12.0\n375,0.055,,470,Bozone Select Amber Ale,American Amber / Red Ale,219,12.0\n376,0.052000000000000005,40.0,2167,Evil Owl,American Amber / Red Ale,207,12.0\n377,0.05,,2204,Post Time Kölsch,Kölsch,195,16.0\n378,0.042,9.0,1522,Agave Wheat,American Pale Wheat Ale,391,12.0\n379,0.045,15.0,397,SummerBright Ale,American Pale Wheat Ale,391,12.0\n380,0.062,68.0,193,Lucky U IPA,American IPA,391,12.0\n381,0.054000000000000006,19.0,83,Avalanche Ale,American Amber / Red Ale,391,12.0\n382,0.05,,1802,\"You're My Boy, Blue\",Fruit / Vegetable Beer,308,12.0\n383,0.07200000000000001,60.0,1801,Last Stop IPA,American IPA,308,12.0\n384,0.05,21.0,1800,Rollin Dirty Red Ale,Irish Red Ale,308,12.0\n385,0.055,28.0,1799,Are Wheat There Yet?,American Pale Wheat Ale,308,12.0\n386,0.057999999999999996,,2619,Insert Hop Reference,American Pale Ale (APA),19,16.0\n387,0.053,,2468,Manitou Amber,American Amber / Red Ale,85,16.0\n388,0.067,,2637,Belfort,Saison / Farmhouse Ale,10,16.0\n389,0.06,,2636,Star Runner,Belgian Pale Ale,10,16.0\n390,0.098,,2598,Tart Side of the Barrel,American Double / Imperial Stout,10,16.0\n391,0.06,,2597,Linnaeus Mango IPA,American IPA,10,16.0\n392,0.07,,2548,Beasts A'Burnin',Rauchbier,10,16.0\n393,0.077,,2542,Verdun,Bière de Garde,10,16.0\n394,0.065,,2541,Barrel Aged Triomphe,Belgian IPA,10,16.0\n395,0.065,,2504,Cherry Doppelbock,Doppelbock,10,16.0\n396,0.065,,2500,Tropical Saison,Saison / Farmhouse Ale,10,16.0\n397,0.065,,2499,Beach Patrol,Witbier,10,16.0\n398,0.05,,2498,Nuit Serpent,Belgian IPA,10,16.0\n399,0.09,,2481,Paris,Saison / Farmhouse Ale,10,16.0\n400,0.055,,2476,The Grand Army,Belgian IPA,10,16.0\n401,0.059000000000000004,,2467,Acidulated Trip,Saison / Farmhouse Ale,10,16.0\n402,0.066,,2466,Root Stock,Rye Beer,10,16.0\n403,0.040999999999999995,,2465,Mind Games,Dunkelweizen,10,16.0\n404,0.08199999999999999,,2433,Sous Chef,Belgian Strong Pale Ale,10,16.0\n405,0.065,,2418,Dubbelicious,Dubbel,10,16.0\n406,0.062,,2416,Psychopomp,Belgian Dark Ale,10,16.0\n407,,,2382,Fat Paczki,Belgian Dark Ale,10,16.0\n408,,,2381,Earth-Like Planets,Belgian Pale Ale,10,16.0\n409,0.061,,2290,Ski Patrol,Witbier,10,16.0\n410,0.063,,2241,Viking Ice Hole,Oatmeal Stout,10,16.0\n411,0.055999999999999994,,2240,Rye Porter,American Porter,10,16.0\n412,0.099,,2137,Wizard Burial Ground,Quadrupel (Quad),10,16.0\n413,0.051,,2101,Smoky Wheat,Rauchbier,10,16.0\n414,0.062,,2092,BRIPA,Belgian IPA,10,16.0\n415,0.062,,2091,Mela,Belgian Dark Ale,10,16.0\n416,0.053,,2086,W.I.P.A Snappa,Belgian IPA,10,16.0\n417,0.063,,2023,Pepper in the Rye,Rye Beer,10,16.0\n418,0.064,,2006,Moe Lasses',American Stout,10,16.0\n419,0.07,,1997,Pumpkin Tart,Fruit / Vegetable Beer,10,16.0\n420,0.067,,1977,Undertaker,Belgian Dark Ale,10,16.0\n421,0.067,,1976,Undertaker (2014),Belgian Dark Ale,10,16.0\n422,0.05,,1974,Coq D'Or,Belgian Pale Ale,10,16.0\n423,0.06,,1973,North French,Bière de Garde,10,16.0\n424,0.065,,1959,Agent a Deux,Belgian Dark Ale,10,16.0\n425,0.045,,1958,Belgian Wit,Witbier,10,16.0\n426,0.063,,1949,Pothole Stout,American Stout,10,16.0\n427,0.09300000000000001,,1947,Tree Bucket,Belgian IPA,10,16.0\n428,0.073,,1785,Le Flaneur Ale,American Wild Ale,10,16.0\n429,0.055999999999999994,,1651,Maize & Blueberry,Fruit / Vegetable Beer,10,16.0\n430,0.09300000000000001,,1443,Trebuchet Double IPA,American Double / Imperial IPA,10,16.0\n431,0.065,,1352,Contemplation,Bière de Garde,10,16.0\n432,0.05,,1267,Black Rabbit,American Black Ale,10,16.0\n433,0.09,,1266,Zaison,Saison / Farmhouse Ale,10,16.0\n434,0.08199999999999999,,1178,Vivant Tripel,Tripel,10,16.0\n435,0.098,,1136,Tart Side of the Moon,Belgian Dark Ale,10,16.0\n436,0.06,,1044,Big Red Coq,American Amber / Red Ale,10,16.0\n437,0.099,,1033,Hubris Quadrupel Anniversary Ale,Quadrupel (Quad),10,16.0\n438,0.095,,1031,Plow Horse Belgian Style Imperial Stout,American Double / Imperial Stout,10,16.0\n439,0.092,,909,Escoffier Bretta Ale,American Wild Ale,10,16.0\n440,0.065,,873,Contemplation (2012),Bière de Garde,10,16.0\n441,0.099,,860,Vivant Belgian Style Imperial Stout (2012),Russian Imperial Stout,10,16.0\n442,0.062,,677,Big Red Coq (2012),American Amber / Red Ale,10,16.0\n443,0.09,,671,Zaison (2012),Saison / Farmhouse Ale,10,16.0\n444,0.092,,670,Vivant Tripel (2012),Tripel,10,16.0\n445,0.09699999999999999,,669,Trebuchet Double IPA (2012),Belgian IPA,10,16.0\n446,0.085,,627,Kludde,Belgian Strong Dark Ale,10,16.0\n447,0.055,,387,Farm Hand,Saison / Farmhouse Ale,10,16.0\n448,0.06,,385,Solitude,Belgian Pale Ale,10,16.0\n449,0.065,,384,Triomphe,Belgian IPA,10,16.0\n450,,,1096,Tampa Pale Ale,American Pale Ale (APA),467,12.0\n451,,,1095,Orange Grove Wheat Ale,American Pale Wheat Ale,467,12.0\n452,0.061,,2456,Broad Brook Ale,American Amber / Red Ale,89,16.0\n453,0.05,15.0,921,Northern Lights Amber Ale,American Amber / Red Ale,493,12.0\n454,0.052000000000000005,17.0,920,Polar Pale Ale,American Pale Ale (APA),493,12.0\n455,0.048,,919,Chugach Session Ale,Cream Ale,493,12.0\n456,0.061,64.0,648,Fairweather IPA,American IPA,493,12.0\n457,0.068,47.0,1279,East India Pale Ale,English India Pale Ale (IPA),437,16.0\n458,0.045,,756,Brooklyn Summer Ale,English Pale Mild Ale,437,12.0\n459,0.068,47.0,566,East India Pale Ale,English India Pale Ale (IPA),437,12.0\n460,0.045,,328,Brooklyn Summer Ale (2011),English Pale Mild Ale,437,12.0\n461,0.052000000000000005,,66,Brooklyn Lager (16 oz.),American Amber / Red Lager,437,16.0\n462,0.052000000000000005,,65,Brooklyn Lager (12 oz.),American Amber / Red Lager,437,12.0\n463,0.08,,538,Tour de Nez Belgian IPA (Current),Belgian IPA,530,16.0\n464,,,504,Roler Bock (Current),Maibock / Helles Bock,530,16.0\n465,0.073,85.0,383,Black Adder IBA (Current),American Black Ale,530,16.0\n466,0.099,,29,Very Noddy Lager (Current),Schwarzbier,530,16.0\n467,0.062,42.0,28,Tule Duck Red Ale (Current),American Amber / Red Ale,530,16.0\n468,0.057999999999999996,35.0,27,Original Orange Blossom Ale (Current),Herbed / Spiced Beer,530,16.0\n469,0.052000000000000005,40.0,26,Black Noddy Lager (Current),Schwarzbier,530,16.0\n470,0.053,,1627,Cleveland Beer Week 2013,Munich Helles Lager,357,16.0\n471,0.045,,2552,Painted Turtle,American Pale Ale (APA),56,12.0\n472,0.06,40.0,2125,1836,American Blonde Ale,214,12.0\n473,0.06,20.0,2124,Summer's Wit,Witbier,214,12.0\n474,0.09,118.0,2123,More Cowbell,American Double / Imperial IPA,214,16.0\n475,0.065,,2608,Wrath of Pele,American Brown Ale,24,16.0\n476,0.068,,2607,Black Beer'd,American Black Ale,24,16.0\n477,0.078,,2606,Mr. Tea,Fruit / Vegetable Beer,24,24.0\n478,0.055,40.0,2478,Pale Alement,American Pale Ale (APA),24,12.0\n479,0.099,115.0,2471,Hopkick Dropkick,American Double / Imperial IPA,24,12.0\n480,0.06,,2470,Kreamed Corn,Cream Ale,24,12.0\n481,0.065,,2464,Coconoats,American Pale Wheat Ale,24,16.0\n482,0.068,16.0,2160,Joey Wheat,American Pale Wheat Ale,24,16.0\n483,0.07200000000000001,86.0,2158,3:33 Black IPA,American IPA,24,16.0\n484,0.068,,2072,MCA,American IPA,24,16.0\n485,0.055,40.0,2054,Pale Alement,American Pale Ale (APA),24,16.0\n486,0.05,14.0,2196,Couch Select Lager,American Pale Lager,197,12.0\n487,0.055999999999999994,36.0,668,Mucho Aloha Hawaiian Pale Ale,American Pale Ale (APA),517,12.0\n488,0.049,,52,Heinnieweisse Weissebier,Hefeweizen,556,12.0\n489,0.068,,51,Snapperhead IPA,American IPA,556,12.0\n490,0.049,,50,Moo Thunder Stout,Milk / Sweet Stout,556,12.0\n491,0.043,,49,Porkslap Pale Ale,American Pale Ale (APA),556,12.0\n492,0.09300000000000001,,2657,Blackbeard,American Double / Imperial Stout,5,12.0\n493,0.062,,2656,Rye Knot,American Brown Ale,5,12.0\n494,0.06,,2655,Dead Arm,American Pale Ale (APA),5,12.0\n495,0.048,,2654,32°/50° Kölsch ,Kölsch,5,16.0\n496,0.077,,2653,HopArt,American IPA,5,16.0\n497,0.09699999999999999,,2652,Boy King,American Double / Imperial IPA,5,16.0\n498,0.052000000000000005,,2252,Gran Sport,American Porter,182,16.0\n499,0.053,25.0,2214,Horny Toad Cerveza,American Blonde Ale,182,16.0\n500,0.063,35.0,2213,Native Amber,American Amber / Red Ale,182,16.0\n501,0.068,100.0,1442,F5 IPA,American IPA,182,16.0\n502,0.063,35.0,170,Native Amber (2013),American Amber / Red Ale,182,16.0\n503,0.053,25.0,169,Horny Toad Cerveza (2013),American Blonde Ale,182,16.0\n504,0.068,100.0,2315,Hopportunity Knocks IPA,American IPA,155,12.0\n505,0.06,,1808,Pilot Rock Porter,American Porter,155,12.0\n506,0.055999999999999994,55.0,1419,Caldera Pale Ale,American Pale Ale (APA),155,12.0\n507,0.039,16.0,878,Lawnmower Lager,American Adjunct Lager,155,12.0\n508,0.054000000000000006,24.0,794,Ashland Amber Ale (2009),American Amber / Red Ale,155,12.0\n509,0.061,94.0,793,Caldera IPA (2009),American IPA,155,12.0\n510,0.061,94.0,792,Caldera IPA (2007),American IPA,155,12.0\n511,0.055999999999999994,55.0,791,Caldera Pale Ale (2010),American Pale Ale (APA),155,12.0\n512,0.055999999999999994,55.0,790,Caldera Pale Ale (2009),American Pale Ale (APA),155,12.0\n513,0.055999999999999994,55.0,789,Caldera Pale Ale (2005),American Pale Ale (APA),155,12.0\n514,0.055999999999999994,55.0,788,Caldera Pale Ale (2007),American Pale Ale (APA),155,12.0\n515,0.055999999999999994,55.0,38,Caldera Pale Ale (2011),American Pale Ale (APA),155,12.0\n516,0.054000000000000006,24.0,37,Ashland Amber Ale,American Amber / Red Ale,155,12.0\n517,0.061,94.0,36,Caldera IPA,American IPA,155,12.0\n518,0.05,,2257,Remain in Light,American Pilsner,178,12.0\n519,0.065,,2256,Flower Child (2014),American IPA,178,12.0\n520,,,870,THP White (2006),Witbier,497,12.0\n521,,,869,THP Amber (2006),American Amber / Red Ale,497,12.0\n522,,,868,THP Light (2006),American Blonde Ale,497,12.0\n523,,,867,THP Dark (2006),English Dark Mild Ale,497,12.0\n524,0.099,43.0,2068,Imperial Pumpkin Stout,Pumpkin Ale,230,16.0\n525,0.09,130.0,2067,Dead-Eye DIPA,American Double / Imperial IPA,230,16.0\n526,0.055,64.0,2066,Fisherman's IPA,American IPA,230,12.0\n527,0.054000000000000006,35.0,2065,Fisherman's Pils,German Pilsener,230,12.0\n528,0.055,30.0,2064,Fisherman's Brew,American Amber / Red Ale,230,12.0\n529,0.055,35.0,1928,Cape Cod Red,American Amber / Red Ale,267,16.0\n530,0.049,10.0,1927,Beach Blonde,American Blonde Ale,267,16.0\n531,0.065,80.0,2227,Dark Voyage Black IPA (2013),American Black Ale,192,12.0\n532,0.052000000000000005,28.0,2226,Wisconsin Amber,Vienna Lager,192,12.0\n533,0.046,18.0,2225,Lake House,Munich Helles Lager,192,12.0\n534,0.055999999999999994,55.0,1954,Ghost Ship White IPA,American IPA,192,12.0\n535,0.046,18.0,1910,Lake House,Munich Helles Lager,192,16.0\n536,0.062,70.0,1177,Mutiny IPA,American IPA,192,12.0\n537,0.052000000000000005,,840,Wisconsin Amber (1998),Vienna Lager,192,12.0\n538,0.042,,180,Island Wheat,American Pale Wheat Ale,192,12.0\n539,0.052000000000000005,,63,Wisconsin Amber (2013),Vienna Lager,192,12.0\n540,0.05,,62,U.S. Pale Ale,American Pale Ale (APA),192,12.0\n541,,,61,Supper Club Lager,American Pale Lager,192,12.0\n542,0.04,,784,Carolina Lighthouse (2007),American Blonde Ale,504,12.0\n543,0.05,,783,Carolina Blonde (2006),American Blonde Ale,504,12.0\n544,0.035,,782,Carolina Blonde Light (2005),American Blonde Ale,504,12.0\n545,0.059000000000000004,22.0,2255,Santa's Secret,Winter Warmer,179,16.0\n546,0.057,,530,Flagship IPA,English India Pale Ale (IPA),179,12.0\n547,0.051,,427,Sky Blue Golden Ale,Kölsch,179,12.0\n548,0.099,100.0,2094,Epitome,American Black Ale,222,16.0\n549,0.039,9.0,1941,Monkey Chased the Weasel,Berliner Weissbier,222,16.0\n550,0.078,80.0,1940,077XX,American Double / Imperial IPA,222,16.0\n551,0.042,35.0,1439,Boat Beer,American IPA,222,12.0\n552,0.069,,1465,Granny Smith Hard Apple Cider,Cider,404,16.0\n553,0.069,,1464,Dry Hard Apple Cider,Cider,404,16.0\n554,0.055999999999999994,,1744,Farmer Ted's Cream Ale,Cream Ale,331,12.0\n555,0.052000000000000005,,1743,Firewater India Pale Ale,American IPA,331,12.0\n556,0.047,,1742,White Zombie Ale,Witbier,331,12.0\n557,0.07,,1719,King Winterbolt Winter Ale,Winter Warmer,331,12.0\n558,0.047,,638,White Zombie Ale,Witbier,331,12.0\n559,0.052000000000000005,,507,Firewater India Pale Ale,American IPA,331,12.0\n560,0.055999999999999994,,480,Farmer Ted's Farmhouse Cream Ale,Cream Ale,331,12.0\n561,0.048,16.0,1882,Whitecap Wit,Witbier,285,16.0\n562,0.078,16.0,1881,Seiche Scottish Ale,Scottish Ale,285,16.0\n563,0.057999999999999996,,2446,Peanut Butter Jelly Time,American Brown Ale,96,12.0\n564,0.054000000000000006,,2106,King Coconut,American Porter,96,12.0\n565,0.085,90.0,2600,Gone A-Rye,American Double / Imperial IPA,29,16.0\n566,,,2210,Special Release,,29,16.0\n567,0.068,70.0,2052,Dankosaurus,American IPA,29,16.0\n568,0.051,35.0,1584,Scruffy's Smoked Alt,Smoked Beer,29,16.0\n569,0.051,36.0,1182,Elliott's Phoned Home Pale Ale,American Pale Ale (APA),29,16.0\n570,0.05,18.0,1050,The Lawn Ranger,Cream Ale,29,16.0\n571,0.05,,1219,All American Blonde Ale,American Blonde Ale,452,12.0\n572,0.05,,1218,All American Red Ale,American Amber / Red Ale,452,12.0\n573,0.05,40.0,2377,Main St. Virginia Ale,Altbier,122,12.0\n574,0.045,24.0,1839,Chin Music Amber Lager,American Amber / Red Lager,122,12.0\n575,0.05,40.0,1248,Main St. Virginia Ale,Altbier,122,12.0\n576,0.052000000000000005,42.0,1247,Ray Ray’s Pale Ale,American Pale Ale (APA),122,12.0\n577,0.051,15.0,1649,Chai Ale,Herbed / Spiced Beer,350,16.0\n578,0.07200000000000001,85.0,1648,Lucky Day IPA,American IPA,350,16.0\n579,0.095,99.0,1647,Terrace Hill Double IPA,American Double / Imperial IPA,350,16.0\n580,0.075,77.0,1646,Catch 23,American Black Ale,350,16.0\n581,0.07,,2057,Stickin' In My Rye,Rye Beer,236,24.0\n582,0.06,45.0,2056,Black Me Stout,American Stout,236,12.0\n583,0.05,22.0,2055,Killer Kolsch,Kölsch,236,12.0\n584,0.07,65.0,1933,Missile IPA,American IPA,236,12.0\n585,0.045,,2019,Enlighten,Kölsch,250,16.0\n586,0.065,8.0,2018,Ale Cider,Fruit / Vegetable Beer,250,16.0\n587,0.055,30.0,2017,Pail Ale,American Pale Ale (APA),250,16.0\n588,0.045,,2016,Englishman,English Brown Ale,250,16.0\n589,0.08,69.0,2080,8 Barrel,American Strong Ale,226,16.0\n590,0.055,40.0,2079,Oktoberfest,Märzen / Oktoberfest,226,16.0\n591,0.057,58.0,2380,IPA #11,American IPA,121,16.0\n592,0.057,10.0,2379,Blood Orange Honey,Fruit / Vegetable Beer,121,16.0\n593,0.052000000000000005,,2354,Lighthouse Amber,Altbier,121,16.0\n594,0.08900000000000001,126.0,2440,Bay of Bengal Double IPA (2014),American Double / Imperial IPA,99,12.0\n595,0.049,29.0,567,Churchkey Pilsner Style Beer,American Pilsner,526,12.0\n596,0.05,,1342,First Press,Cider,425,12.0\n597,0.05,,1341,Magic Apple,Cider,425,12.0\n598,0.055,25.0,2349,Cubano Espresso,Bock,141,12.0\n599,0.062,65.0,2014,Operation Homefront,American IPA,141,12.0\n600,0.08199999999999999,65.0,2013,Wandering Pelican,American Black Ale,141,12.0\n601,0.055,,2012,Sugar Plum,American Brown Ale,141,12.0\n602,0.055,,2011,Oktoberfest,Märzen / Oktoberfest,141,12.0\n603,0.06,,2010,Puppy's Breath Porter,American Porter,141,12.0\n604,0.045,,2009,Happening Now,American IPA,141,12.0\n605,0.07,60.0,1726,Hopped on the High Seas (Hop #529),American IPA,141,12.0\n606,0.07,60.0,1725,Hopped on the High Seas (Calypso),American IPA,141,12.0\n607,0.063,,1695,Wiregrass Post-Prohibition Ale,American Pale Ale (APA),141,12.0\n608,0.07,60.0,1694,Dry-Hopped On The High Seas Caribbean-Style IPA,American IPA,141,12.0\n609,0.07,60.0,1693,Hopped on the High Seas (Citra),American IPA,141,12.0\n610,0.07,60.0,1692,Hopped on the High Seas (Ahtanum),American IPA,141,12.0\n611,0.055,,1369,Gwar Beer,American Pale Ale (APA),141,12.0\n612,0.052000000000000005,,1243,Tropical Heatwave,American Pale Wheat Ale,141,16.0\n613,0.075,70.0,1142,Humidor Series India Pale Ale,American IPA,141,12.0\n614,0.075,70.0,1141,Jai Alai IPA Aged on White Oak,American IPA,141,12.0\n615,0.08,65.0,1140,José Martí American Porter,American Porter,141,12.0\n616,0.05,,1139,Invasion Pale Ale,American Pale Ale (APA),141,12.0\n617,0.055,25.0,1138,Maduro Brown Ale,English Brown Ale,141,12.0\n618,0.055,25.0,571,Maduro Brown Ale,American Brown Ale,141,12.0\n619,0.05,,570,Hotter Than Helles Lager,Munich Helles Lager,141,12.0\n620,0.07200000000000001,75.0,569,Tocobaga Red Ale,American Amber / Red Ale,141,12.0\n621,0.075,70.0,546,Jai Alai IPA,American IPA,141,12.0\n622,0.05,18.0,545,Florida Cracker Belgian Wit,Witbier,141,12.0\n623,0.048,,2338,Shark Tracker Light lager,Light Lager,145,12.0\n624,0.06,,1365,Pumple Drumkin,Pumpkin Ale,145,12.0\n625,0.045,,1094,Grey Lady,Witbier,145,12.0\n626,0.062,,657,Summer of Lager,Munich Helles Lager,145,12.0\n627,0.065,,656,Indie Pale Ale,American IPA,145,12.0\n628,0.038,,359,Sankaty Light Lager,Light Lager,145,12.0\n629,0.055999999999999994,,56,Whale's Tale Pale Ale,English Pale Ale,145,12.0\n630,0.067,60.0,1772,Jacaranada Rye IPA,American IPA,320,16.0\n631,0.06,75.0,1393,Cascadian Dark Ale,American Black Ale,418,12.0\n632,0.044000000000000004,13.0,893,Wheat the People,American Pale Wheat Ale,418,16.0\n633,0.047,17.0,1407,Tybee Island Blonde,American Blonde Ale,415,12.0\n634,0.062,55.0,1406,Savannah Brown Ale,American Brown Ale,415,12.0\n635,0.046,11.0,2438,Rhode Island Blueberry,Kölsch,101,12.0\n636,0.065,75.0,2437,Newport Storm IPA,American IPA,101,12.0\n637,0.052000000000000005,24.0,751,Hurricane Amber Ale (2004),American Amber / Red Ale,101,12.0\n638,0.052000000000000005,24.0,120,Hurricane Amber Ale,American Amber / Red Ale,101,12.0\n639,0.057999999999999996,,2061,Big Blue Van,Fruit / Vegetable Beer,232,16.0\n640,0.068,75.0,970,Des Moines IPA,American IPA,482,16.0\n641,0.048,22.0,969,Capital Gold Golden Lager,German Pilsener,482,16.0\n642,0.055999999999999994,21.0,968,Farmer John's Multi-Grain Ale,American Blonde Ale,482,16.0\n643,0.05,,2351,Behemoth,American Pilsner,139,12.0\n644,0.052000000000000005,,1650,Arkansas Red,American Amber / Red Ale,139,12.0\n645,0.057,,1337,Core Oatmeal Stout,Oatmeal Stout,139,12.0\n646,0.061,,1336,Core ESB,Extra Special / Strong Bitter (ESB),139,12.0\n647,0.038,,737,Chester's Beer (2005),American Pale Lager,512,12.0\n648,0.05,,129,Heiner Brau Kölsch,Kölsch,553,12.0\n649,0.048,,716,Trigger Blonde Ale,American Blonde Ale,515,16.0\n650,0.075,29.0,659,Crabtree Oatmeal Stout,Oatmeal Stout,515,16.0\n651,0.077,71.0,556,Eclipse Black IPA,American Black Ale,515,16.0\n652,0.06,46.0,2538,Neomexicanus Native,American Pale Ale (APA),63,12.0\n653,0.075,25.0,2355,Old Soul,Belgian Strong Pale Ale,63,12.0\n654,0.059000000000000004,,1689,Snowcat Coffee Stout,American Stout,63,12.0\n655,,,1163,WinterWonderGrass Festival Ale,American Amber / Red Ale,63,12.0\n656,,,940,Boohai Red Ale,American Amber / Red Ale,63,12.0\n657,0.052000000000000005,15.0,685,Lava Lake Wit,Witbier,63,12.0\n658,0.06,,613,Mountain Livin' Pale Ale,American Pale Ale (APA),63,12.0\n659,0.052000000000000005,25.0,356,Crazy Mountain Amber Ale,American Amber / Red Ale,63,12.0\n660,0.065,65.0,2029,Tropicalia,American IPA,247,12.0\n661,0.045,,2028,Athena,Berliner Weissbier,247,12.0\n662,0.049,25.0,2293,Aviator Raspberry Blonde,American Blonde Ale,169,12.0\n663,0.055,,1105,3 Picket Porter,American Porter,169,12.0\n664,0.055999999999999994,,1104,Rusty Nail Pale Ale,American Pale Ale (APA),169,12.0\n665,0.065,,2145,Red Water Irish Style Red,American Amber / Red Ale,212,12.0\n666,0.066,,1804,Mjöllnir,Herbed / Spiced Beer,212,12.0\n667,0.055,,1602,Bear Butte Nut Brown Ale,American Brown Ale,212,12.0\n668,0.045,,1301,Easy Livin' Summer Ale,American Blonde Ale,212,12.0\n669,0.055,,542,Canyon Cream Ale,Cream Ale,212,12.0\n670,0.069,,272,Pile O'Dirt Porter,American Porter,212,12.0\n671,0.06,,271,11th Hour IPA,American IPA,212,12.0\n672,0.06,31.0,1057,South Ridge Amber Ale,American Amber / Red Ale,472,16.0\n673,0.052000000000000005,23.0,681,Summertime Ale,Kölsch,472,16.0\n674,0.049,,1789,Lost River Blonde Ale,American Blonde Ale,315,16.0\n675,0.054000000000000006,,1788,Monon Wheat,Witbier,315,16.0\n676,0.08,,1787,Floyd's Folly,Scottish Ale,315,16.0\n677,0.063,,1786,Half Court IPA,American IPA,315,16.0\n678,0.045,,1763,Geary's Pale Ale,English Pale Ale,323,12.0\n679,0.06,,1311,Geary's Summer Ale,Kölsch,323,12.0\n680,0.08,,2078,Stone of Arbroath,Scotch Ale / Wee Heavy,227,12.0\n681,0.05,15.0,1809,The Tradition,American Blonde Ale,227,12.0\n682,0.053,11.0,1263,El Hefe Speaks,Hefeweizen,227,12.0\n683,0.055,,1092,Penn Quarter Porter,American Porter,227,12.0\n684,0.092,115.0,851,On the Wings of Armageddon,American Double / Imperial IPA,227,12.0\n685,0.065,80.0,186,The Corruption,American IPA,227,12.0\n686,0.07,,185,The Citizen,Belgian Pale Ale,227,12.0\n687,0.06,,184,The Public,American Pale Ale (APA),227,12.0\n688,0.065,,1224,Dank IPA,American IPA,451,16.0\n689,0.065,,964,Dank IPA (2012),American IPA,451,16.0\n690,0.07200000000000001,,1623,Lift Off IPA,American IPA,358,16.0\n691,0.055,,110,BrewFarm Select Golden Lager,American Pale Lager,554,12.0\n692,0.05,,1735,Sprocket Blonde Ale (2006),American Blonde Ale,333,12.0\n693,0.05,,1734,Sprocket Pale Ale (2006),American Pale Ale (APA),333,12.0\n694,0.063,37.0,1746,Dead Armadillo Amber Ale,American Amber / Red Ale,330,12.0\n695,0.06,,2371,Neato Bandito,Euro Pale Lager,127,12.0\n696,0.075,33.0,2251,Oak Cliff Coffee Ale,American Brown Ale,127,12.0\n697,0.085,100.0,2166,Dream Crusher Double IPA,American Double / Imperial IPA,127,12.0\n698,0.06,,1827,Deep Ellum Pale Ale,American Pale Ale (APA),127,12.0\n699,0.07,,1203,Double Brown Stout,Baltic Porter,127,12.0\n700,0.048,25.0,1202,Farmhouse Wit,Saison / Farmhouse Ale,127,16.0\n701,0.046,,1161,Rye Pils Session Lager,German Pilsener,127,12.0\n702,0.052000000000000005,23.0,946,Dallas Blonde,American Blonde Ale,127,12.0\n703,0.07,70.0,943,Deep Ellum IPA,American IPA,127,12.0\n704,0.045,44.0,1886,Thrasher Session India Pale Ale,American IPA,283,12.0\n705,0.05,16.0,1885,Gutch English Style Mild Ale,English Pale Mild Ale,283,12.0\n706,0.059000000000000004,55.0,1213,Chuli Stout,Irish Dry Stout,453,12.0\n707,0.055999999999999994,46.0,1159,Mother Ale,American Blonde Ale,453,12.0\n708,0.065,71.0,947,Twister Creek India Pale Ale,American IPA,453,12.0\n709,0.057999999999999996,46.0,929,Single Engine Red,Irish Red Ale,453,12.0\n710,0.07,,1944,Incredible Pedal IPA,American IPA,263,12.0\n711,0.05,,1943,Graham Cracker Porter,American Porter,263,12.0\n712,0.05,40.0,1210,Mirror Pond Pale Ale,American Pale Ale (APA),454,12.0\n713,0.052000000000000005,16.0,2550,Weissenheimer,Hefeweizen,57,12.0\n714,0.049,22.0,2505,Abbey's Single (2015- ),Abbey Single Ale,57,12.0\n715,0.063,76.0,2025,Vertex IPA,American IPA,57,12.0\n716,0.05,12.0,2021,Here Gose Nothin',Gose,57,12.0\n717,0.05,,2015,Strawberry Blonde,Fruit / Vegetable Beer,57,12.0\n718,0.096,85.0,1888,Hoperation Overload,American Double / Imperial IPA,57,12.0\n719,0.049,22.0,1887,Abbey's Single Ale (Current),Abbey Single Ale,57,12.0\n720,0.044000000000000004,45.0,2051,Bravo Four Point,American Pale Ale (APA),237,12.0\n721,0.052000000000000005,26.0,1201,Striped Bass Pale Ale,American Pale Ale (APA),237,12.0\n722,0.054000000000000006,27.0,924,Deadicated Amber,American Amber / Red Ale,491,16.0\n723,,,731,Kaleidoscope Collaboration 2012,American Black Ale,491,16.0\n724,0.071,85.0,730,California Sunshine Rye IPA,American IPA,491,16.0\n725,0.07400000000000001,12.0,647,Full Boar Scotch Ale,Scotch Ale / Wee Heavy,491,16.0\n726,0.045,,1773,12 Man Pale Ale,American Pale Ale (APA),319,12.0\n727,0.065,72.0,1795,Filthy Hoppin' IPA,American IPA,311,16.0\n728,,,944,Dock Street Amber Beer (1992),American Amber / Red Ale,488,12.0\n729,,,524,Dolores River Hefeweizen,Hefeweizen,531,16.0\n730,,,450,Dolores River ESB,Extra Special / Strong Bitter (ESB),531,16.0\n731,,,449,Snaggletooth Double Pale Ale,American Double / Imperial IPA,531,16.0\n732,,,448,Dolores River Pale Ale,American Pale Ale (APA),531,16.0\n733,,,447,Dolores River Dry Stout,Irish Dry Stout,531,16.0\n734,,,446,Dolores River Mild,English Dark Mild Ale,531,16.0\n735,0.049,,1246,Cranberry Blend,Cider,446,12.0\n736,0.051,,977,Orignal Blend,Cider,446,12.0\n737,0.066,100.0,881,Hop Abomination,American IPA,496,12.0\n738,0.051,17.0,880,Apricot Blonde,Fruit / Vegetable Beer,496,12.0\n739,0.043,12.0,872,Dry Dock Hefeweizen,Hefeweizen,496,12.0\n740,0.057999999999999996,49.0,871,Dry Dock Amber Ale,American Amber / Red Ale,496,12.0\n741,0.061,64.0,1685,Category 3 IPA,American IPA,340,12.0\n742,0.045,18.0,457,Dundee Summer Wheat Beer,American Pale Wheat Ale,538,12.0\n743,0.05,,1590,Pumpkin Patch Ale,Pumpkin Ale,369,16.0\n744,0.078,74.0,1382,Crank Yanker IPA,American IPA,369,16.0\n745,0.06,,1110,River Runners Pale Ale,American Pale Ale (APA),369,16.0\n746,0.05,,1014,Pumpkin Patch Ale (2012),Pumpkin Ale,369,16.0\n747,0.055,,911,Mountain Fairy Raspberry Wheat,Fruit / Vegetable Beer,369,16.0\n748,0.045,,680,Boater Beer,German Pilsener,369,16.0\n749,0.078,74.0,395,Crank Yanker IPA (2011),American IPA,369,16.0\n750,0.057,,1642,Bleeding Buckeye Red Ale,Extra Special / Strong Bitter (ESB),352,16.0\n751,0.049,25.0,673,Dottie Seattle Lager,American Amber / Red Lager,516,16.0\n752,0.07,,1107,Nut Sack Imperial Brown Ale,American Brown Ale,465,12.0\n753,0.05,,1039,Underachiever,American Adjunct Lager,473,16.0\n754,0.052000000000000005,,2477,Lil' Brainless Raspberries,Fruit / Vegetable Beer,81,12.0\n755,0.052000000000000005,,2008,Element 29,American Pale Ale (APA),81,12.0\n756,0.05,,2004,Hop Syndrome,American Pale Lager,81,12.0\n757,0.062,,2003,Escape to Colorado,American IPA,81,12.0\n758,0.043,60.0,2292,Little Sister India Style Session Ale,American IPA,170,12.0\n759,0.062,80.0,1504,Country Boy IPA,American IPA,170,12.0\n760,0.049,23.0,2604,Blonde Czich,American Blonde Ale,26,16.0\n761,0.07,61.0,2432,White Reaper,Belgian IPA,26,16.0\n762,0.051,,2431,Bobblehead,American Pale Wheat Ale,26,16.0\n763,0.052000000000000005,,2430,Lucky Dog,American Pale Ale (APA),26,16.0\n764,0.048,,2429,Voodoo,American Porter,26,16.0\n765,0.054000000000000006,48.0,1967,General George Patton Pilsner,Czech Pilsener,26,16.0\n766,0.04,,2283,Nomader Weiss,Berliner Weissbier,173,12.0\n767,0.085,,2248,Molotov Lite,American Double / Imperial IPA,173,16.0\n768,0.055,,1287,Hipster Ale (Two Roads Brewing),American Pale Ale (APA),173,12.0\n769,0.027000000000000003,,1286,Bikini Beer,American IPA,173,12.0\n770,0.055,,640,Hipster Ale (Westbrook Brewing),American Pale Ale (APA),173,12.0\n771,0.05,32.0,1722,Iron Horse Pale Ale,American Pale Ale (APA),335,12.0\n772,0.045,19.0,1435,Stone's Throw IPA,Scottish Ale,335,12.0\n773,0.067,70.0,1434,Wood Chipper India Pale Ale,American IPA,335,12.0\n774,0.063,55.0,2089,Trail Head,American Pale Ale (APA),224,12.0\n775,0.07,80.0,2088,Hop Stalker Fresh Hop IPA,American IPA,224,16.0\n776,0.07,58.0,1455,Sudice American Stout,American Stout,405,16.0\n777,0.05,20.0,1454,Parcae Belgian Style Pale Ale,Belgian Pale Ale,405,16.0\n778,0.05,20.0,1453,Norns Roggenbier,Roggenbier,405,16.0\n779,0.05,20.0,1452,Laimas Kölsch Style Ale,Kölsch,405,16.0\n780,0.07,70.0,1451,Moirai India Pale Ale,American IPA,405,16.0\n781,0.075,53.0,2191,Loki Red Ale,American Amber / Red Ale,201,16.0\n782,0.046,,1731,Peaches & Cream,Fruit / Vegetable Beer,201,16.0\n783,0.051,,1022,Quaff India Style Session Ale,American IPA,201,16.0\n784,0.075,53.0,895,Loki Red Ale (2013),American Amber / Red Ale,201,16.0\n785,0.069,,682,Mjolnir Imperial IPA,American Double / Imperial IPA,201,16.0\n786,0.05,,112,Fearless Scottish Ale,Scottish Ale,201,16.0\n787,0.081,,2289,Mastermind,American Double / Imperial IPA,172,12.0\n788,0.08199999999999999,,2027,Hyzer Flip,American Double / Imperial IPA,172,16.0\n789,0.08199999999999999,80.0,1929,Second Fiddle,American Double / Imperial IPA,172,16.0\n790,0.055,30.0,1858,Hodad Porter,American Porter,172,16.0\n791,0.045,,2591,Weiss Weiss Baby,Kristalweizen,36,12.0\n792,0.055,45.0,2590,Czech Yo Self,Czech Pilsener,36,12.0\n793,0.048,20.0,1968,FMB 101,Kölsch,36,12.0\n794,0.09,,1981,Hardcore Chimera,American Double / Imperial IPA,256,16.0\n795,0.08,80.0,1664,Sobek & Set,American Black Ale,256,16.0\n796,0.086,,1663,Nuclear Winter,Belgian Strong Dark Ale,256,16.0\n797,0.05,22.0,1662,Wet Hot American Wheat Ale,American Pale Wheat Ale,256,16.0\n798,0.053,,941,Secret Stache Stout,American Stout,256,16.0\n799,0.08,72.0,935,Fascist Pig Ale,American Amber / Red Ale,256,16.0\n800,0.055,,809,Cut Throat Pale Ale,American Pale Ale (APA),256,16.0\n801,0.075,,481,Threadless IPA,American IPA,256,16.0\n802,0.055,,351,Cut Throat Pale Ale (2011),American Pale Ale (APA),256,16.0\n803,0.047,,350,Golden Wing Blonde Ale,American Blonde Ale,256,16.0\n804,0.045,47.0,2569,Easy Jack,American IPA,48,12.0\n805,0.075,75.0,2463,Union Jack,American IPA,48,12.0\n806,0.053,,2462,Pivo Pils,German Pilsener,48,12.0\n807,0.047,,1957,805 Blonde Ale,American Blonde Ale,48,12.0\n808,0.047,20.0,1733,805,American Blonde Ale,48,12.0\n809,0.065,,2624,Deflator,Doppelbock,16,16.0\n810,0.05,27.0,2284,Hinchtown Hammer Down,American Blonde Ale,16,16.0\n811,0.06,104.0,1610,Half Cycle IPA,American IPA,16,16.0\n812,,,520,Inclined Plane Ale,American IPA,532,12.0\n813,0.055,,2554,Moped Traveler,American Pale Ale (APA),54,16.0\n814,0.071,60.0,608,Snake Dog IPA,American IPA,521,12.0\n815,0.047,28.0,607,Underdog Atlantic Lager,American Pale Lager,521,12.0\n816,0.04,,2567,Flying Mouse 8,American Porter,50,12.0\n817,0.07,70.0,2566,Flying Mouse 4,American IPA,50,12.0\n818,0.078,,1899,La Ferme Urbaine Farmhouse Ale,Saison / Farmhouse Ale,279,12.0\n819,0.06,,983,Backyahd IPA,American IPA,279,12.0\n820,0.065,,982,Raincloud Robust Porter,American Porter,279,12.0\n821,0.045,,981,Barstool American Golden Ale,American Blonde Ale,279,12.0\n822,0.05,18.0,2111,What the Butler Saw,Witbier,217,12.0\n823,0.069,65.0,2110,1916 Shore Shiver,American IPA,217,12.0\n824,0.052000000000000005,,2172,Quick WIT,Belgian Pale Ale,206,12.0\n825,0.062,,2171,The Optimist,American IPA,206,12.0\n826,0.045,,1911,Suicide Squeeze IPA,American IPA,206,16.0\n827,0.065,,1803,Java the Hop,American IPA,206,16.0\n828,0.062,,1566,Next Adventure Black IPA,American Black Ale,206,16.0\n829,0.067,,1515,3-Way IPA (2013),American IPA,206,16.0\n830,0.057999999999999996,,1214,Tender Loving Empire NWPA,American Pale Ale (APA),206,16.0\n831,0.052000000000000005,,674,Quick Wit Belgianesque Ale,Witbier,206,16.0\n832,0.055,,562,Sunrise Oatmeal Pale Ale,American Pale Ale (APA),206,16.0\n833,0.08800000000000001,,552,Cavatica Stout,American Double / Imperial Stout,206,16.0\n834,0.051,,319,1811 Lager,American Amber / Red Lager,206,16.0\n835,0.07400000000000001,97.0,318,Vortex IPA,American IPA,206,16.0\n836,,,2322,Fort Pitt Ale,American Amber / Red Ale,151,12.0\n837,0.047,19.0,2661,Park,American Pale Wheat Ale,4,12.0\n838,0.055999999999999994,16.0,2660,Westfalia,American Amber / Red Ale,4,12.0\n839,0.046,17.0,2659,KSA,Kölsch,4,12.0\n840,0.063,42.0,2658,Villager,American IPA,4,12.0\n841,0.085,50.0,2625,Dirty Bastard,Scotch Ale / Wee Heavy,15,12.0\n842,0.07200000000000001,65.0,1565,Centennial IPA,American IPA,15,12.0\n843,0.047,42.0,1223,All Day IPA,American IPA,15,12.0\n844,0.076,73.0,1874,El Chingon IPA,American IPA,287,12.0\n845,0.057,40.0,1873,Block Party Robust Porter,American Porter,287,12.0\n846,0.052000000000000005,20.0,1872,Local Buzz,American Blonde Ale,287,12.0\n847,0.055,,2613,Feel Like Maplin' Love,Oatmeal Stout,22,16.0\n848,0.05,,2612,Father's Beer,Belgian Pale Ale,22,16.0\n849,0.06,,2611,The 26th,American IPA,22,16.0\n850,0.064,90.0,2610,The Gadget,American IPA,22,16.0\n851,0.04,,1657,Leprechaun Lager,American Pale Lager,348,12.0\n852,0.052000000000000005,17.0,2309,Sunbru Kölsch,Kölsch,160,12.0\n853,0.06,21.0,1635,Kilt Lifter Scottish-Style Ale,,160,12.0\n854,0.051,,1616,Pumpkin Porter,American Porter,160,12.0\n855,0.042,9.0,1585,Four Peaks Peach Ale,Fruit / Vegetable Beer,160,12.0\n856,0.067,47.0,358,Hop Knot IPA,American IPA,160,12.0\n857,0.06,21.0,179,Kilt Lifter Scottish-Style Ale (2009),Scottish Ale,160,12.0\n858,0.052000000000000005,,178,Sunbru Kölsch,Kölsch,160,12.0\n859,0.06,,2428,Four String Vanilla Porter,American Porter,105,12.0\n860,0.05,28.0,2427,Suncaster Summer Wheat,American Pale Wheat Ale,105,12.0\n861,0.057,36.0,2425,Brass Knuckle Pale Ale,American Pale Ale (APA),105,12.0\n862,0.07,70.0,2424,Big Star White IPA,American White IPA,105,12.0\n863,0.055999999999999994,,1998,Old Detroit,American Amber / Red Ale,253,12.0\n864,0.069,69.0,1556,Batch 69 IPA,American IPA,253,12.0\n865,0.055,18.0,1208,Twisted Helles Summer Lager,Munich Helles Lager,253,12.0\n866,0.053,27.0,2527,OktoberFiesta,,66,12.0\n867,0.065,33.0,2526,Texicali ,American Brown Ale,66,12.0\n868,0.06,,2525,Pinata Protest,Witbier,66,12.0\n869,0.042,20.0,2524,Bat Outta Helles,Munich Helles Lager,66,12.0\n870,0.068,,2523,Original,American Amber / Red Ale,66,12.0\n871,0.042,10.0,2522,Rye Wit,Witbier,66,12.0\n872,0.059000000000000004,70.0,2521,Soul Doubt,American IPA,66,12.0\n873,0.044000000000000004,5.0,2520,Yo Soy Un Berliner,Berliner Weissbier,66,12.0\n874,0.04,,1174,77 Fremont Select Spring Session IPA,American IPA,460,12.0\n875,0.045,,1116,Fremont Organic Pale Ale,American Pale Ale (APA),460,12.0\n876,0.08,,994,Abominable Ale,English Strong Ale,460,12.0\n877,0.065,35.0,901,Harvest Ale,Saison / Farmhouse Ale,460,12.0\n878,0.065,45.0,875,Fremont Summer Ale,American Pale Ale (APA),460,12.0\n879,0.055999999999999994,30.0,858,Universale Pale Ale,American Pale Ale (APA),460,12.0\n880,0.065,80.0,857,Interurban IPA,American IPA,460,12.0\n881,0.053,32.0,1300,Gateway Kolsch Style Ale,Kölsch,433,12.0\n882,0.07,24.0,1260,Wee-Heavy-Er Scotch Ale,Scotch Ale / Wee Heavy,433,12.0\n883,0.052000000000000005,42.0,1259,13 Rebels ESB,Extra Special / Strong Bitter (ESB),433,12.0\n884,0.07,73.0,2254,Salamander Slam,American IPA,180,16.0\n885,0.05,,1658,Cack-A-Lacky,American Pale Ale (APA),347,12.0\n886,0.07200000000000001,50.0,2077,No Wake IPA,American IPA,228,12.0\n887,0.049,15.0,2076,Boathouse Blonde,American Blonde Ale,228,12.0\n888,0.05,26.0,2075,Cedar Point,American Amber / Red Ale,228,12.0\n889,0.067,70.0,2426,Clean Shave IPA,American IPA,106,12.0\n890,0.07200000000000001,75.0,2045,Might As Well IPL,American Pale Lager,240,16.0\n891,0.057999999999999996,35.0,1960,Saison Pamplemousse,Saison / Farmhouse Ale,240,12.0\n892,0.07400000000000001,74.0,1777,2020 IPA,American IPA,240,16.0\n893,0.08,70.0,1698,Wolf Among Weeds IPA,American IPA,240,16.0\n894,0.094,92.0,1641,Better Weather IPA,American IPA,240,16.0\n895,0.059000000000000004,60.0,1490,Point the Way IPA,American IPA,240,16.0\n896,0.046,15.0,1489,Golden Road Hefeweizen,Hefeweizen,240,16.0\n897,0.068,65.0,1399,Heal the Bay IPA,American IPA,240,16.0\n898,0.059000000000000004,60.0,1296,Point the Way IPA,American IPA,240,12.0\n899,0.05,,1034,Cabrillo Kölsch,Kölsch,240,16.0\n900,0.055,20.0,991,Get Up Offa That Brown,American Brown Ale,240,16.0\n901,0.08,70.0,750,Burning Bush Smoked IPA,American IPA,240,16.0\n902,0.08,70.0,749,Wolf Among Weeds IPA (2012),American IPA,240,16.0\n903,0.059000000000000004,60.0,549,Point the Way IPA (2012),American IPA,240,16.0\n904,0.046,15.0,548,Golden Road Hefeweizen (2012),Hefeweizen,240,16.0\n905,0.07,11.0,2587,Vanilla Porter,American Porter,39,16.0\n906,0.07,70.0,1109,Descender IPA,American IPA,464,12.0\n907,0.06,18.0,1108,Sweet As Pacific Ale,American Pale Wheat Ale,464,12.0\n908,0.055999999999999994,36.0,1000,Good People Pale Ale,American Pale Ale (APA),478,12.0\n909,0.09300000000000001,103.0,312,Snake Handler Double IPA,American Double / Imperial IPA,478,12.0\n910,0.06,54.0,311,Coffee Oatmeal Stout,Oatmeal Stout,478,12.0\n911,0.06,64.0,309,Good People IPA,American IPA,478,12.0\n912,0.057999999999999996,36.0,308,Good People American Brown Ale,American Brown Ale,478,12.0\n913,0.055,40.0,2205,Mountain Rescue Pale Ale,American Pale Ale (APA),194,12.0\n914,0.059000000000000004,55.0,2198,Goose Island India Pale Ale,American IPA,196,12.0\n915,0.054000000000000006,30.0,2457,312 Urban Pale Ale,American Pale Ale (APA),88,16.0\n916,0.054000000000000006,30.0,2202,312 Urban Pale Ale,American Pale Ale (APA),88,12.0\n917,0.042,18.0,2201,312 Urban Wheat Ale,American Pale Wheat Ale,88,16.0\n918,0.042,18.0,1829,312 Urban Wheat Ale,American Pale Wheat Ale,88,12.0\n919,0.042,20.0,581,312 Urban Wheat Ale (2012),American Pale Wheat Ale,88,12.0\n920,0.052000000000000005,19.0,1383,Beaver Logger,American Pale Lager,420,12.0\n921,0.05,,477,White Water Wheat,American Pale Wheat Ale,536,12.0\n922,0.052000000000000005,,476,Grand Canyon American Pilsner,American Pilsner,536,12.0\n923,0.054000000000000006,,143,Grand Canyon Sunset Amber Ale,American Amber / Red Ale,536,12.0\n924,,,142,Black Iron India Pale Ale,American IPA,536,12.0\n925,0.043,21.0,2129,Monarch Classic American Wheat,American Pale Wheat Ale,213,12.0\n926,0.049,21.0,2127,Sir William's English Brown Ale,English Brown Ale,213,12.0\n927,0.055,35.0,2126,Lakefire Rye Pale Ale,American Pale Ale (APA),213,12.0\n928,0.053,22.0,2303,Beer Agent Re-Ignition,American Blonde Ale,165,16.0\n929,0.057,18.0,1990,Cherry Ale,Fruit / Vegetable Beer,165,16.0\n930,0.055999999999999994,33.0,1702,Bourbon Barrel Aged Coconut Porter,American Porter,165,16.0\n931,0.062,60.0,1701,Great Crescent IPA,American IPA,165,16.0\n932,0.057,27.0,1700,Aurora Lager,Dortmunder / Export Lager,165,16.0\n933,0.053,22.0,1699,Great Crescent Blonde Ale,American Blonde Ale,165,16.0\n934,0.055999999999999994,33.0,1269,Great Crescent Coconut Porter,American Porter,165,16.0\n935,0.057,25.0,930,Great Crescent Oktoberfest Lager,Märzen / Oktoberfest,165,16.0\n936,0.045,36.0,649,Great Crescent Brown Ale,American Brown Ale,165,16.0\n937,0.057,18.0,639,Cherry Ale (1),Fruit / Vegetable Beer,165,16.0\n938,0.057,27.0,626,Aurora Lager (2011),Dortmunder / Export Lager,165,16.0\n939,0.06,25.0,615,Frosted Fields Winter Wheat,American Dark Wheat Ale,165,16.0\n940,0.051,13.0,478,Great Crescent Belgian Style Wit,Witbier,165,16.0\n941,0.075,65.0,455,Bourbon's Barrel Stout,American Stout,165,16.0\n942,0.08,66.0,442,Great Crescent Stout,English Stout,165,16.0\n943,0.055999999999999994,33.0,441,Great Crescent Coconut Porter (2012),American Porter,165,16.0\n944,0.057,23.0,440,Great Crescent Dark Lager,Euro Dark Lager,165,16.0\n945,0.042,26.0,439,Great Crescent Mild Ale,English Dark Mild Ale,165,16.0\n946,0.062,60.0,436,Great Crescent IPA (2011),American IPA,165,16.0\n947,0.053,22.0,389,Great Crescent Blonde Ale (2011),American Blonde Ale,165,16.0\n948,0.05,,2650,Denver Pale Ale (Artist Series No. 1),American Pale Ale (APA),6,12.0\n949,0.087,,2649,Hibernation Ale,Old Ale,6,12.0\n950,0.061,,2648,Whitewater,American Pale Wheat Ale,6,12.0\n951,0.071,,2647,Rumble,American IPA,6,12.0\n952,0.083,,2646,Orabelle,Tripel,6,12.0\n953,0.05,,2645,Lasso,American IPA,6,12.0\n954,0.095,75.0,2644,Yeti  Imperial Stout,Russian Imperial Stout,6,12.0\n955,0.073,,2643,Colette,Saison / Farmhouse Ale,6,12.0\n956,0.071,,2642,Titan IPA,American IPA,6,12.0\n957,0.045,15.0,404,Black Star Double Hopped Golden Lager (24 oz.),American Pale Lager,543,24.0\n958,0.045,15.0,164,Black Star Double Hopped Golden Lager (12 oz.),American Pale Lager,543,12.0\n959,0.052000000000000005,49.0,1923,Commotion APA,American Pale Ale (APA),269,12.0\n960,0.052000000000000005,,1922,Southern Drawl Pale Lager,American Pale Lager,269,12.0\n961,0.05,5.0,1604,Chickawawa Lemonale,Fruit / Vegetable Beer,365,12.0\n962,0.07,22.0,1574,Barrel Aged Farmer,American Brown Ale,365,16.0\n963,0.048,,1446,Great River Golden Ale,American Blonde Ale,365,12.0\n964,0.048,,1275,Dirty Blonde Chocolate Ale,American Blonde Ale,365,12.0\n965,0.048,20.0,1244,Dos Pistolas,Vienna Lager,365,12.0\n966,0.05,30.0,1064,Owney Irish Style Red Ale,Irish Red Ale,365,16.0\n967,0.06,,1028,Aaah Bock Lager,Vienna Lager,365,16.0\n968,0.055,10.0,865,Widespread Wit,Witbier,365,16.0\n969,0.054000000000000006,30.0,864,Roller Dam Red Ale,Irish Red Ale,365,16.0\n970,0.053,48.0,863,483 Pale Ale,American Pale Ale (APA),365,16.0\n971,0.09,99.0,672,Hop A Potamus Double Dark Rye Pale Ale,Rye Beer,365,16.0\n972,0.07,22.0,655,Farmer Brown Ale,American Brown Ale,365,16.0\n973,0.07,70.0,540,Big Cock IPA,American IPA,365,16.0\n974,0.059000000000000004,25.0,539,Oktoberfest,Märzen / Oktoberfest,365,16.0\n975,0.048,25.0,517,40th Annual Bix Street Fest Copper Ale (Current),American Amber / Red Ale,365,16.0\n976,0.06,36.0,371,Redband Stout,American Stout,365,16.0\n977,0.053,48.0,190,483 Pale Ale (2010),American Pale Ale (APA),365,16.0\n978,0.054000000000000006,30.0,189,Roller Dam Red Ale (2010),Irish Red Ale,365,16.0\n979,0.05,30.0,1106,Pablo Beach Pale Ale,American Pale Ale (APA),466,12.0\n980,0.057,44.0,2314,Wild Trail Pale Ale,American Pale Ale (APA),156,12.0\n981,0.067,71.0,2313,Mothman Black IPA,American Black Ale,156,12.0\n982,0.057999999999999996,,2461,Autumn Winds Fest Beer,Märzen / Oktoberfest,86,16.0\n983,0.085,69.0,2044,Captain's Daughter,American Double / Imperial IPA,86,12.0\n984,0.057999999999999996,,1567,Autumn Winds,Märzen / Oktoberfest,379,16.0\n985,0.06,54.0,1505,Flying Jenny Extra Pale Ale,American Pale Ale (APA),379,12.0\n986,0.04,20.0,1186,Hazy Day Belgian-Style Wit,Witbier,379,16.0\n987,0.055,,1185,Bring Back the Beach Blonde Ale,American Blonde Ale,379,16.0\n988,0.06,34.0,984,Leaning Chimney Smoked Porter,American Porter,379,16.0\n989,0.06,54.0,693,Flying Jenny Extra Pale Ale (2012),American Pale Ale (APA),379,12.0\n990,0.049,22.0,631,Flagship Ale,Cream Ale,379,12.0\n991,0.045,6.0,2375,Mr. Blue Sky,American Pale Wheat Ale,124,16.0\n992,0.065,,2143,3 Scrooges,Winter Warmer,124,16.0\n993,0.05,25.0,2142,Screamin’ Pumpkin,Pumpkin Ale,124,16.0\n994,0.05,35.0,2141,Grand Trunk Bohemian Pils,Czech Pilsener,124,16.0\n995,0.065,25.0,2140,El Rojo,American Amber / Red Ale,124,16.0\n996,0.075,,2139,Norm's Raggedy Ass IPA,American IPA,124,16.0\n997,0.05,35.0,2138,Grind Line,American Pale Ale (APA),124,16.0\n998,0.04,55.0,2007,Norm's Gateway IPA,American IPA,124,12.0\n999,0.09,,1570,Lemon Shandy Tripel,Tripel,124,16.0\n1000,0.063,43.0,2339,Little Red Cap,Altbier,144,12.0\n1001,0.069,67.0,1857,Supergoose IPA,American IPA,290,12.0\n1002,0.047,,1440,Hale's Pale American Ale,American Pale Ale (APA),290,12.0\n1003,0.07,,1753,Heyoka IPA,American IPA,327,16.0\n1004,0.08,,1448,Guest Lager,American Double / Imperial Pilsner,327,16.0\n1005,0.057,,1134,Pony Pilsner,German Pilsener,327,16.0\n1006,0.055,,1066,Akari Shogun American Wheat Ale,American Pale Wheat Ale,327,16.0\n1007,0.06,,849,Meat Wave,English India Pale Ale (IPA),327,16.0\n1008,0.06,,352,Over Ale,American Brown Ale,327,16.0\n1009,0.042,,149,Gossamer Golden Ale,American Blonde Ale,327,16.0\n1010,0.052000000000000005,,148,Daisy Cutter Pale Ale,American Pale Ale (APA),327,16.0\n1011,0.07,40.0,2026,Pursuit,American IPA,248,12.0\n1012,0.052000000000000005,18.0,1361,Half Full Bright Ale,American Blonde Ale,248,12.0\n1013,0.046,17.0,1016,Orange Wheat,Fruit / Vegetable Beer,476,12.0\n1014,0.043,14.0,1015,Hangar 24 Helles Lager,Munich Helles Lager,476,12.0\n1015,0.075,70.0,1677,The Great Return,American IPA,343,16.0\n1016,0.044000000000000004,18.0,1331,Hardywood Cream Ale,Cream Ale,343,12.0\n1017,0.055999999999999994,55.0,1270,Capital Trail Pale Ale,American Pale Ale (APA),343,12.0\n1018,0.052000000000000005,15.0,2059,UFO Gingerland,Herbed / Spiced Beer,234,12.0\n1019,0.062,45.0,1653,The Long Thaw White IPA,American White IPA,234,12.0\n1020,0.048,,1558,Honey Cider,Cider,234,12.0\n1021,0.05,28.0,1380,Harpoon Summer Beer,Kölsch,234,12.0\n1022,0.059000000000000004,42.0,1379,Harpoon IPA,American IPA,234,12.0\n1023,0.059000000000000004,20.0,1340,UFO Pumpkin,Pumpkin Ale,234,12.0\n1024,0.055,30.0,1313,Harpoon Octoberfest,Märzen / Oktoberfest,234,12.0\n1025,0.059000000000000004,42.0,770,Harpoon IPA (2012),American IPA,234,12.0\n1026,0.05,28.0,769,Harpoon Summer Beer (2012),Kölsch,234,12.0\n1027,0.048,10.0,610,UFO White,American Pale Wheat Ale,234,12.0\n1028,0.05,28.0,192,Harpoon Summer Beer (2010),Kölsch,234,12.0\n1029,0.059000000000000004,42.0,126,Harpoon IPA (2010),American IPA,234,12.0\n1030,,,506,Great Falls Select Pale Ale,American Blonde Ale,535,12.0\n1031,0.048,,181,Beltian White,Witbier,535,12.0\n1032,0.049,,2183,Kaua'i Golden Ale,American Blonde Ale,204,12.0\n1033,0.054000000000000006,,2182,Sunset Amber,American Pale Ale (APA),204,12.0\n1034,0.064,,2181,Hapa Brown Ale,American Brown Ale,204,19.2\n1035,0.064,,2180,Hapa Brown Ale,American Brown Ale,204,12.0\n1036,0.083,,2179,Southern Cross,Flanders Red Ale,204,19.2\n1037,0.076,65.0,1895,Groupe G,Belgian IPA,280,16.0\n1038,0.062,40.0,1894,Pt. Bonita Rustic Lager,American Pale Lager,280,16.0\n1039,0.08800000000000001,77.0,1893,Hill 88 Double IPA,American Double / Imperial IPA,280,16.0\n1040,0.07200000000000001,45.0,990,Loose Cannon,American IPA,479,12.0\n1041,0.06,30.0,989,AARGHtoberfest!,Märzen / Oktoberfest,479,12.0\n1042,0.06,,988,Davy Jones Lager,Cream Ale,479,12.0\n1043,0.063,30.0,1351,Grazias,Cream Ale,423,16.0\n1044,0.08,86.0,1346,Habitus IPA,American IPA,423,16.0\n1045,0.099,85.0,904,Ex Umbris Rye Imperial Stout,American Double / Imperial Stout,423,16.0\n1046,0.063,21.0,2295,The Golden One,American Pilsner,168,12.0\n1047,0.07,68.0,2294,The Power of Zeus,American Pale Ale (APA),168,12.0\n1048,0.044000000000000004,22.0,824,Tonganoxie Honey Wheat,American Pale Wheat Ale,500,12.0\n1049,0.045,,616,Oregon Trail Unfiltered Raspberry Wheat,Fruit / Vegetable Beer,500,12.0\n1050,0.055,,96,Annie's Amber Ale,American Amber / Red Ale,500,12.0\n1051,0.045,32.0,1615,The 12th Can™,American Pale Ale (APA),362,16.0\n1052,0.055,34.0,889,Hilliard's Pils,Czech Pilsener,362,16.0\n1053,0.049,20.0,724,Hilliard's Blonde,American Blonde Ale,362,16.0\n1054,0.055,60.0,497,Hilliard's Amber Ale,American Amber / Red Ale,362,16.0\n1055,0.066,30.0,496,Hilliard's Saison,Saison / Farmhouse Ale,362,16.0\n1056,0.042,,1652,White Cap White IPA,American White IPA,349,16.0\n1057,0.042,25.0,1835,Provision,Saison / Farmhouse Ale,297,12.0\n1058,0.047,28.0,1834,One Nut Brown,American Brown Ale,297,12.0\n1059,0.057999999999999996,45.0,1833,Hop Farm IPA,American IPA,297,12.0\n1060,0.049,20.0,2195,Double D Blonde,American Blonde Ale,198,12.0\n1061,0.078,60.0,1605,Festeroo Winter Ale,American Strong Ale,198,12.0\n1062,0.063,70.0,1543,Proxima IPA,American IPA,198,12.0\n1063,0.049,20.0,1390,Double D Blonde (2013),American Blonde Ale,198,12.0\n1064,0.048,13.0,1354,541 American Lager,American Pale Lager,198,12.0\n1065,0.065,90.0,1353,Alphadelic IPA,American IPA,198,12.0\n1066,0.065,90.0,499,Alphadelic IPA (2011),American IPA,198,12.0\n1067,0.049,20.0,498,Double D Blonde (2011),American Blonde Ale,198,12.0\n1068,0.07,,1501,Green House India Pale Ale,American IPA,395,12.0\n1069,0.051,,1004,The One They Call Zoe,American Pale Lager,395,12.0\n1070,0.051,40.0,502,Alteration,Altbier,395,12.0\n1071,0.06,50.0,501,Pale Dog,American Pale Ale (APA),395,12.0\n1072,0.065,,2357,Porter Culture,American Porter,136,12.0\n1073,0.068,,2483,Hard Cider,Cider,80,16.0\n1074,0.027000000000000003,21.0,2482,Totally Radler,Radler,80,16.0\n1075,0.039,20.0,2400,Nonstop Hef Hop,American Pale Wheat Ale,80,16.0\n1076,0.039,20.0,2399,Nonstop Hef Hop,American Pale Wheat Ale,80,16.0\n1077,0.039,20.0,2398,Nonstop Hef Hop,American Pale Wheat Ale,80,16.0\n1078,0.039,20.0,2397,Nonstop Hef Hop,American Pale Wheat Ale,80,16.0\n1079,0.039,20.0,2396,Nonstop Hef Hop,American Pale Wheat Ale,80,16.0\n1080,0.039,20.0,2395,Nonstop Hef Hop,American Pale Wheat Ale,80,16.0\n1081,0.039,20.0,2394,Nonstop Hef Hop,American Pale Wheat Ale,80,16.0\n1082,0.039,20.0,2393,Nonstop Hef Hop,American Pale Wheat Ale,80,16.0\n1083,0.039,20.0,2392,Nonstop Hef Hop,American Pale Wheat Ale,80,16.0\n1084,0.039,20.0,2391,Nonstop Hef Hop,American Pale Wheat Ale,80,16.0\n1085,0.039,20.0,2390,Nonstop Hef Hop,American Pale Wheat Ale,80,16.0\n1086,0.039,20.0,2389,Nonstop Hef Hop,American Pale Wheat Ale,80,16.0\n1087,0.057999999999999996,60.0,2388,Rise Up Red,American Amber / Red Ale,80,16.0\n1088,0.057999999999999996,35.0,2200,Survival Stout,American Stout,80,16.0\n1089,0.066,75.0,2199,Hopworks IPA,American IPA,80,16.0\n1090,0.073,70.0,2193,Abominable Winter Ale,American Strong Ale,80,16.0\n1091,0.06,60.0,1398,Pigwar White India Pale Ale,American White IPA,80,16.0\n1092,0.057999999999999996,60.0,1085,Rise-Up Red (2014),American Amber / Red Ale,80,16.0\n1093,0.073,70.0,916,Abominable Winter Ale (2012),American Strong Ale,80,16.0\n1094,0.051,32.0,658,HUB Lager,Czech Pilsener,80,16.0\n1095,0.066,75.0,653,Hopworks IPA (2012),American IPA,80,16.0\n1096,0.055999999999999994,,2385,Watermelon Wheat,American Pale Wheat Ale,120,12.0\n1097,0.051,17.0,2384,Laka Laka Pineapple,Hefeweizen,120,12.0\n1098,0.06,,2383,Oktoberfest,Märzen / Oktoberfest,120,16.0\n1099,0.065,,1251,Trail Maker Pale Ale,American Pale Ale (APA),445,12.0\n1100,0.055,,1250,Action Man Lager,Vienna Lager,445,12.0\n1101,0.068,90.0,1903,Let It Ride IPA,American IPA,277,12.0\n1102,0.065,22.0,1691,Stir Crazy Winter Ale,Winter Warmer,277,12.0\n1103,0.05,10.0,1555,Sweet Yamma Jamma Ale,Fruit / Vegetable Beer,277,12.0\n1104,0.046,27.0,1115,Shenanigans Summer Ale,American Pale Wheat Ale,277,12.0\n1105,0.065,80.0,729,Midnight Ryder,American Black Ale,277,12.0\n1106,0.054000000000000006,45.0,728,Day Tripper Pale Ale,American Pale Ale (APA),277,12.0\n1107,0.048,32.0,2350,Oklahoma Suks,American Amber / Red Ale,140,12.0\n1108,0.055,42.0,2301,Power & Light,American Pale Ale (APA),140,12.0\n1109,0.059000000000000004,27.0,1904,White Rabbit ,Witbier,140,12.0\n1110,0.057999999999999996,58.0,2609,Tribute,American Pale Ale (APA),23,12.0\n1111,0.07,75.0,2038,Infamous IPA,American IPA,242,12.0\n1112,0.055,20.0,1774,Hijack,Cream Ale,242,12.0\n1113,0.045,20.0,559,Jon Boat Coastal Ale,American Blonde Ale,527,12.0\n1114,0.068,55.0,558,I-10 IPA,American IPA,527,12.0\n1115,0.053,28.0,553,People's Pale Ale,American Pale Ale (APA),527,12.0\n1116,0.049,,2376,Summer Ale,American Blonde Ale,123,12.0\n1117,,,1784,Appreciation Ale,American IPA,316,16.0\n1118,0.052000000000000005,18.0,2673,House Lager,Keller Bier / Zwickel Bier,2,16.0\n1119,0.048,15.0,2672,Leisure Time,American Pale Lager,2,12.0\n1120,0.07200000000000001,80.0,2671,Excess IPL,American India Pale Lager,2,16.0\n1121,0.067,65.0,2670,Hoponius Union,American India Pale Lager,2,12.0\n1122,0.049,45.0,2669,Calyptra,American India Pale Lager,2,12.0\n1123,0.05,,1405,Helen's Blend,Cider,416,12.0\n1124,0.051,,823,Jack's Hard Cider,Cider,416,12.0\n1125,0.055,37.0,1793,Thunder Ann,American Pale Ale (APA),312,12.0\n1126,0.055,,2453,Razz Wheat,Fruit / Vegetable Beer,92,12.0\n1127,0.065,,2363,Hop Ryot,American IPA,92,12.0\n1128,0.07,,689,Mystic Mama IPA,American IPA,92,12.0\n1129,0.05,,688,Firefly Amber Ale,American Amber / Red Ale,92,12.0\n1130,0.067,,687,Chomolungma Honey Nut Brown Ale,English Brown Ale,92,12.0\n1131,0.069,,2408,Welcome to Scoville,American IPA,114,12.0\n1132,,,2595,Bastian,American Strong Ale,32,12.0\n1133,0.045,,2480,Healani,Hefeweizen,32,12.0\n1134,0.055,,1525,Yabba Dhaba Chai Tea Porter,American Porter,32,12.0\n1135,0.055,,1524,A Capella Gluten Free Pale Ale,American Pale Ale (APA),32,12.0\n1136,0.06,,1523,Casper White Stout,American Blonde Ale,32,12.0\n1137,0.06,,1254,JP's Ould Sod Irish Red IPA,American IPA,32,12.0\n1138,0.05,15.0,2060,Weize Guy,Hefeweizen,233,12.0\n1139,0.05,50.0,469,Fox Tail Gluten Free Ale,American Pale Ale (APA),233,12.0\n1140,0.09300000000000001,90.0,468,Hop Box Imperial IPA,American Double / Imperial IPA,233,12.0\n1141,0.052000000000000005,15.0,467,Joseph James American Lager,American Adjunct Lager,233,12.0\n1142,0.071,,2163,Sucha Much IPA,American IPA,208,12.0\n1143,0.075,24.0,2162,Lewbricator Wheat Dopplebock ,Doppelbock,208,12.0\n1144,0.052000000000000005,16.0,2374,Weisse Versa (2012),Hefeweizen,125,12.0\n1145,0.057999999999999996,25.0,1560,Mother in Lager,Munich Dunkel Lager,125,12.0\n1146,0.055,40.0,1557,Weekend Warrior Pale Ale,American Pale Ale (APA),125,12.0\n1147,0.055,25.0,1458,Karbachtoberfest,Märzen / Oktoberfest,125,12.0\n1148,0.047,20.0,1235,Love Street Summer Seasonal (2014),Kölsch,125,12.0\n1149,0.066,20.0,1068,Barn Burner Saison,Saison / Farmhouse Ale,125,12.0\n1150,0.095,85.0,666,Rodeo Clown Double IPA,American Double / Imperial IPA,125,12.0\n1151,0.049,45.0,465,Sympathy for the Lager,American Amber / Red Lager,125,12.0\n1152,0.052000000000000005,15.0,464,Weisse Versa,Hefeweizen,125,12.0\n1153,0.066,70.0,463,Hopadillo India Pale Ale,American IPA,125,12.0\n1154,0.057,19.0,1678,KelSo Nut Brown Lager,Euro Dark Lager,342,12.0\n1155,0.06,64.0,1572,KelSo India Pale Ale,American IPA,342,12.0\n1156,0.055,23.0,1348,KelSo Pilsner,Czech Pilsener,342,12.0\n1157,0.057999999999999996,,1193,Skilak Scottish Ale,Scottish Ale,458,12.0\n1158,0.05,15.0,1187,Peninsula Brewers Reserve (PBR),American Blonde Ale,458,12.0\n1159,0.068,,349,Sunken Island IPA,American IPA,458,12.0\n1160,0.057999999999999996,,348,Skilak Scottish Ale (2011),Scottish Ale,458,12.0\n1161,0.065,11.0,760,Cold Smoke Scotch Ale (2007),Scotch Ale / Wee Heavy,510,16.0\n1162,0.065,65.0,759,Double Haul IPA (2009),American IPA,510,16.0\n1163,0.065,65.0,758,Double Haul IPA (2006),American IPA,510,16.0\n1164,0.055,50.0,87,Eddy Out Pale Ale,American Pale Ale (APA),510,16.0\n1165,0.065,65.0,86,Double Haul IPA,American IPA,510,16.0\n1166,0.065,11.0,85,Cold Smoke Scotch Ale,Scotch Ale / Wee Heavy,510,16.0\n1167,,,2472,U. P. Witbier,Witbier,84,12.0\n1168,,,779,November Gale Pale Ale,American Pale Ale (APA),84,12.0\n1169,,,364,Olde Ore Dock Scottish Ale,Scottish Ale,84,12.0\n1170,,,60,Widow Maker Black Ale,American Brown Ale,84,12.0\n1171,,,59,Lift Bridge Brown Ale,American Brown Ale,84,12.0\n1172,,,58,Pick Axe Blonde Ale,American Blonde Ale,84,12.0\n1173,,,57,Red Jacket Amber Ale,American Amber / Red Ale,84,12.0\n1174,0.051,,2436,Amber Ale,American Amber / Red Ale,102,12.0\n1175,0.055,,1706,King Street Pilsner,Czech Pilsener,102,12.0\n1176,0.06,70.0,1667,King Street IPA,American IPA,102,12.0\n1177,0.057,10.0,1666,King Street Hefeweizen,Hefeweizen,102,12.0\n1178,0.049,,1665,King Street Blonde Ale,American Blonde Ale,102,12.0\n1179,0.063,65.0,2460,India Pale Ale,American IPA,87,16.0\n1180,0.048,11.0,2459,Blackberry Wheat,American Pale Wheat Ale,87,16.0\n1181,0.046,18.0,1274,Longboard Island Lager,American Amber / Red Lager,439,24.0\n1182,0.046,18.0,1220,Longboard Island Lager,American Amber / Red Lager,439,16.0\n1183,0.046,18.0,1070,Longboard Island Lager,American Amber / Red Lager,439,12.0\n1184,0.046,18.0,590,Longboard Island Lager,American Amber / Red Lager,439,12.0\n1185,0.04,9.0,781,Choc Beer (2003),American Dark Wheat Ale,505,12.0\n1186,0.08,,1637,Bellingham Beer Week 2013 Collaboration,Belgian Strong Dark Ale,354,16.0\n1187,0.054000000000000006,15.0,1741,A Slice of Hefen,Hefeweizen,332,16.0\n1188,0.07200000000000001,100.0,664,Elevated IPA,American IPA,332,16.0\n1189,0.066,30.0,392,Rumspringa Golden Bock,Maibock / Helles Bock,545,12.0\n1190,0.048,28.0,195,Lancaster German Style Kölsch,Kölsch,545,12.0\n1191,0.045,,2547,Beach Cruiser,Hefeweizen,59,12.0\n1192,0.068,,2493,I.P. Eh!,American IPA,59,12.0\n1193,0.05,,2492,Schoolhouse Honey,American Amber / Red Ale,59,12.0\n1194,0.055,,2491,10 Degrees of Separation,English Brown Ale,59,12.0\n1195,0.05,12.0,2108,Laughing Dog Cream Ale,Cream Ale,218,12.0\n1196,0.048,9.0,1397,Two-One Niner,American Pilsner,218,12.0\n1197,0.064,66.0,1396,Laughing Dog IPA,American IPA,218,12.0\n1198,0.064,95.0,1675,Madra Allta,American IPA,345,12.0\n1199,0.055999999999999994,70.0,1249,Duluchan India Pale Ale,American IPA,345,12.0\n1200,0.05,,1445,Lazy Monk Bohemian Pilsner,Czech Pilsener,406,16.0\n1201,0.051,,475,Yellowstone Golden Ale,Kölsch,537,12.0\n1202,0.057,,474,Tumbleweed IPA,American IPA,537,12.0\n1203,0.05,,473,Lewis & Clark Amber Ale,American Amber / Red Ale,537,12.0\n1204,0.05,,472,Miner's Gold Hefeweizen,Hefeweizen,537,12.0\n1205,0.057,,471,Back Country Scottish Ale,Scottish Ale,537,12.0\n1206,0.052000000000000005,30.0,2036,Getaway,German Pilsener,244,16.0\n1207,0.06,30.0,1168,Farm Girl Saison,Saison / Farmhouse Ale,244,16.0\n1208,0.057999999999999996,40.0,1832,Adam's Stout,American Stout,298,12.0\n1209,0.057,42.0,1688,American Hero,American Amber / Red Ale,298,12.0\n1210,0.052000000000000005,20.0,1687,Schweet Ale,Fruit / Vegetable Beer,298,12.0\n1211,0.065,75.0,1686,Irregardless IPA,American IPA,298,12.0\n1212,0.057,40.0,2434,Peach Pale Ale,American Pale Ale (APA),104,12.0\n1213,0.06,,2332,Deadeye Jack,American Porter,149,12.0\n1214,0.075,,2330,Pistols at Dawn,American Stout,149,16.0\n1215,0.057,47.0,2329,Peacemaker Pale Ale,American Pale Ale (APA),149,12.0\n1216,0.057999999999999996,11.0,2327,Shotgun Betty,Hefeweizen,149,12.0\n1217,0.061,30.0,2326,Sweet Josie,American Brown Ale,149,12.0\n1218,0.059000000000000004,42.0,1926,Long Trail IPA,English India Pale Ale (IPA),268,12.0\n1219,0.046,30.0,1924,Long Trail Ale,American Amber / Red Ale,268,12.0\n1220,0.07200000000000001,33.0,1090,Double Bag,Altbier,268,16.0\n1221,0.04,8.0,574,Blackbeary Wheat,Fruit / Vegetable Beer,268,12.0\n1222,0.046,30.0,573,Long Trail Ale (1),Altbier,268,12.0\n1223,0.046,8.0,2584,Gose,Gose,41,16.0\n1224,0.048,20.0,2583,Vermont Pilsner,German Pilsener,41,16.0\n1225,0.055,,2582,Mosaic Single Hop IPA,American IPA,41,16.0\n1226,0.045,,2581,Lost Galaxy,American IPA,41,16.0\n1227,0.062,65.0,1309,Face Plant IPA,American IPA,430,12.0\n1228,0.055999999999999994,55.0,1308,Rhino Chasers Pilsner,Czech Pilsener,430,12.0\n1229,0.052000000000000005,29.0,1571,Slow Hand Stout,American Stout,377,16.0\n1230,0.062,,1204,Hips Don't Lie,Hefeweizen,456,16.0\n1231,0.052000000000000005,,1122,Ride Again Pale Ale,American Pale Ale (APA),456,16.0\n1232,0.048,,700,The Farmer's Daughter,American Blonde Ale,456,16.0\n1233,0.038,18.0,2033,Pub Ale,English Dark Mild Ale,245,12.0\n1234,0.051,31.0,2032,Ballistic Blonde,Belgian Pale Ale,245,12.0\n1235,0.054000000000000006,,2311,Knotty Pine,American Pale Ale (APA),158,12.0\n1236,0.053,20.0,1153,Lumberyard Pilsner,American Pilsner,158,12.0\n1237,0.061,,355,Lumberyard IPA,American IPA,158,12.0\n1238,0.057999999999999996,,125,Lumberyard Red Ale,American Amber / Red Ale,158,12.0\n1239,0.05,,962,Mac's Highlander Pale Ale (2000),American Pale Ale (APA),485,12.0\n1240,0.051,32.0,961,Mac's Scottish Style Amber Ale (2000),American Amber / Red Ale,485,12.0\n1241,0.05,,1475,Macon Progress Ale,American Pale Ale (APA),400,12.0\n1242,0.055,,1008,Macon History Ale,American Brown Ale,400,12.0\n1243,0.099,,2454,Galaxy High,American Double / Imperial IPA,91,12.0\n1244,0.043,18.0,2209,Sol Drifter,American Blonde Ale,91,12.0\n1245,0.085,,2133,Thunder Snow,Winter Warmer,91,12.0\n1246,0.079,18.0,1994,The Great Pumpcan,Fruit / Vegetable Beer,91,16.0\n1247,0.047,11.0,1816,LIFT,Kölsch,91,12.0\n1248,0.05,40.0,1815,SPRYE,American Pale Ale (APA),91,12.0\n1249,0.069,70.0,1126,Psychopathy,American IPA,91,12.0\n1250,0.07,32.0,1125,Gnarly Brown,American Brown Ale,91,12.0\n1251,0.06,30.0,1124,Happy Amber,American Amber / Red Ale,91,12.0\n1252,0.051,20.0,1813,#9,Fruit / Vegetable Beer,303,16.0\n1253,0.055,13.0,1113,Elder Betty,Hefeweizen,303,12.0\n1254,0.051,20.0,360,#9,Fruit / Vegetable Beer,303,12.0\n1255,0.042,,511,High Country Pilsner (Current),German Pilsener,534,12.0\n1256,0.065,,75,Epic IPA,American IPA,534,12.0\n1257,0.042,,74,Golden Trout Pilsner,German Pilsener,534,12.0\n1258,0.045,,73,Real McCoy Amber Ale (Current),American Amber / Red Ale,534,12.0\n1259,0.07200000000000001,,1628,Festivus (1),Winter Warmer,356,12.0\n1260,0.067,,1626,Manayunk Oktoberfest,Märzen / Oktoberfest,356,12.0\n1261,0.045,21.0,1625,Belgian Style Session Ale,Belgian Pale Ale,356,12.0\n1262,0.055,,1624,Manayunk IPA,American IPA,356,12.0\n1263,0.055,,1600,Yunkin' Punkin',Pumpkin Ale,356,12.0\n1264,0.05,18.0,1484,Summer Paradise,American Pale Wheat Ale,356,12.0\n1265,0.09,30.0,1356,Monk from the 'Yunk,Tripel,356,12.0\n1266,0.06,14.0,1355,Schuylkill Punch,Fruit / Vegetable Beer,356,12.0\n1267,0.085,85.0,1334,Dreamin' Double IPA,American Double / Imperial IPA,356,12.0\n1268,0.099,93.0,1674,Chaotic Double IPA,American Double / Imperial IPA,346,12.0\n1269,0.08,88.0,1673,Manzanita IPA,American IPA,346,12.0\n1270,0.06,25.0,1672,Riverwalk Blonde Ale,American Blonde Ale,346,12.0\n1271,0.095,49.0,1671,Gillespie Brown Ale,American Brown Ale,346,12.0\n1272,0.066,44.0,1670,Manzanita Pale Ale,American Pale Ale (APA),346,12.0\n1273,0.047,,1262,Marble Pilsner,German Pilsener,443,12.0\n1274,0.062,,845,Marble India Pale Ale,American IPA,443,12.0\n1275,0.07200000000000001,,1783,Toughcats IPA,American IPA,317,16.0\n1276,0.05,,1717,Tug Pale Ale,American Pale Ale (APA),317,16.0\n1277,0.099,,1716,Sexy Chaos,Russian Imperial Stout,317,16.0\n1278,0.063,,1516,Ace Hole American Pale Ale,American Pale Ale (APA),317,16.0\n1279,0.09699999999999999,,725,Cant Dog Imperial Pale Ale,American Double / Imperial IPA,317,16.0\n1280,0.05,20.0,2308,River House,Saison / Farmhouse Ale,161,16.0\n1281,0.065,47.0,2268,Pretzel Stout,American Stout,161,16.0\n1282,0.05,35.0,2197,Rubberneck Red,American Amber / Red Ale,161,16.0\n1283,0.08,,2120,The Imperial Texan,American Double / Imperial IPA,161,16.0\n1284,0.08,,1234,The Imperial Texan,American Double / Imperial IPA,161,12.0\n1285,0.05,,1233,Day Break 4-Grain Breakfast Beer,Rye Beer,161,16.0\n1286,0.05,,1232,River House Saison,Saison / Farmhouse Ale,161,12.0\n1287,0.065,,1231,There Will Be Stout,American Stout,161,12.0\n1288,0.065,60.0,1831,Our Legacy IPA,American IPA,299,12.0\n1289,0.042,,1359,Saranac Shandy,Shandy,299,12.0\n1290,0.065,60.0,1135,Our Legacy IPA,American IPA,299,16.0\n1291,0.051,,960,Saranac Golden Pilsener (2003),German Pilsener,299,12.0\n1292,0.045,,959,Saranac Adirondack Light (2002),Light Lager,299,12.0\n1293,0.045,,958,DAX Light (1998),Light Lager,299,12.0\n1294,0.048,,957,Saranac Traditional Lager (2000),American Pale Lager,299,12.0\n1295,0.047,,956,Pomegranate Wheat (2008),Fruit / Vegetable Beer,299,12.0\n1296,0.05,12.0,773,Blueberry Blonde Ale,American Blonde Ale,299,12.0\n1297,0.06,,686,Saranac White IPA,American IPA,299,12.0\n1298,0.047,,453,Saranac Summer Ale (2011),American Pale Wheat Ale,299,12.0\n1299,0.055,,150,Saranac Pale Ale (12 oz.),English Pale Ale,299,12.0\n1300,0.055,,133,Saranac Pale Ale (16 oz.),English Pale Ale,299,16.0\n1301,0.051,20.0,1578,Lahaina Town Brown,American Brown Ale,375,12.0\n1302,0.055,,1429,Pau Hana Pilsner,Czech Pilsener,375,12.0\n1303,0.05,,1271,Lemongrass Saison,Saison / Farmhouse Ale,375,12.0\n1304,0.07,,713,Aloha B’ak’tun,Belgian Strong Dark Ale,375,12.0\n1305,0.08199999999999999,,712,Liquid Breadfruit,Fruit / Vegetable Beer,375,12.0\n1306,0.06,24.0,690,Sobrehumano Palena'ole,American Amber / Red Ale,375,12.0\n1307,0.05,12.0,547,La Perouse White,Witbier,375,12.0\n1308,0.068,68.0,435,Flyin' HI.P.Hay,American IPA,375,12.0\n1309,0.055,15.0,313,Mana Wheat,American Pale Wheat Ale,375,12.0\n1310,0.045,18.0,33,Bikini Blonde Lager,Munich Helles Lager,375,12.0\n1311,0.057,30.0,32,CoCoNut Porter,American Porter,375,12.0\n1312,0.062,65.0,31,Big Swell IPA,American IPA,375,12.0\n1313,0.037000000000000005,34.0,1237,Pit Stop Chocolate Porter,American Porter,448,12.0\n1314,0.037000000000000005,21.0,1236,Pace Setter Belgian Style Wit,Witbier,448,12.0\n1315,0.037000000000000005,53.0,1047,Back in the Saddle Rye Pale Ale,American Pale Ale (APA),448,12.0\n1316,0.069,,1986,Bushwhacker Cider,Cider,254,16.0\n1317,0.069,,1985,Weim-R-Iner,Cider,254,16.0\n1318,0.069,,1984,Cherry Bomb,Cider,254,16.0\n1319,0.07200000000000001,75.0,2186,Tsunami IPA,American IPA,203,19.2\n1320,0.07200000000000001,75.0,2185,Tsunami IPA,American IPA,203,12.0\n1321,0.042,22.0,2184,Humpback Blonde Ale,American Blonde Ale,203,12.0\n1322,0.052000000000000005,27.0,2178,Hawaiian Crow Porter,American Porter,203,12.0\n1323,0.052000000000000005,23.0,2177,Volcano Red Ale,American Amber / Red Ale,203,12.0\n1324,0.054000000000000006,42.0,2176,Mauna Kea Pale Ale,American Pale Ale (APA),203,12.0\n1325,0.053,11.0,1508,Shark Bait,Fruit / Vegetable Beer,393,12.0\n1326,0.053,30.0,1507,Gator Tail Brown Ale,American Brown Ale,393,12.0\n1327,0.071,62.0,1506,Miami Vice IPA,American IPA,393,12.0\n1328,0.053,16.0,1325,Big Rod Coconut Ale,American Blonde Ale,393,12.0\n1329,0.055999999999999994,,174,Mickey Finn's Amber Ale,American Amber / Red Ale,552,12.0\n1330,0.063,61.0,2093,Pleasure Town,American IPA,223,12.0\n1331,0.063,61.0,1814,Pleasure Town IPA,American IPA,223,12.0\n1332,0.048,12.0,587,Snowshoe White Ale,Witbier,223,12.0\n1333,0.05,24.0,586,Kodiak Brown Ale,American Brown Ale,223,12.0\n1334,0.057,70.0,434,Sockeye Red IPA,American IPA,223,12.0\n1335,0.08,100.0,2668,Habitus (2014),American Double / Imperial IPA,3,16.0\n1336,0.075,85.0,2667,Solis,American IPA,3,16.0\n1337,0.06,24.0,2666,Jucundus,Wheat Ale,3,16.0\n1338,0.08,100.0,2664,Habitus,American Double / Imperial IPA,3,16.0\n1339,0.063,30.0,2663,Grazias,Cream Ale,3,16.0\n1340,0.057999999999999996,28.0,2662,Claritas,Kölsch,3,16.0\n1341,0.083,,2535,Vinyl Frontier,American Double / Imperial IPA,65,24.0\n1342,0.08,,2534,Disco Superfly,American IPA,65,24.0\n1343,0.075,,2533,Misty Mountain Hop,American IPA,65,24.0\n1344,0.075,,2532,One-Hit Wonderful,Belgian IPA,65,24.0\n1345,0.065,,2531,En Parfaite Harmonie,Saison / Farmhouse Ale,65,24.0\n1346,0.043,8.0,2530,Daft Funk,Berliner Weissbier,65,24.0\n1347,0.075,,2529,Love In An Ellavator,American IPA,65,24.0\n1348,0.053,,2528,Spin Doctor,American Pale Ale (APA),65,24.0\n1349,0.05,,1612,Keeper (Current),American Pilsner,363,12.0\n1350,0.068,,1611,Better Half,American IPA,363,12.0\n1351,0.048,,1273,SNO White Ale,Witbier,440,16.0\n1352,0.048,,365,BRIK Irish Red Ale,Irish Red Ale,440,16.0\n1353,,,273,AXL Pale Ale,American Pale Ale (APA),440,16.0\n1354,0.087,80.0,1884,Hop Freak,American Double / Imperial IPA,284,16.0\n1355,0.051,24.0,1272,Louie's Demise Amber Ale,American Amber / Red Ale,284,16.0\n1356,0.075,51.0,1080,Hop Happy,American IPA,284,16.0\n1357,0.065,20.0,932,Booyah Farmhouse Ale,Saison / Farmhouse Ale,284,16.0\n1358,0.092,,776,O-Gii,Witbier,284,16.0\n1359,0.048,18.0,172,Flaming Damsel Lager (2010),Vienna Lager,284,16.0\n1360,0.051,24.0,171,Louie’s Demise Immort-Ale (2010),American Amber / Red Ale,284,16.0\n1361,0.099,,2361,Axe Head Malt Liquor,American Malt Liquor,134,24.0\n1362,0.054000000000000006,,2359,Huber Bock (2014),Bock,134,16.0\n1363,0.04,,2358,Minhas Light (2012),Light Lager,134,12.0\n1364,0.05,,2282,Huber,American Pale Lager,134,12.0\n1365,0.062,,2281,Clear Creek Ice,American Pale Lager,134,16.0\n1366,0.062,,2280,Clear Creek Ice,American Pale Lager,134,12.0\n1367,0.055,,2279,Mountain Crest,American Pale Lager,134,16.0\n1368,0.055,,2278,Mountain Crest,American Pale Lager,134,12.0\n1369,0.055,,2277,Mountain Creek (2013),American Pale Lager,134,12.0\n1370,0.05,,2276,Boxer,American Adjunct Lager,134,24.0\n1371,0.042,,2275,Boxer Light,Light Lager,134,12.0\n1372,0.055,,2274,Boxer Ice,American Adjunct Lager,134,12.0\n1373,0.05,,2273,Boxer,American Adjunct Lager,134,12.0\n1374,0.05,,2442,Cortez Gold,Belgian Pale Ale,98,32.0\n1375,0.068,66.0,2441,Mission IPA,American IPA,98,32.0\n1376,0.048,44.0,1460,El Conquistador Extra Pale Ale,American Pale Ale (APA),98,32.0\n1377,0.092,75.0,1459,Shipwrecked Double IPA,American Double / Imperial IPA,98,32.0\n1378,0.04,,1476,Squeaky Bike Nut Brown Ale,American Brown Ale,399,16.0\n1379,0.04,,902,Dead Horse Amber,American Pale Wheat Ale,399,16.0\n1380,0.04,,645,Rocket Bike American Lager,California Common / Steam Beer,399,16.0\n1381,0.04,,644,Johnny's American IPA,American IPA,399,16.0\n1382,0.055,,337,Boneshaker Brown Ale,English Brown Ale,547,24.0\n1383,0.055999999999999994,,336,Iron Mike Pale Ale,American Pale Ale (APA),547,24.0\n1384,0.042,,2236,Monkadelic,American Pale Ale (APA),189,12.0\n1385,0.075,85.0,2159,City of the Sun,American IPA,209,16.0\n1386,0.068,75.0,2157,Booming Rollers,American IPA,209,16.0\n1387,0.052000000000000005,50.0,2156,Oneida,American Pale Ale (APA),209,16.0\n1388,0.067,75.0,2154,Aurora ,American Amber / Red Ale,209,16.0\n1389,0.055,30.0,1495,Lomaland,Saison / Farmhouse Ale,209,16.0\n1390,0.047,46.0,1494,Fortunate Islands,American Pale Wheat Ale,209,16.0\n1391,0.057999999999999996,40.0,1493,Black House,American Stout,209,16.0\n1392,0.065,115.0,1492,Blazing World,American Amber / Red Ale,209,16.0\n1393,0.05,,327,Wapiti Amber Ale,American Amber / Red Ale,549,12.0\n1394,0.054000000000000006,,719,Sweet Georgia Brown,American Brown Ale,514,16.0\n1395,0.087,,718,Rich Man's IIPA,American Double / Imperial IPA,514,16.0\n1396,0.057999999999999996,,717,Monkey Paw Oatmeal Pale Ale,American Pale Ale (APA),514,16.0\n1397,0.055999999999999994,28.0,1907,Montauk Summer Ale,American Blonde Ale,276,12.0\n1398,0.06,49.0,1906,Driftwood Ale,Extra Special / Strong Bitter (ESB),276,12.0\n1399,0.055999999999999994,18.0,1756,When Helles Freezes Over,Munich Helles Lager,326,12.0\n1400,0.049,24.0,1617,Morgan Street Oktoberfest,Märzen / Oktoberfest,326,12.0\n1401,0.047,14.0,1052,Honey Wheat,American Pale Wheat Ale,326,12.0\n1402,0.046,24.0,1051,Black Bear Dark Lager,Schwarzbier,326,12.0\n1403,0.05,35.0,1046,Golden Pilsner,German Pilsener,326,12.0\n1404,0.052000000000000005,21.0,2413,Cali Creamin',Cream Ale,111,12.0\n1405,0.05,,419,Second Wind Pale Ale,American Pale Ale (APA),540,12.0\n1406,0.05,,408,Sunny Haze,Hefeweizen,540,12.0\n1407,0.052000000000000005,21.0,2237,Towhead,American Blonde Ale,188,12.0\n1408,0.07,70.0,2208,Lil' Helper,American IPA,188,12.0\n1409,0.08199999999999999,,1952,Train Wreck,American Amber / Red Ale,260,16.0\n1410,0.085,,768,Full Moon Belgian White Ale,Witbier,507,12.0\n1411,0.07200000000000001,,625,Desert Magic IPA,American IPA,507,12.0\n1412,0.042,,326,Up River Light,Light Lager,507,12.0\n1413,0.085,,132,Full Moon Belgian White Ale (2007),Witbier,507,12.0\n1414,0.055,,131,Dry Heat Hefeweizen (2006),Hefeweizen,507,12.0\n1415,0.05,,1598,Mustang Sixty-Six,American Amber / Red Lager,366,12.0\n1416,0.04,,862,Mustang '33,American Pale Lager,366,12.0\n1417,0.04,,699,Session '33 (2011),American Pale Lager,366,12.0\n1418,0.053,10.0,421,Mustang Golden Ale,American Blonde Ale,366,12.0\n1419,0.053,14.0,420,Washita Wheat,American Pale Wheat Ale,366,12.0\n1420,0.037000000000000005,10.0,2345,Gansett Light,Light Lager,143,16.0\n1421,0.052000000000000005,30.0,2224,Bohemian Pils,American Pilsner,143,16.0\n1422,0.053,30.0,1775,Autocrat Coffee Milk Stout,Milk / Sweet Stout,143,16.0\n1423,0.086,35.0,1291,Narragansett Bohemian Pilsner,German Pilsener,143,16.0\n1424,0.042,24.0,1093,Narragansett Summer Ale,American Pale Wheat Ale,143,12.0\n1425,0.05,22.0,580,Narragansett Cream Ale,Cream Ale,143,16.0\n1426,0.042,24.0,403,Narragansett Summer Ale,American Pale Wheat Ale,143,16.0\n1427,0.07,22.0,316,Narragansett Porter,American Porter,143,16.0\n1428,0.065,32.0,315,Narragansett Bock,Bock,143,16.0\n1429,0.055,15.0,314,Narragansett Fest Lager,Märzen / Oktoberfest,143,16.0\n1430,0.053,,1537,Undun Blonde Ale,American Blonde Ale,387,16.0\n1431,0.07400000000000001,,1536,CuDa Cascadian Dark Ale,American Black Ale,387,16.0\n1432,0.085,86.0,1265,Old Grogham Imperial India Pale Ale,American Double / Imperial IPA,387,16.0\n1433,0.085,86.0,747,Old Grogham Imperial India Pale Ale (2012),American Double / Imperial IPA,387,16.0\n1434,0.07400000000000001,,746,CuDa Cascadian Dark Ale (2012),American Black Ale,387,16.0\n1435,0.053,,654,Undun Blonde Ale (2012),American Blonde Ale,387,16.0\n1436,0.061,11.0,1705,Wick For Brains,Pumpkin Ale,337,12.0\n1437,0.065,65.0,1148,Nebraska India Pale Ale,American IPA,337,12.0\n1438,0.048,10.0,1147,EOS Hefeweizen,Hefeweizen,337,12.0\n1439,0.048,15.0,1146,Brunette Nut Brown Ale,English Brown Ale,337,12.0\n1440,0.057,29.0,1145,Cardinal Pale Ale,American Pale Ale (APA),337,12.0\n1441,0.066,,1758,County Line IPA,American IPA,325,12.0\n1442,0.048,,1757,Trauger Pilsner,German Pilsener,325,12.0\n1443,0.045,40.0,2475,Slow Ride,American IPA,82,12.0\n1444,0.065,70.0,2230,Ranger IPA,American IPA,82,12.0\n1445,0.05,29.0,1987,Shift,American Pale Lager,82,12.0\n1446,0.055999999999999994,21.0,1978,1554 Black Lager,Euro Dark Lager,82,12.0\n1447,0.048,,1975,Blue Paddle,Czech Pilsener,82,12.0\n1448,0.055,,1737,California Route,American Amber / Red Lager,82,12.0\n1449,0.052000000000000005,,1707,Snapshot,American Pale Wheat Ale,82,16.0\n1450,0.048,,1690,Sunshine Wheat Beer,American Pale Wheat Ale,82,12.0\n1451,0.052000000000000005,18.0,1586,Fat Tire Amber Ale,American Amber / Red Ale,82,12.0\n1452,0.05,29.0,952,Shift (1),American Pale Lager,82,12.0\n1453,0.052000000000000005,18.0,748,Fat Tire Amber Ale (2011),American Amber / Red Ale,82,12.0\n1454,0.05,29.0,578,Shift,American Pale Lager,82,16.0\n1455,0.065,70.0,564,Ranger IPA,American IPA,82,16.0\n1456,0.052000000000000005,18.0,563,Fat Tire Amber Ale,American Amber / Red Ale,82,16.0\n1457,0.065,70.0,115,Ranger IPA (Current),American IPA,82,12.0\n1458,0.048,,72,Sunshine Wheat Beer (2009),American Pale Wheat Ale,82,12.0\n1459,0.052000000000000005,18.0,71,Fat Tire Amber Ale (2008),American Amber / Red Ale,82,12.0\n1460,0.034,6.0,1417,Weiss Trash Culture,Berliner Weissbier,410,12.0\n1461,0.062,,885,Sea Hag IPA,American IPA,410,12.0\n1462,0.05,,884,Elm City Pilsner,American Pilsner,410,12.0\n1463,0.05,,757,Atlantic Amber Ale (2004),American Amber / Red Ale,410,12.0\n1464,0.09,,568,668 Neighbor of the Beast12 oz.,Belgian Pale Ale,410,12.0\n1465,0.08800000000000001,85.0,320,Gandhi-Bot Double IPA (12 oz.),American Double / Imperial IPA,410,12.0\n1466,0.09,,43,668 Neighbor of the Beast (16 oz.) (2010),Belgian Pale Ale,410,16.0\n1467,0.08800000000000001,85.0,42,Gandhi-Bot Double IPA (16 oz.) (2010),American Double / Imperial IPA,410,16.0\n1468,0.05,,41,Elm City Lager (2007),American Pilsner,410,12.0\n1469,0.05,,40,Atlantic Amber Ale (2007),American Amber / Red Ale,410,12.0\n1470,0.062,,39,Sea Hag IPA (Current),American IPA,410,12.0\n1471,0.05,,2272,Rebirth Pale Ale,American Pale Ale (APA),174,12.0\n1472,0.068,,1582,Irish Channel Stout,American Stout,174,16.0\n1473,0.08800000000000001,,1114,MechaHopzilla,American Double / Imperial IPA,174,16.0\n1474,0.065,,486,Hopitoulas IPA,American IPA,174,16.0\n1475,0.039,,485,NOLA Brown Ale,English Dark Mild Ale,174,12.0\n1476,0.049,,484,NOLA Blonde Ale,American Blonde Ale,174,12.0\n1477,0.055999999999999994,20.0,2043,Skylight,Dunkelweizen,241,12.0\n1478,0.055999999999999994,30.0,2042,Kadigan,American Blonde Ale,241,12.0\n1479,0.052000000000000005,50.0,2041,Dammit Jim!,American Amber / Red Ale,241,12.0\n1480,0.054000000000000006,,646,Nut Brown Ale,English Brown Ale,518,12.0\n1481,0.046,,165,White Ale,Witbier,518,12.0\n1482,0.042,35.0,2050,Cream Ale,Cream Ale,238,12.0\n1483,0.07200000000000001,,915,Green Head IPA,American IPA,495,12.0\n1484,0.054000000000000006,,914,Plum Island Belgian White,Witbier,495,12.0\n1485,0.055,,913,Newburyport Pale Ale,American Pale Ale (APA),495,12.0\n1486,0.055,,1811,Marblehead,American Amber / Red Ale,305,16.0\n1487,0.051,31.0,1622,Jam Session,American Pale Ale (APA),359,16.0\n1488,0.07200000000000001,80.0,1621,Hop Drop 'N Roll IPA,American IPA,359,16.0\n1489,0.06,,1307,Paleo IPA,English India Pale Ale (IPA),431,12.0\n1490,0.061,,1306,Buck Snort Stout,American Stout,431,12.0\n1491,0.055,,1305,Station 33 Firehouse Red,Irish Red Ale,431,12.0\n1492,0.045,,1304,Slimy Pebble Pils,German Pilsener,431,12.0\n1493,0.045,50.0,2692,Get Together,American IPA,0,16.0\n1494,0.049,26.0,2691,Maggie's Leap,Milk / Sweet Stout,0,16.0\n1495,0.048,19.0,2690,Wall's End,English Brown Ale,0,16.0\n1496,0.06,38.0,2689,Pumpion,Pumpkin Ale,0,16.0\n1497,0.06,25.0,2688,Stronghold,American Porter,0,16.0\n1498,0.055999999999999994,47.0,2687,Parapet ESB,Extra Special / Strong Bitter (ESB),0,16.0\n1499,0.069,,1854,Blue Boots IPA,American IPA,293,16.0\n1500,0.063,,1227,Hoppy Bitch IPA,American IPA,450,16.0\n1501,0.063,42.0,1226,Three Skulls Ale Pale Ale,American Pale Ale (APA),450,16.0\n1502,0.045,,541,Walter's Premium Pilsener Beer,German Pilsener,529,12.0\n1503,0.045,,109,Floppin' Crappie,American Pale Wheat Ale,529,12.0\n1504,0.043,,1917,Left of the Dial IPA,American IPA,271,12.0\n1505,0.04,,1190,Notch Session Pils,Czech Pilsener,271,12.0\n1506,0.055,,1264,O'Fallon Pumpkin Beer,Pumpkin Ale,442,12.0\n1507,0.061,66.0,1258,5 Day IPA,American IPA,442,12.0\n1508,0.051,7.0,128,O'Fallon Wheach,Fruit / Vegetable Beer,442,12.0\n1509,0.067,70.0,2331,Watershed IPA,American IPA,150,12.0\n1510,0.054000000000000006,24.0,1669,Oakshire Amber Ale,American Amber / Red Ale,150,12.0\n1511,0.057999999999999996,27.0,1668,Overcast Espresso Stout,American Stout,150,12.0\n1512,0.067,70.0,999,Watershed IPA (2013),American IPA,150,12.0\n1513,0.08199999999999999,25.0,2247,Lake Monster,Baltic Porter,184,16.0\n1514,0.049,27.0,2071,London Homesick Ale,English Bitter,184,12.0\n1515,0.048,35.0,2070,Luchesa Lager,Keller Bier / Zwickel Bier,184,12.0\n1516,0.048,35.0,2069,Slow Ride,American Pale Ale (APA),184,12.0\n1517,0.047,,2192,Occidental Hefeweizen,American Pale Wheat Ale,200,16.0\n1518,0.051,,1130,Occidental Dunkel,Dunkelweizen,200,16.0\n1519,0.05,,1129,Occidental Altbier,Altbier,200,16.0\n1520,0.045,,1081,Occidental Kölsch,Kölsch,200,16.0\n1521,0.092,72.0,2335,Perpetual Darkness,Belgian Strong Dark Ale,148,12.0\n1522,0.087,29.0,2334,Clan Warrior,Scotch Ale / Wee Heavy,148,12.0\n1523,0.054000000000000006,36.0,2333,Psycho Penguin Vanilla Porter,American Porter,148,12.0\n1524,0.047,,1721,Heliocentric Hefeweizen,Hefeweizen,148,12.0\n1525,0.051,,1720,Ghose Drifter Pale Ale,American Pale Ale (APA),148,12.0\n1526,0.051,,1431,Ghost Rider Pale Ale (2013),American Pale Ale (APA),148,12.0\n1527,0.047,,1430,Helios Hefeweizen (2013),Hefeweizen,148,12.0\n1528,0.095,19.0,1059,The Hole in Hadrian's Wall,Scottish Ale,471,16.0\n1529,0.065,26.0,1058,33 Select Brown Ale,American Brown Ale,471,16.0\n1530,0.06,29.0,603,Midwest Charm Farmhouse Ale,Saison / Farmhouse Ale,471,16.0\n1531,0.05,45.0,602,Boji Blue Pale Ale,American Pale Ale (APA),471,16.0\n1532,0.057,26.0,601,Winter Games Select #32 Stout,American Stout,471,16.0\n1533,0.05,23.0,600,Boji Beach Golden Rye Ale,Rye Beer,471,16.0\n1534,0.06,,1828,Hopsmith Pale Lager,American Pale Lager,301,16.0\n1535,0.065,65.0,1487,Falling Down Brown Ale,American Brown Ale,301,16.0\n1536,0.068,,1486,Resolution Rye Stout,American Stout,301,16.0\n1537,0.055,,1485,Plowshare Porter,American Porter,301,16.0\n1538,0.046,20.0,1394,Old Forge Pumpkin Ale,Pumpkin Ale,301,16.0\n1539,0.045,,1381,Endless Sun Ale,American Pale Wheat Ale,301,16.0\n1540,0.065,,900,Celestial Blonde Ale,American Blonde Ale,301,16.0\n1541,0.075,,891,Overbite IPA,American IPA,301,16.0\n1542,0.055,,509,T-Rail Pale Ale,American Pale Ale (APA),301,16.0\n1543,0.048,,508,Endless Summer Ale (2011),American Pale Wheat Ale,301,16.0\n1544,0.053,,1530,Clem's Gold,American Pale Lager,390,16.0\n1545,0.055,,1529,Lizzy's Red,American Amber / Red Lager,390,16.0\n1546,0.067,,1528,Orlison India Pale Lager,American Pale Lager,390,16.0\n1547,0.042,,1527,Brünette,Euro Dark Lager,390,16.0\n1548,0.040999999999999995,,1526,Havanüther,Light Lager,390,16.0\n1549,0.065,,2113,Lyric Ale,Saison / Farmhouse Ale,216,12.0\n1550,0.053,,2112,Atalanta,Saison / Farmhouse Ale,216,12.0\n1551,0.049,35.0,2302,Pinner Throwback IPA,American IPA,166,12.0\n1552,0.052000000000000005,,1883,Centennial State Pale Ale,American Pale Ale (APA),166,19.2\n1553,0.08,,1859,Old Chub NITRO,Scotch Ale / Wee Heavy,166,16.0\n1554,,,1796,The CROWLER™,,166,32.0\n1555,,,1790,CAN'D AID Foundation,,166,12.0\n1556,,,1752,Icey.P.A.,American IPA,166,16.0\n1557,0.05,,1751,One Nut Brown,English Brown Ale,166,12.0\n1558,,,1750,Birth IPA,American IPA,166,12.0\n1559,0.065,65.0,1444,Dale's Pale Ale,American Pale Ale (APA),166,12.0\n1560,0.065,65.0,1252,Dale's Pale Ale,American Pale Ale (APA),166,12.0\n1561,0.053,35.0,1167,Mama's Little Yella Pils,Czech Pilsener,166,19.2\n1562,0.085,,993,oSKAr the G'Rauch,American IPA,166,19.2\n1563,0.085,,992,oSKAr the G'Rauch,American IPA,166,16.0\n1564,0.065,65.0,955,Dale's Pale Ale,American Pale Ale (APA),166,19.2\n1565,0.07,,933,The Deuce,American Brown Ale,166,16.0\n1566,0.065,65.0,892,Dale's Pale Ale (10 Year Anniversary),American Pale Ale (APA),166,12.0\n1567,0.065,65.0,828,Dale's Pale Ale (2012),American Pale Ale (APA),166,12.0\n1568,0.087,85.0,806,Gordon Imperial Red (2010),American Double / Imperial IPA,166,12.0\n1569,0.065,65.0,755,Dale's Pale Ale (2011),American Pale Ale (APA),166,12.0\n1570,0.065,65.0,754,Dale's Pale Ale (2010),American Pale Ale (APA),166,12.0\n1571,0.087,85.0,726,G'KNIGHT (16 oz.),American Double / Imperial IPA,166,16.0\n1572,0.09,,720,15th Anniversary Abbey Ale (2012),Belgian Dark Ale,166,16.0\n1573,0.08,,661,Chaka,Belgian Strong Pale Ale,166,16.0\n1574,0.08,70.0,585,HGH (Home Grown Hops): Part Duh,American Strong Ale,166,12.0\n1575,0.08,,565,Deviant Dale's IPA,American Double / Imperial IPA,166,16.0\n1576,0.09,60.0,391,One Hit Wonder,American Double / Imperial IPA,166,12.0\n1577,0.087,85.0,388,G'KNIGHT (12 oz.),American Double / Imperial IPA,166,12.0\n1578,0.099,98.0,8,Ten Fidy Imperial Stout,Russian Imperial Stout,166,12.0\n1579,0.053,35.0,7,Mama's Little Yella Pils,Czech Pilsener,166,12.0\n1580,0.099,100.0,6,GUBNA Imperial IPA,American Double / Imperial IPA,166,12.0\n1581,0.08,35.0,5,Old Chub,Scottish Ale,166,12.0\n1582,0.087,85.0,4,Gordon Ale (2009),American Double / Imperial IPA,166,12.0\n1583,0.065,65.0,1,Dale's Pale Ale,American Pale Ale (APA),166,12.0\n1584,0.092,85.0,805,Gordon (2005),American Double / Imperial IPA,503,12.0\n1585,0.095,98.0,804,Ten Fidy Imperial Stout (2008),Russian Imperial Stout,503,12.0\n1586,0.099,98.0,803,Ten Fidy Imperial Stout (2007),Russian Imperial Stout,503,12.0\n1587,0.08,35.0,787,Old Chub (2008),Scottish Ale,503,12.0\n1588,0.08,35.0,786,Old Chub (2004),Scottish Ale,503,12.0\n1589,0.08,35.0,785,Old Chub (2003),Scottish Ale,503,12.0\n1590,0.065,65.0,745,Dale's Pale Ale (2008),American Pale Ale (APA),503,12.0\n1591,0.065,65.0,744,Dale's Pale Ale (2006),American Pale Ale (APA),503,12.0\n1592,0.065,65.0,743,Dale's Pale Ale (2004),American Pale Ale (APA),503,12.0\n1593,0.065,65.0,742,Dale's Pale Ale (2003),American Pale Ale (APA),503,12.0\n1594,0.065,65.0,741,Dale's Pale Ale (2002),American Pale Ale (APA),503,12.0\n1595,0.052000000000000005,,734,Leroy (2005),American Brown Ale,503,12.0\n1596,0.087,60.0,733,Gordon Beer (2006),American Double / Imperial IPA,503,12.0\n1597,0.087,85.0,1533,G'KNIGHT,American Double / Imperial IPA,389,12.0\n1598,0.099,98.0,1532,Ten Fidy,Russian Imperial Stout,389,12.0\n1599,0.08,85.0,1328,Deviant Dale's IPA,American Double / Imperial IPA,389,16.0\n1600,0.08,35.0,1175,Old Chub,Scottish Ale,389,12.0\n1601,0.065,65.0,1166,Dale's Pale Ale,American Pale Ale (APA),389,19.2\n1602,0.065,65.0,1065,Dale's Pale Ale,American Pale Ale (APA),389,12.0\n1603,0.055,45.0,1908,Fresh Slice White IPA,American White IPA,275,12.0\n1604,0.055,55.0,1946,Overgrown American Pale Ale,American Pale Ale (APA),261,12.0\n1605,0.04,39.0,1961,Ozark American Pale Ale,American Pale Ale (APA),259,12.0\n1606,0.048,,1684,Hula Hoppie Session IPA,American IPA,341,12.0\n1607,0.053,,927,Dirty Hippie Dark Wheat,American Dark Wheat Ale,341,12.0\n1608,0.052000000000000005,23.0,1268,Rustic Red,Irish Red Ale,441,16.0\n1609,0.053,48.0,697,Stimulator Pale Ale,American Pale Ale (APA),441,16.0\n1610,0.045,22.0,696,Old Town Ale,Kölsch,441,16.0\n1611,0.044000000000000004,28.0,695,Car 21,English Bitter,441,16.0\n1612,0.05,24.0,694,Cache La Porter,American Porter,441,16.0\n1613,0.042,35.0,1805,Rodeo Rye Pale Ale,American Pale Ale (APA),307,12.0\n1614,0.062,65.0,1048,Outlaw IPA,American IPA,307,12.0\n1615,0.044000000000000004,,1043,North Fork Lager,American Pale Lager,307,12.0\n1616,0.048,35.0,890,Payette Pale Ale,American Pale Ale (APA),307,12.0\n1617,0.055,25.0,775,Mutton Buster,American Brown Ale,307,12.0\n1618,0.05,,1087,Side Kick Kölsch,Kölsch,468,12.0\n1619,0.046,,1931,Fresh Cut Pilsner,American Pilsner,266,12.0\n1620,0.05,61.0,1930,Summer Session Ale,American Pale Wheat Ale,266,12.0\n1621,0.04,12.0,2238,Lobo Lito,Light Lager,187,12.0\n1622,0.05,17.0,2144,Robert Earl Keen Honey Pils,American Pilsner,187,12.0\n1623,0.065,77.0,2175,Mound Builder IPA,American IPA,205,12.0\n1624,0.062,62.0,2168,Amazon Princess IPA,American IPA,205,12.0\n1625,0.042,,1956,Farmer's Daughter Wheat,American Pale Wheat Ale,205,12.0\n1626,0.045,,1794,People's Pilsner,German Pilsener,205,12.0\n1627,0.055,10.0,2633,Hotbox Brown,American Brown Ale,13,12.0\n1628,0.048,15.0,2632,Gold,American Blonde Ale,13,12.0\n1629,0.057999999999999996,,2631,Black,American Black Ale,13,12.0\n1630,0.065,65.0,2630,98 Problems (Cuz A Hop Ain't One),American IPA,13,12.0\n1631,0.05,40.0,2629,Veteran’s Pale Ale (VPA),American Pale Ale (APA),13,12.0\n1632,0.05,35.0,2628,Grapefruit IPA,American IPA,13,12.0\n1633,0.051,,1062,Pete's ESP Lager (1998),American Pale Lager,470,12.0\n1634,0.047,,1061,Pete's Wicked Summer Brew (1995),American Pale Wheat Ale,470,12.0\n1635,0.049,,1060,Pete's Wicked Bohemian Pilsner (1997),Czech Pilsener,470,12.0\n1636,,,1056,Pete's Wicked Pale Ale (1997),American Pale Ale (APA),470,12.0\n1637,0.047,,1055,Pete's Wicked Summer Brew (2002),American Pale Wheat Ale,470,12.0\n1638,0.047,,1054,Pete's Wicked Summer Brew (1997),American Pale Wheat Ale,470,12.0\n1639,0.047,,1053,Pete's Wicked Summer Brew (1996),American Pale Wheat Ale,470,12.0\n1640,0.040999999999999995,12.0,2635,Sparkle,American Pale Lager,11,16.0\n1641,0.059000000000000004,25.0,1404,North 45 Amber Ale,American Amber / Red Ale,11,16.0\n1642,0.069,20.0,1403,Horny Monk,Dubbel,11,16.0\n1643,0.067,74.0,1402,Mind's Eye PA,American IPA,11,16.0\n1644,0.061,60.0,2312,Camelback,American IPA,157,12.0\n1645,0.055999999999999994,,1636,Local 5 Pale Ale,American Pale Ale (APA),355,16.0\n1646,0.073,,1518,Devils Head Red Ale,American Amber / Red Ale,355,16.0\n1647,0.07,75.0,1384,Elephant Rock IPA,American IPA,355,12.0\n1648,0.05,,1797,Black Bay Milk Stout,Milk / Sweet Stout,310,12.0\n1649,0.05,,1437,Atom Splitter Pale Ale,American Pale Ale (APA),310,12.0\n1650,0.06,20.0,1791,Hot Date Ale,Chile Beer,314,16.0\n1651,0.07,,1540,Masked Bandit IPA,American Black Ale,314,16.0\n1652,0.06,24.0,1491,Sweet Potato Ale,Fruit / Vegetable Beer,314,16.0\n1653,0.045,18.0,1335,Float Trip Ale,American Blonde Ale,314,16.0\n1654,0.055,25.0,847,Old Tom Porter,American Porter,314,16.0\n1655,0.045,18.0,846,Black Walnut Wheat,American Dark Wheat Ale,314,16.0\n1656,0.055,20.0,521,McKinney Eddy Amber Ale,American Amber / Red Ale,314,16.0\n1657,0.07,70.0,479,Missouri Mule India Pale Ale,American IPA,314,16.0\n1658,0.065,,2559,Blood of the Unicorn,American Amber / Red Ale,52,16.0\n1659,0.069,51.0,1760,GreyBeard™ IPA,American IPA,324,12.0\n1660,0.057,31.0,1759,Pisgah Pale Ale,American Pale Ale (APA),324,12.0\n1661,0.045,,1589,PONTO S.I.P.A.,American IPA,370,16.0\n1662,0.049,,1457,Chronic Ale,American Amber / Red Ale,370,16.0\n1663,0.068,,1191,Swami's India Pale Ale,American IPA,370,16.0\n1664,0.05,,2336,New Cleveland Palesner,American Pilsner,147,12.0\n1665,0.054000000000000006,45.0,2553,Mazzie,American Pale Ale (APA),55,12.0\n1666,0.099,,1909,Big Chuck Barleywine,American Barleywine,274,12.0\n1667,,,335,Ponderosa IPA,American IPA,548,12.0\n1668,,,64,Liquid Amber Ale,American Amber / Red Ale,548,12.0\n1669,0.059000000000000004,14.0,2360,Morning Wood Wheat (Current),American Pale Wheat Ale,135,12.0\n1670,0.069,17.0,1463,Hideout Helles,Munich Helles Lager,135,12.0\n1671,0.06,15.0,1462,Dead Eye Dunkel,Munich Dunkel Lager,135,12.0\n1672,0.057999999999999996,21.0,1461,Peacemaker Pilsner,Czech Pilsener,135,12.0\n1673,0.057,68.0,711,Over the Rail Pale Ale,American Pale Ale (APA),135,12.0\n1674,0.057999999999999996,21.0,188,Pallavicini Pilsner (2009),Czech Pilsener,135,12.0\n1675,0.059000000000000004,14.0,130,Morning Wood Wheat (Current),American Pale Wheat Ale,135,12.0\n1676,0.052000000000000005,18.0,399,Pyramid Hefeweizen (2011),Hefeweizen,544,12.0\n1677,0.052000000000000005,18.0,82,Haywire Hefeweizen (2010),Hefeweizen,544,16.0\n1678,0.045,35.0,2031,Golden Fleece,Belgian Pale Ale,246,12.0\n1679,0.055,30.0,2030,Smoking Mirror,American Porter,246,12.0\n1680,0.046,,2269,Rahr's Blonde,Munich Helles Lager,176,12.0\n1681,0.057999999999999996,60.0,2229,Pride of Texas Pale Ale,American Pale Ale (APA),176,12.0\n1682,0.044000000000000004,5.0,2370,18th Anniversary Gose,Gose,128,12.0\n1683,0.046,25.0,2211,White (2015),Witbier,128,12.0\n1684,0.099,85.0,1861,BLAKKR,American Black Ale,128,12.0\n1685,0.051,21.0,1718,Firemans #4 Blonde Ale (2013),American Blonde Ale,128,12.0\n1686,0.059000000000000004,,1290,The Sword Iron Swan Ale,English Pale Ale,128,12.0\n1687,0.053,52.0,1091,Hans' Pils (2015),German Pilsener,128,12.0\n1688,0.06,50.0,1086,Four Squared (2015),American Blonde Ale,128,12.0\n1689,0.051,21.0,830,Firemans #4 Blonde Ale (2015),American Blonde Ale,128,12.0\n1690,0.07200000000000001,55.0,1021,Watership Brown Ale,American Brown Ale,475,12.0\n1691,0.062,55.0,938,Gangway IPA,American IPA,475,12.0\n1692,0.049,,715,Long Day Lager,Czech Pilsener,475,12.0\n1693,0.051,17.0,2516,Farmer's Daughter Blonde,American Blonde Ale,68,16.0\n1694,0.055,45.0,2515,Pump House IPA,American IPA,68,16.0\n1695,0.07,,2514,Suicide Blonde IPA,Belgian IPA,68,16.0\n1696,0.047,25.0,2513,Vanilla Porter,American Porter,68,16.0\n1697,0.057999999999999996,18.0,2512,Honey Rye,Rye Beer,68,16.0\n1698,0.055,,1467,Happy Cider,Cider,403,16.0\n1699,0.065,44.0,945,Long Hammer IPA,American IPA,487,16.0\n1700,0.065,44.0,583,Long Hammer IPA,American IPA,487,12.0\n1701,0.057999999999999996,27.0,339,Copper Hook (2011),American Amber / Red Ale,487,12.0\n1702,0.08,,1375,Nectar of the Hops,Mead,421,16.0\n1703,0.08,,1374,Sunshine Nectar,Mead,421,16.0\n1704,0.08,,1373,Black Raspberry Nectar,Mead,421,16.0\n1705,0.05,16.0,2087,Blood Orange Wit,Witbier,225,16.0\n1706,0.05,40.0,2414,Consilium,American Pale Ale (APA),110,12.0\n1707,0.09,60.0,1581,Hammer & Sickle,Russian Imperial Stout,110,12.0\n1708,0.07,100.0,1176,Redacted Rye IPA,American IPA,110,16.0\n1709,0.099,100.0,1006,Elevation Triple India Pale Ale,American Double / Imperial IPA,110,12.0\n1710,0.05,25.0,1005,5:00 O'Clock Afternoon Ale,American Blonde Ale,110,16.0\n1711,0.07,100.0,636,Ryeteous Rye IPA (2012),American IPA,110,16.0\n1712,0.064,,1538,Stout Ol' Friend,American Stout,386,16.0\n1713,0.064,,1075,Stout Ol' Friend (2012),American Stout,386,16.0\n1714,,,710,Rye Porter,American Porter,386,16.0\n1715,0.05,,709,Miner's Gold,American Blonde Ale,386,16.0\n1716,0.046,,708,Vienna Lager,Vienna Lager,386,16.0\n1717,0.055999999999999994,,706,Jessie's Garage,American Pale Ale (APA),386,16.0\n1718,0.062,,220,Colorado Red Ale,American Amber / Red Ale,386,12.0\n1719,,,219,Miner's Gold,American Blonde Ale,386,12.0\n1720,0.055,40.0,2576,Fist City,American Pale Ale (APA),44,12.0\n1721,0.068,,1133,A Little Crazy,Belgian Pale Ale,44,12.0\n1722,0.057999999999999996,15.0,609,Rosa Hibiscus Ale,Herbed / Spiced Beer,44,12.0\n1723,0.061,31.0,418,Fistmas Ale,Herbed / Spiced Beer,44,12.0\n1724,0.057,25.0,417,Oktoberfest Revolution,Märzen / Oktoberfest,44,12.0\n1725,0.068,28.0,416,Eugene Porter,American Porter,44,12.0\n1726,0.065,70.0,415,Anti-Hero IPA,American IPA,44,12.0\n1727,0.05,14.0,414,Bottom Up Belgian Wit,Witbier,44,12.0\n1728,0.057,42.0,2452,Hustle,American Amber / Red Ale,93,12.0\n1729,0.055,42.0,2451,Pure Fury,American Pale Ale (APA),93,12.0\n1730,0.06,60.0,2132,Dad,American Amber / Red Ale,93,12.0\n1731,0.057999999999999996,35.0,1993,Panther,American Porter,93,12.0\n1732,0.052000000000000005,21.0,1992,Franz,Märzen / Oktoberfest,93,12.0\n1733,0.043,45.0,1935,Zen,American Pale Ale (APA),93,12.0\n1734,0.07200000000000001,75.0,1852,Truth,American IPA,93,12.0\n1735,0.048,25.0,1851,Cougar,American Blonde Ale,93,12.0\n1736,0.038,,2307,Smooth Operator,Cream Ale,162,16.0\n1737,0.035,,2580,Gose,Gose,42,16.0\n1738,0.043,,1807,Maine Island Trail Ale,American Pale Ale (APA),42,16.0\n1739,0.05,,1180,River North White Ale,Witbier,459,16.0\n1740,0.05,,1179,River North Ale,American Amber / Red Ale,459,16.0\n1741,0.05,55.0,1771,Lil SIPA,American IPA,321,16.0\n1742,0.055,60.0,1654,Hop Bomber Rye Pale Ale,American Pale Ale (APA),321,16.0\n1743,0.05,100.0,2579,Jah Mon,American IPA,43,12.0\n1744,0.062,,2373,Oktoberfest,Märzen / Oktoberfest,43,12.0\n1745,0.08,,2049,Headless Wylie,Pumpkin Ale,43,12.0\n1746,0.05,,2048,Dayman IPA,American IPA,43,12.0\n1747,0.071,,1880,All Aboard! Anniversary Stout,Oatmeal Stout,43,12.0\n1748,0.062,,1879,Hop Lace,American White IPA,43,12.0\n1749,0.048,,1878,OH-PA Session Pale Ale,American Pale Ale (APA),43,12.0\n1750,0.08,,1877,Patrick's Poison,American Amber / Red Ale,43,12.0\n1751,0.081,,1764,Rudolph's Red,American Amber / Red Ale,43,12.0\n1752,0.053,,1103,Babbling Blonde,American Blonde Ale,43,12.0\n1753,0.051,,1102,Maxwell's Scottish Ale,Scottish Ale,43,12.0\n1754,0.061,,1101,Grateful White,Witbier,43,12.0\n1755,0.055,,1100,RT Lager,American Amber / Red Lager,43,12.0\n1756,0.062,,1099,Old Wylie's IPA,American IPA,43,12.0\n1757,0.048,,1098,Hala Kahiki Pineapple Beer,Fruit / Vegetable Beer,43,12.0\n1758,0.045,,1330,Track 1 Amber Lager,American Amber / Red Lager,427,16.0\n1759,0.053,,2074,Pine Knob Pilsner,Czech Pilsener,229,16.0\n1760,,,1724,Cal and Co. Black Cherry Porter,American Porter,229,16.0\n1761,0.055,,1280,Lazy Daze Lager,American Adjunct Lager,229,16.0\n1762,0.059000000000000004,,899,Rochester Red Ale,American Amber / Red Ale,229,16.0\n1763,0.05,,363,Milkshake Stout,Milk / Sweet Stout,229,16.0\n1764,0.07,,158,Cornerstone IPA,American IPA,229,16.0\n1765,0.055,,97,Lazy Daze Lager,American Adjunct Lager,229,12.0\n1766,0.051,,1860,Rogue American Amber Ale,American Amber / Red Ale,289,16.0\n1767,0.076,78.0,1577,12th Round,American Strong Ale,376,16.0\n1768,0.07,80.0,1576,RoughTail IPA,American IPA,376,16.0\n1769,0.08,,1575,Polar Night Stout,American Stout,376,16.0\n1770,0.071,36.0,2304,Sundown,Saison / Farmhouse Ale,164,12.0\n1771,0.099,,2249,Sanctified,Belgian Strong Pale Ale,164,12.0\n1772,0.051,,2053,Fear of a Brett Planet,American Pale Ale (APA),164,12.0\n1773,0.055999999999999994,40.0,1842,Original Slacker Ale,English Brown Ale,164,12.0\n1774,0.07200000000000001,,1841,Alpha Blackback,American Black Ale,164,12.0\n1775,0.063,,1782,Kiss Off IPA,American IPA,164,12.0\n1776,0.045,28.0,1552,Dog Days Summer Ale,Kölsch,164,12.0\n1777,0.055999999999999994,35.0,1479,1881 California Red,American Amber / Red Ale,397,12.0\n1778,0.073,55.0,1478,CAPT Black IPA,American Black Ale,397,12.0\n1779,0.048,42.0,1370,Ruhstaller's Gilt Edge Lager Beer,American Amber / Red Lager,397,12.0\n1780,0.073,55.0,883,CAPT Black IPA,American Black Ale,397,16.0\n1781,0.055999999999999994,35.0,882,1881 California Red Ale,American Amber / Red Ale,397,16.0\n1782,0.05,15.0,1868,Saint Archer White Ale,Witbier,288,12.0\n1783,0.068,66.0,1867,Saint Archer IPA,American IPA,288,12.0\n1784,0.052000000000000005,40.0,1865,Saint Archer Pale Ale,American Pale Ale (APA),288,12.0\n1785,0.048,22.0,1864,Saint Archer Blonde,Kölsch,288,12.0\n1786,0.069,20.0,2599,Sex Panther,American Porter,30,12.0\n1787,0.095,25.0,2073,Winter Warmer (Vault Series),Winter Warmer,30,16.0\n1788,0.091,99.0,2063,Count Hopula (Vault Series),American Double / Imperial IPA,30,16.0\n1789,0.055,,1995,Oktoberfest,Märzen / Oktoberfest,30,12.0\n1790,0.05,15.0,1934,SunSpot Golden Ale,American Blonde Ale,30,12.0\n1791,0.06,,1329,I.W.A. (2011),American Pale Wheat Ale,30,12.0\n1792,0.065,,1299,Supermonk I.P.A.,Belgian IPA,30,12.0\n1793,0.055,20.0,1073,Epicenter Amber Ale,American Amber / Red Ale,30,12.0\n1794,0.05,15.0,1072,SanTan HefeWeizen,Hefeweizen,30,12.0\n1795,0.07,85.0,1071,Hop Shock IPA,American IPA,30,12.0\n1796,0.069,20.0,852,Sex Panther (2014),American Porter,30,12.0\n1797,0.055,45.0,850,Devil’s Ale,American Pale Ale (APA),30,12.0\n1798,0.081,,839,Rail Slide Imperial Spiced Ale,Herbed / Spiced Beer,30,12.0\n1799,0.05,20.0,777,Mr. Pineapple,Fruit / Vegetable Beer,30,12.0\n1800,0.055,45.0,764,American Idiot Ale (2012),American Pale Ale (APA),30,12.0\n1801,0.07,85.0,317,Hop Shock IPA (2010),American IPA,30,12.0\n1802,0.05,15.0,286,SanTan HefeWeizen (2010),Hefeweizen,30,12.0\n1803,0.055,45.0,285,Devil’s Ale (2010),American Pale Ale (APA),30,12.0\n1804,0.055,20.0,124,Epicenter Amber Ale (2010),American Amber / Red Ale,30,12.0\n1805,0.057999999999999996,20.0,1392,Sanitas Saison Ale,Saison / Farmhouse Ale,419,12.0\n1806,0.068,65.0,1391,Sanitas Black IPA,American Black Ale,419,12.0\n1807,0.08900000000000001,88.0,2002,Giant DIPA,American Double / Imperial IPA,252,16.0\n1808,0.054000000000000006,,1683,Dread Brown Ale,American Brown Ale,252,12.0\n1809,0.07,,1362,Casinos IPA,English India Pale Ale (IPA),252,16.0\n1810,0.055,30.0,1519,Saison 88,Saison / Farmhouse Ale,392,12.0\n1811,0.071,95.0,967,Black IPA,American Black Ale,392,12.0\n1812,0.045,,599,Santa Fe Irish Red Ale,Irish Red Ale,392,12.0\n1813,,,307,Santa Fe Oktoberfest,Märzen / Oktoberfest,392,12.0\n1814,0.08,,305,Imperial Java Stout,Russian Imperial Stout,392,12.0\n1815,0.055,,304,Freestyle Pilsner,German Pilsener,392,12.0\n1816,0.066,,217,Happy Camper IPA,American IPA,392,12.0\n1817,0.05,11.0,1477,Oval Beach Blonde Ale,American Blonde Ale,398,16.0\n1818,0.065,,1503,Oak Aged Cider,Cider,394,12.0\n1819,0.065,,1466,Ginger Cider,Cider,394,12.0\n1820,0.065,,1245,Schilling Hard Cider,Cider,394,12.0\n1821,0.05,45.0,1324,Schlafly Yakima Wheat Ale,American Pale Wheat Ale,428,12.0\n1822,0.05,,1323,Schlafly Black Lager,Schwarzbier,428,12.0\n1823,0.045,30.0,1078,Schlafly IPA,American IPA,428,12.0\n1824,0.05,30.0,1077,Schlafly American Brown Ale,American Brown Ale,428,12.0\n1825,0.040999999999999995,16.0,588,Schlafly Hefeweizen,Hefeweizen,428,12.0\n1826,0.045,17.0,53,Schlafly Summer Lager,Munich Helles Lager,428,12.0\n1827,0.047,,815,Sea Dog Wild Blueberry Wheat Ale,Fruit / Vegetable Beer,502,12.0\n1828,0.07400000000000001,60.0,1302,Blur India Pale Ale,American IPA,432,12.0\n1829,0.065,,1416,Dry Cider,Cider,411,16.0\n1830,0.065,,1415,Dry Hard Cider,Cider,411,16.0\n1831,0.07,105.0,918,Frankenlou's IPA,American IPA,494,16.0\n1832,0.07,55.0,917,Becky's Black Cat Porter,American Porter,494,16.0\n1833,0.077,40.0,2250,Seventh Son of a Seventh Son,American Strong Ale,183,16.0\n1834,0.053,20.0,1768,Stone Fort Brown Ale,English Brown Ale,183,16.0\n1835,0.077,40.0,1767,Seventh Son Hopped Red Ale,American Amber / Red Ale,183,16.0\n1836,0.06,53.0,1766,Humulus Nimbus Super Pale Ale,American Pale Ale (APA),183,16.0\n1837,0.07,68.0,1765,Golden Ratio IPA,American IPA,183,16.0\n1838,0.068,,2368,Black Hop IPA,American Black Ale,130,12.0\n1839,0.05,,738,Archer's Ale (2004),English Pale Ale,511,12.0\n1840,0.069,65.0,1539,Monkey Fist IPA,American IPA,385,12.0\n1841,0.051,,975,Shipyard Summer Ale,American Pale Wheat Ale,385,12.0\n1842,0.047,,814,Pumpkinhead Ale,Pumpkin Ale,385,12.0\n1843,0.051,,727,Shipyard Export,American Blonde Ale,385,12.0\n1844,0.052000000000000005,,2474,Nooner,German Pilsener,83,12.0\n1845,0.07200000000000001,65.0,2239,Torpedo,American IPA,83,12.0\n1846,0.06,,1919,Yonder Bock,Maibock / Helles Bock,83,12.0\n1847,0.06,,1918,CANfusion Rye Bock,Rye Beer,83,12.0\n1848,0.055999999999999994,37.0,1905,Sierra Nevada Pale Ale,American Pale Ale (APA),83,16.0\n1849,0.048,26.0,1338,Old Chico Crystal Wheat,American Pale Wheat Ale,83,12.0\n1850,0.05,28.0,1295,Summerfest,Czech Pilsener,83,12.0\n1851,0.07200000000000001,65.0,426,Torpedo,American IPA,83,16.0\n1852,0.055999999999999994,37.0,400,Sierra Nevada Pale Ale,American Pale Ale (APA),83,12.0\n1853,0.069,,2353,Sietsema Red Label,Cider,137,16.0\n1854,0.042,,212,Bear Ass Brown,American Brown Ale,551,12.0\n1855,0.06,,161,Red Mountain Ale,American Amber / Red Ale,551,12.0\n1856,0.068,,160,Ice Pick Ale,American IPA,551,12.0\n1857,0.1,52.0,2574,4Beans,Baltic Porter,46,12.0\n1858,0.042,16.0,2479,Jammer,Gose,46,12.0\n1859,0.08,,2443,Abigale,Belgian Pale Ale,46,12.0\n1860,0.032,7.0,2266,Rad,Fruit / Vegetable Beer,46,16.0\n1861,0.065,62.0,2090,Bengali,American IPA,46,24.0\n1862,0.047,50.0,1962,Sensi Harvest,American Pale Ale (APA),46,12.0\n1863,0.099,111.0,1696,Hi-Res,American Double / Imperial IPA,46,12.0\n1864,0.07,70.0,1608,Global Warmer,American Strong Ale,46,12.0\n1865,0.067,74.0,1591,Autumnation (2013),American IPA,46,16.0\n1866,0.054000000000000006,42.0,1388,The Crisp,German Pilsener,46,16.0\n1867,0.052000000000000005,34.0,1387,Sweet Action,Cream Ale,46,16.0\n1868,0.063,57.0,1386,Righteous Ale,Rye Beer,46,16.0\n1869,0.064,62.0,1385,Bengali Tiger,American IPA,46,16.0\n1870,0.099,85.0,1020,3Beans,Baltic Porter,46,12.0\n1871,0.059000000000000004,47.0,778,Brownstone,American Brown Ale,46,16.0\n1872,0.052000000000000005,11.0,630,Apollo,American Pale Wheat Ale,46,16.0\n1873,0.049,35.0,629,Harbinger,Saison / Farmhouse Ale,46,16.0\n1874,0.091,103.0,628,Resin,American Double / Imperial IPA,46,12.0\n1875,0.063,69.0,525,Diesel,American Stout,46,16.0\n1876,0.06,48.0,512,Autumnation (2011-12) (2011),Pumpkin Ale,46,16.0\n1877,0.054000000000000006,42.0,425,The Crisp (2011),German Pilsener,46,16.0\n1878,0.052000000000000005,34.0,424,Sweet Action (2011),Cream Ale,46,16.0\n1879,0.063,57.0,423,Righteous Ale (2011),Rye Beer,46,16.0\n1880,0.064,62.0,422,Bengali Tiger (2011),American IPA,46,16.0\n1881,0.045,,1942,Rudie Session IPA,American IPA,264,12.0\n1882,0.07400000000000001,,1708,Taster's Choice,Doppelbock,264,12.0\n1883,0.068,65.0,1521,Modus Hoperandi,American IPA,264,12.0\n1884,0.057999999999999996,15.0,1297,Estival Cream Stout,American Stout,264,12.0\n1885,0.057999999999999996,,1192,Vernal Minthe Stout,American Stout,264,12.0\n1886,0.08,,1013,Hibernal Vinifera Stout,Foreign / Export Stout,264,12.0\n1887,,,774,Autumnal Molé Stout,American Stout,264,12.0\n1888,0.042,18.0,386,Mexican Logger,American Pale Lager,264,12.0\n1889,0.053,,70,True Blonde Ale,American Blonde Ale,264,12.0\n1890,0.061,,69,Euphoria Pale Ale,American Pale Ale (APA),264,12.0\n1891,0.057,58.0,68,ESB Special Ale,Extra Special / Strong Bitter (ESB),264,12.0\n1892,0.068,65.0,67,Modus Hoperandi,American IPA,264,12.0\n1893,0.057999999999999996,39.0,1792,Iron Butt Red Ale,American Amber / Red Ale,313,12.0\n1894,0.071,92.0,1609,Initial Point India Pale Ale,American IPA,313,12.0\n1895,0.085,,2537,Monkey Dancing On A Razor Blade,Belgian IPA,64,24.0\n1896,0.08199999999999999,,2536,Tripel Deke,Tripel,64,24.0\n1897,0.049,,30,Urban Wilderness Pale Ale,English Pale Ale,557,12.0\n1898,0.06,70.0,2305,Homefront IPA,American IPA,163,12.0\n1899,0.055,16.0,1588,Sly Fox Christmas Ale 2013,Winter Warmer,371,12.0\n1900,0.055999999999999994,25.0,1363,Grisette,Grisette,371,12.0\n1901,0.062,,1211,360° India Pale Ale,American IPA,371,12.0\n1902,0.049,18.0,1123,Helles Golden Lager,Munich Helles Lager,371,12.0\n1903,0.055,16.0,926,Sly Fox Christmas Ale 2012 (2012),Winter Warmer,371,12.0\n1904,0.084,90.0,894,Odyssey Imperial IPA,American Double / Imperial IPA,371,12.0\n1905,0.057999999999999996,25.0,166,Oktoberfest Lager,Märzen / Oktoberfest,371,12.0\n1906,0.07,113.0,24,113 IPA,American IPA,371,12.0\n1907,0.053,21.0,23,Dunkel Lager,Munich Dunkel Lager,371,12.0\n1908,0.055999999999999994,11.0,22,Royal Weisse Ale,Hefeweizen,371,12.0\n1909,0.049,44.0,21,Pikeland Pils,German Pilsener,371,12.0\n1910,0.051,40.0,20,Phoenix Pale Ale,American Pale Ale (APA),371,12.0\n1911,0.07,88.0,2407,Rule G IPA,American IPA,115,12.0\n1912,0.057999999999999996,35.0,2406,Murphy's Law,American Amber / Red Ale,115,12.0\n1913,0.062,33.0,2405,Alter Ego ,Saison / Farmhouse Ale,115,12.0\n1914,0.05,,2234,Monarch Pilsner,American Pilsner,191,12.0\n1915,0.06,55.0,1606,Snow King Pale Ale,American Pale Ale (APA),191,12.0\n1916,0.054000000000000006,36.0,617,Zonker Stout,Foreign / Export Stout,191,12.0\n1917,0.05,22.0,407,OB-1 Organic Ale,English Brown Ale,191,12.0\n1918,0.05,18.0,406,Snake River Lager,Vienna Lager,191,12.0\n1919,0.052000000000000005,32.0,402,Snake River Pale Ale,American Pale Ale (APA),191,12.0\n1920,0.068,60.0,393,Pako’s EyePA,American IPA,191,12.0\n1921,0.05,,1798,Thanksgiving Ale,Kölsch,309,12.0\n1922,0.092,,1655,Double Dagger Imperial IPA,American Double / Imperial IPA,309,12.0\n1923,0.063,100.0,1596,Dagger Falls IPA,American IPA,309,12.0\n1924,0.063,100.0,1595,Dagger Falls IPA,American IPA,309,12.0\n1925,0.06,,1482,Socktoberfest,Märzen / Oktoberfest,309,16.0\n1926,0.079,,1447,Hopnoxious Imperial IPA,American Double / Imperial IPA,309,12.0\n1927,0.099,,1425,Barrel Aged Seven Devils Imperial Stout,American Double / Imperial Stout,309,12.0\n1928,0.055,,1424,Boise Co-Op Two Score Ale,Saison / Farmhouse Ale,309,16.0\n1929,0.05,,1298,Sockeye Belgian Style Summer Ale,Witbier,309,16.0\n1930,0.064,,1181,Sockeye Maibock,Maibock / Helles Bock,309,12.0\n1931,0.099,100.0,1160,Old Devil's Tooth,American Barleywine,309,12.0\n1932,0.043,,1152,Galena Golden,American Blonde Ale,309,12.0\n1933,0.052000000000000005,32.0,1151,Hell-Diver Pale Ale,American Pale Ale (APA),309,12.0\n1934,0.046,12.0,1150,Woolybugger Wheat,American Pale Wheat Ale,309,12.0\n1935,0.057,,1076,Power House Porter,American Porter,309,12.0\n1936,0.084,90.0,995,Winterfest,American Strong Ale,309,16.0\n1937,0.063,100.0,879,Dagger Falls IPA,American IPA,309,12.0\n1938,0.07,18.0,1972,LuckenBock,Bock,257,16.0\n1939,0.055,40.0,1971,Texas Pale Ale (TPA),American IPA,257,16.0\n1940,0.08,,1970,6 String Saison,Saison / Farmhouse Ale,257,16.0\n1941,0.05,22.0,1969,Kol' Beer,Kölsch,257,16.0\n1942,0.035,,2024,Montauk Light,Light Lager,249,12.0\n1943,0.048,32.0,1283,Na Zdraví Pilsner,Czech Pilsener,436,16.0\n1944,0.055,65.0,1282,Nice Rack IPA,American IPA,436,16.0\n1945,0.075,72.0,2362,2014 IPA Cicada Series,American IPA,133,16.0\n1946,0.077,65.0,2346,Sinister Minister Black IPA,American IPA,133,16.0\n1947,0.053,45.0,2320,Jack the Sipper,Extra Special / Strong Bitter (ESB),133,12.0\n1948,0.057999999999999996,60.0,2297,Devil's Harvest Extra Pale Ale,American Pale Ale (APA),133,12.0\n1949,0.05,20.0,2296,Suzy B Dirty Blonde Ale,American Blonde Ale,133,12.0\n1950,0.08,80.0,1745,Mississippi Fire Ant,American Amber / Red Ale,133,16.0\n1951,0.057999999999999996,40.0,1120,Hipster Breakfast,Oatmeal Stout,133,16.0\n1952,0.05,20.0,1118,Suzy B Dirty Blonde Ale,American Blonde Ale,133,16.0\n1953,0.057999999999999996,60.0,1117,Devil's Harvest Extra Pale Ale,American Pale Ale (APA),133,16.0\n1954,0.065,45.0,2387,Pine Belt Pale Ale,American Pale Ale (APA),118,12.0\n1955,0.055,,2267,Walloon,Saison / Farmhouse Ale,118,12.0\n1956,0.069,23.0,1740,Le Mort Vivant,Bière de Garde,118,12.0\n1957,0.085,110.0,1728,Red Cockaded Ale,American Double / Imperial IPA,118,12.0\n1958,0.092,100.0,1497,Valkyrie Double IPA,American Double / Imperial IPA,118,12.0\n1959,0.085,110.0,1011,Red Cockaded Ale (2013),American Double / Imperial IPA,118,12.0\n1960,0.07200000000000001,40.0,1010,Old Potentate,Old Ale,118,12.0\n1961,0.05,20.0,856,Bombshell Blonde,American Blonde Ale,118,16.0\n1962,0.099,100.0,853,PRO-AM (2012) (2012),American Double / Imperial IPA,118,12.0\n1963,0.055,,691,Walloon (2014),Saison / Farmhouse Ale,118,12.0\n1964,0.069,23.0,555,Le Mort Vivant (2011),Bière de Garde,118,12.0\n1965,0.083,50.0,46,Buried Hatchet Stout,Foreign / Export Stout,118,12.0\n1966,0.065,45.0,45,Pine Belt Pale Ale,American Pale Ale (APA),118,16.0\n1967,0.05,20.0,44,Bombshell Blonde,American Blonde Ale,118,12.0\n1968,0.047,35.0,2486,Baby Daddy Session IPA,American IPA,78,12.0\n1969,,,763,Hopluia (2004),English India Pale Ale (IPA),508,16.0\n1970,0.057999999999999996,,2271,Ball & Chain (2014),American Pale Ale (APA),175,16.0\n1971,0.096,,2206,Bitter Biker Double IPA,American Double / Imperial IPA,175,16.0\n1972,0.08199999999999999,,2136,God Damn Pigeon Porter,American Porter,175,16.0\n1973,0.079,,2135,Working for the Weekend,American Double / Imperial IPA,175,16.0\n1974,0.06,,2134,Angry Adam,American Amber / Red Ale,175,16.0\n1975,0.055,,2109,Freedom Fries,American Stout,175,16.0\n1976,0.096,,1821,Bitter Biker Double IPA,American Double / Imperial IPA,175,12.0\n1977,0.073,,1820,Ghost Bike Pale Ale,American Pale Ale (APA),175,16.0\n1978,0.062,,1819,Spiteful IPA,American IPA,175,12.0\n1979,0.06,,1634,Alley Time,American Pale Ale (APA),175,12.0\n1980,0.057999999999999996,,1633,Fat Badger,Irish Red Ale,175,12.0\n1981,0.055,,1632,In the Weeds,American Pale Wheat Ale,175,12.0\n1982,0.05,22.0,855,Special Amber,Vienna Lager,498,12.0\n1983,0.05,22.0,445,Special Amber,Vienna Lager,498,12.0\n1984,0.055999999999999994,,1587,Seven Gates Pale Ale,American Pale Ale (APA),372,12.0\n1985,0.052000000000000005,,2242,Gunga Din,Cider,186,16.0\n1986,0.042,20.0,1544,Starr Pils,German Pilsener,383,12.0\n1987,0.065,52.0,1205,Northern Lights India Pale Ale,American IPA,383,16.0\n1988,0.048,12.0,369,Festie,Märzen / Oktoberfest,383,12.0\n1989,0.065,52.0,368,Northern Lights India Pale Ale,American IPA,383,12.0\n1990,0.065,65.0,2386,Third Eye Enlightened Pale Ale,American Pale Ale (APA),119,12.0\n1991,0.049,17.0,92,Colorado Kölsch,Kölsch,119,12.0\n1992,0.057,25.0,91,Steam Engine Lager,American Amber / Red Lager,119,12.0\n1993,0.065,65.0,90,Third Eye Pale Ale,American IPA,119,12.0\n1994,0.047,9.0,2366,Point Special (Current),American Adjunct Lager,131,12.0\n1995,0.047,9.0,2365,Point Special,American Adjunct Lager,131,12.0\n1996,0.054000000000000006,33.0,2270,Point Cascade Pale Ale (2013),American Pale Ale (APA),131,12.0\n1997,0.047,9.0,2228,Point Special,American Adjunct Lager,131,12.0\n1998,0.052000000000000005,9.0,2151,Onyx Black Ale,American Black Ale,131,12.0\n1999,0.063,64.0,2150,Beyond The Pale IPA,American IPA,131,12.0\n2000,0.047,9.0,2122,Point Special (2013),American Adjunct Lager,131,12.0\n2001,0.047,9.0,2121,Point Special (2012),American Adjunct Lager,131,12.0\n2002,0.047,9.0,2115,Point Special Lager,American Adjunct Lager,131,16.0\n2003,0.062,,1450,St. Benedict's Winter Ale,Winter Warmer,131,12.0\n2004,0.057,15.0,1357,Point Oktoberfest,Märzen / Oktoberfest,131,16.0\n2005,0.052000000000000005,7.0,1225,Point Nude Beach Summer Wheat,American Pale Wheat Ale,131,16.0\n2006,0.05,7.0,816,Point Nude Beach Summer Wheat,American Pale Wheat Ale,131,12.0\n2007,0.05,7.0,772,Point Nude Beach Summer Wheat (2011),American Pale Wheat Ale,131,12.0\n2008,0.035,,684,Drop Dead Blonde,American Blonde Ale,131,12.0\n2009,0.049,13.0,650,Three Kings Ale,Kölsch,131,12.0\n2010,0.057,15.0,456,Point Oktoberfest,Märzen / Oktoberfest,131,12.0\n2011,0.054000000000000006,32.0,357,2012 Black Ale,American Brown Ale,131,12.0\n2012,0.05,7.0,141,Point Nude Beach Summer Wheat (2010),American Pale Wheat Ale,131,12.0\n2013,0.054000000000000006,33.0,140,Point Cascade Pale Ale,American Pale Ale (APA),131,12.0\n2014,0.047,14.0,139,Point Amber Classic,American Amber / Red Lager,131,12.0\n2015,0.047,9.0,138,Point Special Lager,American Adjunct Lager,131,12.0\n2016,0.051,31.0,953,Wisco Disco,American Amber / Red Ale,486,16.0\n2017,0.05,,1983,Brontide,American Black Ale,255,12.0\n2018,0.05,,1631,Brontide,American Black Ale,255,12.0\n2019,0.045,,1344,Classique,Saison / Farmhouse Ale,255,12.0\n2020,0.045,,922,Sunsplash Golden Ale (2004),American Blonde Ale,492,12.0\n2021,0.051,25.0,1410,Sand Island Lighthouse,Kölsch,412,12.0\n2022,0.05,30.0,925,Lily Flagg Milk Stout,Milk / Sweet Stout,412,12.0\n2023,0.07200000000000001,70.0,637,Monkeynaut IPA,American IPA,412,12.0\n2024,0.05,,2369,Straub Beer (Current),American Adjunct Lager,129,12.0\n2025,0.040999999999999995,8.0,2233,American Lager,American Adjunct Lager,129,12.0\n2026,0.040999999999999995,8.0,2232,American Amber,American Amber / Red Lager,129,12.0\n2027,0.032,13.0,2231,American Light,Light Lager,129,12.0\n2028,0.053,49.0,2352,Extra Pale Ale,American Pale Ale (APA),138,12.0\n2029,0.053,40.0,2549,Make It So,Extra Special / Strong Bitter (ESB),58,12.0\n2030,0.047,55.0,2473,Hopvale Organic Ale,American Pale Ale (APA),58,16.0\n2031,0.083,100.0,2415,Unchained #18 Hop Silo,American Double / Imperial IPA,58,16.0\n2032,0.052000000000000005,29.0,2605,Tip Off,Altbier,25,16.0\n2033,0.054000000000000006,,2215,Java Mac,Scottish Ale,25,16.0\n2034,0.054000000000000006,23.0,2164,Cowbell,American Porter,25,16.0\n2035,0.057999999999999996,20.0,2085,Hop Up Offa That Brett (2014),Belgian Pale Ale,25,16.0\n2036,0.083,23.0,2084,PV Muckle (2013),Scotch Ale / Wee Heavy,25,16.0\n2037,0.099,36.0,2083,Bourbon Barrel Batch 666: Sympathy for the Devil,Belgian Dark Ale,25,16.0\n2038,0.09,30.0,2082,Whip Fight,Scotch Ale / Wee Heavy,25,16.0\n2039,0.053,23.0,2081,Port Barrel Wee Mac ,Scotch Ale / Wee Heavy,25,16.0\n2040,0.064,75.0,2001,Fistful Of Hops Red,American IPA,25,16.0\n2041,0.063,75.0,2000,Fistful of Hops Orange,American IPA,25,16.0\n2042,0.064,75.0,1999,Fistful Of Hops Blue,American IPA,25,16.0\n2043,0.064,75.0,1996,Fistful of Hops Green,American IPA,25,16.0\n2044,,,1948,30 Min Coma,Belgian IPA,25,16.0\n2045,0.09,30.0,1656,Wee Muckle,Scotch Ale / Wee Heavy,25,16.0\n2046,0.065,55.0,1599,Royal Brat,Extra Special / Strong Bitter (ESB),25,16.0\n2047,0.075,77.0,1420,Grapefruit Jungle (GFJ),American IPA,25,16.0\n2048,0.055999999999999994,50.0,1389,Osiris Pale Ale,American Pale Ale (APA),25,16.0\n2049,0.099,75.0,1367,Bourbon Barrel Aged Timmie,Russian Imperial Stout,25,16.0\n2050,0.063,23.0,1366,Stupid Sexy Flanders,Flanders Oud Bruin,25,16.0\n2051,,,1347,Bourbon Barrel Cowbell,American Porter,25,16.0\n2052,0.054000000000000006,,1314,Popcorn Pilsner,German Pilsener,25,16.0\n2053,0.071,27.0,1128,Ring of Dingle,Irish Dry Stout,25,16.0\n2054,0.054000000000000006,23.0,1127,Bourbon Barrel Wee Mac,Scottish Ale,25,16.0\n2055,0.099,60.0,1049,Bourbon Barrel Johan,English Barleywine,25,16.0\n2056,0.07,,934,The Deuce,American Brown Ale,25,16.0\n2057,0.09,24.0,923,The Velvet Fog,Quadrupel (Quad),25,16.0\n2058,0.055,23.0,874,Sun King Oktoberfest,Märzen / Oktoberfest,25,16.0\n2059,0.052000000000000005,24.0,739,Indianapolis Indians Lager,Dortmunder / Export Lager,25,16.0\n2060,0.052000000000000005,24.0,698,Indians Victory Lager (2012),Dortmunder / Export Lager,25,16.0\n2061,0.08,,660,Chaka,Belgian Strong Pale Ale,25,16.0\n2062,0.091,91.0,651,Isis,American Double / Imperial IPA,25,16.0\n2063,0.09,30.0,584,Wee Muckle (2011),Scotch Ale / Wee Heavy,25,16.0\n2064,0.075,77.0,532,Grapefruit Jungle (GFJ) (2011),American IPA,25,16.0\n2065,0.055,23.0,526,Sun King Oktoberfest (2011),Märzen / Oktoberfest,25,16.0\n2066,0.099,60.0,394,Johan the Barleywine,English Barleywine,25,16.0\n2067,0.054000000000000006,23.0,213,Wee Mac Scottish-Style Ale,Scottish Ale,25,16.0\n2068,0.053,20.0,55,Sunlight Cream Ale,Cream Ale,25,16.0\n2069,0.055999999999999994,50.0,54,Osiris Pale Ale (2010),American Pale Ale (APA),25,16.0\n2070,0.045,,1207,Dam Lager,American Amber / Red Lager,455,12.0\n2071,0.07,,1206,Red Clay IPA,American IPA,455,12.0\n2072,0.07200000000000001,,2543,Todd the Axe Man,American IPA,61,16.0\n2073,0.057,,2409,Doomtree,Extra Special / Strong Bitter (ESB),61,16.0\n2074,0.099,85.0,1739,BLAKKR,American Black Ale,61,16.0\n2075,0.073,69.0,1112,Overrated! West Coast Style IPA,American IPA,61,16.0\n2076,0.075,90.0,329,WET,American IPA,61,16.0\n2077,0.04,37.0,19,Bitter Brewer,English Bitter,61,16.0\n2078,0.055,34.0,18,SurlyFest,Rye Beer,61,16.0\n2079,0.051,45.0,17,Coffee Bender,American Brown Ale,61,16.0\n2080,0.051,45.0,16,Bender,American Brown Ale,61,16.0\n2081,0.09699999999999999,120.0,15,Abrasive Ale,American Double / Imperial IPA,61,16.0\n2082,0.051,20.0,14,Hell,Keller Bier / Zwickel Bier,61,16.0\n2083,0.067,33.0,13,CynicAle,Saison / Farmhouse Ale,61,16.0\n2084,0.062,99.0,12,Furious,American IPA,61,16.0\n2085,0.073,50.0,1242,Big Nose,American IPA,447,12.0\n2086,0.05,10.0,1241,Cotton Mouth,Witbier,447,12.0\n2087,0.055999999999999994,35.0,1240,Stump Knocker Pale Ale,American Pale Ale (APA),447,12.0\n2088,0.05,38.0,1239,Midnight Oil,Oatmeal Stout,447,12.0\n2089,0.059000000000000004,18.0,1238,Wild Night,Cream Ale,447,12.0\n2090,0.045,,1554,Bermuda Triangle Ginger Beer,Herbed / Spiced Beer,381,12.0\n2091,0.055,35.0,2568,Take Two Pils,German Pilsener,49,12.0\n2092,0.057,,2551,Waterkeeper,Hefeweizen,49,12.0\n2093,0.064,,1710,SweetWater IPA,American IPA,49,12.0\n2094,0.054000000000000006,,1709,420 Extra Pale Ale,American Pale Ale (APA),49,12.0\n2095,0.08,95.0,1229,Dodgy Knight Imperial IPA,American Double / Imperial IPA,449,12.0\n2096,0.05,,1164,TailGate Saison,Saison / Farmhouse Ale,449,12.0\n2097,0.05,44.0,663,TailGate IPA,American IPA,449,24.0\n2098,0.05,44.0,662,TailGate IPA,American IPA,449,12.0\n2099,0.049,28.0,623,TailGate Hefeweizen,Hefeweizen,449,24.0\n2100,0.05,19.0,622,Blacktop Blonde,American Blonde Ale,449,24.0\n2101,0.05,19.0,362,Blacktop Blonde,American Blonde Ale,449,12.0\n2102,0.049,28.0,361,TailGate Hefeweizen,Hefeweizen,449,12.0\n2103,0.085,34.0,2575,Wooden Rooster,Tripel,45,16.9\n2104,0.048,20.0,2555,Ginger Peach Saison,Saison / Farmhouse Ale,45,16.0\n2105,0.062,35.0,1736,Zombie Monkie,American Porter,45,16.0\n2106,0.055999999999999994,20.0,1196,Wild Plum Farmhouse Ale,Saison / Farmhouse Ale,45,16.0\n2107,0.05,20.0,1063,Vanilla Bean Buffalo Sweat,Oatmeal Stout,45,16.0\n2108,0.068,110.0,1017,Ethos IPA,American IPA,45,16.0\n2109,0.044000000000000004,12.0,1009,Tallgrass Pub Ale,American Brown Ale,45,16.0\n2110,0.07200000000000001,93.0,912,Oasis,Extra Special / Strong Bitter (ESB),45,16.0\n2111,0.05,20.0,765,Buffalo Sweat,Milk / Sweet Stout,45,16.0\n2112,0.05,20.0,676,Halcyon Unfiltered Wheat,American Pale Wheat Ale,45,16.0\n2113,0.052000000000000005,,595,8-Bit Pale Ale,American Pale Ale (APA),45,16.0\n2114,0.085,,537,Velvet Rooster,Tripel,45,16.0\n2115,0.05,20.0,412,Halcyon Unfiltered Wheat,American Pale Wheat Ale,45,12.0\n2116,0.05,16.0,105,Köld Lager (2010),German Pilsener,45,16.0\n2117,0.07200000000000001,93.0,104,Oasis (2010),American Double / Imperial IPA,45,16.0\n2118,0.044000000000000004,22.0,103,Tallgrass Ale,American Brown Ale,45,16.0\n2119,0.05,20.0,102,Buffalo Sweat (2010),Milk / Sweet Stout,45,16.0\n2120,0.063,60.0,101,Tallgrass IPA,American IPA,45,16.0\n2121,0.068,,1433,Hat Trick Hop IPA,American IPA,409,16.0\n2122,0.055999999999999994,,1432,Yard Sale Amber Ale,American Amber / Red Ale,409,16.0\n2123,0.055,,936,Loafin Bräu,Altbier,490,16.0\n2124,0.07,80.0,544,Old Elephant Foot IPA,American IPA,490,16.0\n2125,0.065,35.0,2640,Peck's Porter,American Porter,7,16.0\n2126,0.07,,2448,Reactor,American IPA,7,16.0\n2127,0.057,,2447,Mr. Orange,Witbier,7,16.0\n2128,0.08,22.0,2601,Deduction,Dubbel,28,12.0\n2129,0.057,,973,Face Down Brown Ale,American Brown Ale,480,12.0\n2130,0.064,,827,Tempter IPA,American IPA,480,12.0\n2131,0.055,,589,Bridal Veil Rye Pale Ale,American Pale Ale (APA),480,12.0\n2132,0.048,,2155,Smittytown,Extra Special / Strong Bitter (ESB),210,12.0\n2133,0.04,,1982,Greenwood Beach,Fruit / Vegetable Beer,210,12.0\n2134,0.066,,1939,Gatecrasher,English India Pale Ale (IPA),210,12.0\n2135,0.047,42.0,1082,RecreationAle,American Pale Ale (APA),469,12.0\n2136,0.055,35.0,2119,First Stand,Saison / Farmhouse Ale,215,12.0\n2137,0.063,23.0,2118,Battle LIne,American Brown Ale,215,12.0\n2138,0.055999999999999994,12.0,2117,Broken Bridge,Dunkelweizen,215,12.0\n2139,0.071,69.0,2116,Brutus,English India Pale Ale (IPA),215,12.0\n2140,0.06,,1916,Petit Mutant,American Wild Ale,272,16.0\n2141,0.096,,1915,The Crusher,American Double / Imperial IPA,272,16.0\n2142,0.08,,1914,Beelzebub,American Double / Imperial Stout,272,16.0\n2143,0.07,,1810,Focal Banger,American IPA,272,16.0\n2144,0.08,120.0,1111,Heady Topper,American Double / Imperial IPA,272,16.0\n2145,0.08,120.0,379,Heady Topper,American Double / Imperial IPA,272,16.0\n2146,0.046,20.0,1200,Bomber Mountain Amber Ale (2013),American Amber / Red Ale,457,12.0\n2147,0.07,75.0,1199,Indian Paintbrush IPA,American IPA,457,12.0\n2148,0.048,16.0,1198,Saddle Bronc Brown Ale (2013),English Brown Ale,457,12.0\n2149,0.059000000000000004,15.0,1197,Wagon Box Wheat Beer,American Pale Wheat Ale,457,12.0\n2150,0.05,,1945,Birdhouse Pale Ale,Belgian Pale Ale,262,12.0\n2151,0.073,,1079,Ozzy,Belgian Pale Ale,262,12.0\n2152,0.07,,94,Resurrection,Dubbel,262,12.0\n2153,0.052000000000000005,16.0,1748,Bronx Summer Pale Ale,American Pale Ale (APA),329,16.0\n2154,0.057,46.0,1747,Bronx Black Pale Ale,American Black Ale,329,16.0\n2155,0.063,50.0,1037,Bronx Pale Ale,American Pale Ale (APA),329,16.0\n2156,0.052000000000000005,35.0,2594,Surfrider,American Pale Ale (APA),33,16.0\n2157,0.055,,2035,Kolschtal Eddy,Kölsch,33,16.0\n2158,0.05,,2034,South Bay Session IPA,American IPA,33,16.0\n2159,0.069,34.0,1562,Grandma's Pecan,English Brown Ale,33,16.0\n2160,0.099,101.0,1561,Double Trunk,American Double / Imperial IPA,33,16.0\n2161,0.046,45.0,1749,Just IPA,American IPA,328,12.0\n2162,0.045,,2455,Lionshead,American Pilsner,90,12.0\n2163,,,963,Manhattan Gold Lager (1990),American Amber / Red Lager,484,12.0\n2164,0.052000000000000005,,2638,G. B. Russo’s Italian Pistachio Pale Ale,American Pale Ale (APA),9,16.0\n2165,0.057999999999999996,,1278,Northern Hawk Owl Amber,American Amber / Red Ale,438,12.0\n2166,0.059000000000000004,,1277,CEO Stout,American Stout,438,16.0\n2167,0.047,,1276,Will Power Pale Ale,American Pale Ale (APA),438,16.0\n2168,0.044000000000000004,,1732,Curious Traveler Shandy,Shandy,334,12.0\n2169,0.048,18.0,2347,Hunny Do Wheat,American Pale Wheat Ale,142,12.0\n2170,0.052000000000000005,,1781,Three Way Pale Ale,American Pale Ale (APA),142,12.0\n2171,0.040999999999999995,,1780,Rise to the Top,Cream Ale,142,12.0\n2172,0.049,,1779,Lost Trout Brown Ale,American Brown Ale,142,12.0\n2173,0.051,11.0,2421,Watermelon Ale,Fruit / Vegetable Beer,108,12.0\n2174,0.04,18.0,2319,Knotty Blonde Ale,American Blonde Ale,153,12.0\n2175,0.062,40.0,2317,Fivepine Chocolate Porter,American Porter,153,12.0\n2176,0.062,82.0,2316,Hoodoo Voodoo IPA,American IPA,153,12.0\n2177,0.053,22.0,1913,Hydraulion Red,Irish Red Ale,273,12.0\n2178,0.06,50.0,1912,40 Mile IPA,American IPA,273,12.0\n2179,0.055,64.0,2617,Citra Faced,American Pale Wheat Ale,21,16.0\n2180,0.055,31.0,2616,Pole Barn Stout,Oatmeal Stout,21,16.0\n2181,0.054000000000000006,37.0,2615,Pale,American Pale Ale (APA),21,16.0\n2182,0.053,27.0,2614,Yoshi's Nectar,California Common / Steam Beer,21,16.0\n2183,0.052000000000000005,,1889,Leatherhead Red,American Amber / Red Ale,282,12.0\n2184,0.065,,1222,Cropduster Mid-American IPA,American IPA,282,12.0\n2185,0.075,,122,Golden Frau Honey Wheat,Braggot,282,12.0\n2186,,,121,Cornstalker Dark Wheat,American Dark Wheat Ale,282,12.0\n2187,0.057999999999999996,20.0,2623,Cafe Leche,American Porter,17,16.0\n2188,0.052000000000000005,12.0,2622,Damascene Apricot Sour,Fruit / Vegetable Beer,17,16.0\n2189,0.12,90.0,2621,Csar,Russian Imperial Stout,17,16.0\n2190,0.055,,1817,Klingon Warnog Roggen Dunkel,Roggenbier,17,16.0\n2191,0.085,115.0,1449,Overlord Imperial IPA,American Double / Imperial IPA,17,16.0\n2192,0.057999999999999996,36.0,951,Alloy,American IPA,17,16.0\n2193,0.051,22.0,950,Rivet Irish Red Ale,Irish Red Ale,17,16.0\n2194,0.052000000000000005,50.0,949,3 Gear Robust Porter,American Porter,17,16.0\n2195,0.045,35.0,948,Circuit Bohemian Pilsner,Czech Pilsener,17,16.0\n2196,0.055,,2321,Turnrow Harvest Ale,American Blonde Ale,152,12.0\n2197,0.07,60.0,1755,Juke Joint IPA,American IPA,152,12.0\n2198,0.07,35.0,1754,Parade Ground Coffee Porter,American Porter,152,12.0\n2199,0.05,21.0,1428,Tin Roof Watermelon Wheat,Fruit / Vegetable Beer,152,12.0\n2200,0.045,18.0,529,Tin Roof Blonde Ale,American Blonde Ale,152,12.0\n2201,0.055,37.0,495,Voodoo Bengal Pale Ale,American Pale Ale (APA),152,12.0\n2202,0.045,28.0,494,Perfect Tin Amber,American Amber / Red Ale,152,12.0\n2203,0.073,87.0,1856,IPA & a Half,American IPA,291,12.0\n2204,0.055,33.0,736,Ornery Amber Lager (2003),Vienna Lager,291,12.0\n2205,0.05,,1027,Big Island Shandy,Shandy,474,16.0\n2206,0.068,,1026,Preservation IPA,American IPA,474,16.0\n2207,0.062,72.0,1938,Almanac IPA,American IPA,265,12.0\n2208,0.065,,1937,Milk Mustachio Stout,Milk / Sweet Stout,265,12.0\n2209,0.06,30.0,1936,Farmer's Tan Red Ale,American Amber / Red Ale,265,12.0\n2210,0.057,,594,Triangle India Pale Ale,American IPA,524,12.0\n2211,0.05,,114,Triangle White Ale,Witbier,524,12.0\n2212,0.08,,113,Triangle Belgian Golden Ale,Belgian Strong Pale Ale,524,12.0\n2213,0.08199999999999999,,2445,Troegenator,Doppelbock,97,16.0\n2214,0.075,93.0,2444,Nugget Nectar,American Amber / Red Ale,97,16.0\n2215,0.045,45.0,2203,Sunshine Pils,American Pilsner,97,12.0\n2216,0.08199999999999999,25.0,1510,Troegenator Doublebock,Doppelbock,97,16.0\n2217,0.075,85.0,1509,Perpetual IPA,American IPA,97,12.0\n2218,0.055,52.0,433,Greenville Pale Ale,American Pale Ale (APA),539,12.0\n2219,0.062,65.0,641,Hoppy Boy,American IPA,520,16.0\n2220,0.054000000000000006,26.0,2588,Cow Creek,American Amber / Red Lager,38,12.0\n2221,0.075,63.0,2458,Chupahopra,American IPA,38,12.0\n2222,0.051,19.0,2212,Twisted X,American Adjunct Lager,38,12.0\n2223,0.040999999999999995,41.0,2235,Day Hike Session,American IPA,190,12.0\n2224,0.048,48.0,1661,Trailhead ISA,American IPA,190,12.0\n2225,0.052000000000000005,27.0,1660,Immersion Amber,American Amber / Red Ale,190,12.0\n2226,0.062,70.0,1659,Evo IPA,American IPA,190,12.0\n2227,0.048,,1438,Presidential Pils,Czech Pilsener,190,12.0\n2228,0.062,70.0,1173,Evolutionary IPA (2012),American IPA,190,12.0\n2229,0.057,36.0,560,Persnickety Pale,American Pale Ale (APA),190,12.0\n2230,0.054000000000000006,20.0,519,SoDo Brown Ale,American Brown Ale,190,12.0\n2231,0.052000000000000005,27.0,518,Immersion Amber Ale (2011),American Amber / Red Ale,190,12.0\n2232,0.062,70.0,505,Evolutionary IPA (2011),American IPA,190,12.0\n2233,0.048,48.0,482,Trailhead India Style Session Ale (2011),American IPA,190,12.0\n2234,0.046,,451,Panorama Wheat Ale,American Pale Wheat Ale,190,12.0\n2235,0.063,69.0,2497,Wobble,American IPA,74,16.0\n2236,0.057999999999999996,43.0,2246,Night Cat,American Dark Wheat Ale,74,12.0\n2237,0.057999999999999996,43.0,1630,Night Cat (2014),American Dark Wheat Ale,74,12.0\n2238,0.051,17.0,1284,Dog Days Lager,Dortmunder / Export Lager,74,12.0\n2239,0.051,36.0,1121,Sidekick Extra Pale Ale,American Pale Ale (APA),74,12.0\n2240,0.077,23.0,1042,Atom Smasher,Märzen / Oktoberfest,74,12.0\n2241,0.045,,1041,Testudo,Bière de Garde,74,12.0\n2242,0.065,,1040,Hobnob B & B Pale Ale,American Pale Ale (APA),74,12.0\n2243,0.07,68.0,861,Cane and Ebel,American Strong Ale,74,12.0\n2244,0.065,,642,Outlaw IPA (2015),American IPA,74,12.0\n2245,0.045,,2037,The Gilded Age,Munich Helles Lager,243,12.0\n2246,0.05,,1285,No Limits Hefeweizen,Hefeweizen,435,16.0\n2247,0.06,,1189,Honeyspot Road White IPA,American White IPA,435,12.0\n2248,0.07200000000000001,,1171,Road 2 Ruin Double IPA,American Double / Imperial IPA,435,12.0\n2249,0.048,,1170,Workers Comp Saison,Saison / Farmhouse Ale,435,12.0\n2250,0.05,,1169,Ol' Factory Pils,German Pilsener,435,12.0\n2251,0.05,10.0,2310,PUNK'N,Pumpkin Ale,159,12.0\n2252,0.04,22.0,2100,Yard Sale Winter Lager,American Amber / Red Lager,159,12.0\n2253,0.04,42.0,1925,Trader Session IPA,American IPA,159,12.0\n2254,0.073,83.0,1723,Hop Nosh IPA,American IPA,159,12.0\n2255,0.04,17.0,1212,SUM'R,American Blonde Ale,159,12.0\n2256,0.04,32.0,1097,Organic Baba Black Lager,Schwarzbier,159,12.0\n2257,0.073,82.0,1089,Hop Notch IPA (2013),American IPA,159,12.0\n2258,0.04,34.0,1088,Cutthroat Pale Ale,American Pale Ale (APA),159,12.0\n2259,0.04,29.0,974,WYLD Extra Pale Ale,American Pale Ale (APA),159,12.0\n2260,0.055,,98,Pilsner Ukiah,German Pilsener,555,12.0\n2261,0.06,75.0,2372,The Green Room,American IPA,126,16.0\n2262,0.047,25.0,2367,Humbucker Helles,Maibock / Helles Bock,126,16.0\n2263,0.065,,1704,Uncle John's Apple Cherry Cider,Cider,338,16.0\n2264,0.065,,1703,Uncle John's Apricot Apple Cider,Cider,338,16.0\n2265,0.065,,877,Draught Hard Apple Cider,Cider,338,16.0\n2266,0.001,,606,Scotty K NA,Low Alcohol Beer,522,16.0\n2267,0.068,,543,Bacon Brown Ale,American Brown Ale,522,16.0\n2268,0.064,,347,Golden State Ale,Belgian Pale Ale,522,16.0\n2269,0.078,,346,Baltic Porter,Baltic Porter,522,16.0\n2270,0.085,,25,Siamese twin,Dubbel,522,16.0\n2271,0.085,90.0,2507,Double Duckpin,American Double / Imperial IPA,71,12.0\n2272,0.042,10.0,2506,Old Pro,Gose,71,12.0\n2273,0.055,,829,Duckpin Pale Ale,American Pale Ale (APA),71,12.0\n2274,0.06,,582,Balt Altbier,Altbier,71,12.0\n2275,0.045,50.0,2190,Campside Session IPA,American IPA,202,16.0\n2276,0.045,15.0,1951,Upland Wheat Ale,Witbier,202,16.0\n2277,0.06,,1950,Dragonfly IPA,American IPA,202,16.0\n2278,0.128,,2565,Lee Hill Series Vol. 5 - Belgian Style Quadrupel Ale,Quadrupel (Quad),51,19.2\n2279,0.10400000000000001,,2564,Lee Hill Series Vol. 4 - Manhattan Style Rye Ale,Rye Beer,51,19.2\n2280,0.068,24.0,2563,Lee Hill Series Vol. 2 - Wild Saison,American Wild Ale,51,19.2\n2281,0.099,51.0,2562,Lee Hill Series Vol. 3 - Barrel Aged Imperial Stout,American Double / Imperial Stout,51,19.2\n2282,0.076,,2561,Lee Hill Series Vol. 1 - Barrel Aged Brown Ale,American Brown Ale,51,19.2\n2283,0.06,,2560,Blood Orange Saison,Saison / Farmhouse Ale,51,12.0\n2284,0.065,33.0,1932,Thai Style White IPA,American White IPA,51,12.0\n2285,0.075,30.0,1853,Ferus Fluxus Wild Belgian Pale Ale,American Wild Ale,51,19.2\n2286,0.099,90.0,1315,Upslope Imperial India Pale Ale,American Double / Imperial IPA,51,19.2\n2287,0.08199999999999999,,907,Upslope Christmas Ale,Winter Warmer,51,16.0\n2288,0.077,,906,Upslope Pumpkin Ale,Pumpkin Ale,51,16.0\n2289,0.075,30.0,683,Upslope Belgian Style Pale Ale,Belgian Pale Ale,51,12.0\n2290,0.069,,614,Upslope Foreign Style Stout,Foreign / Export Stout,51,12.0\n2291,0.048,15.0,466,Top Rope Mexican-style Craft Lager,Vienna Lager,51,12.0\n2292,0.048,22.0,444,Upslope Craft Lager,Vienna Lager,51,12.0\n2293,0.067,,345,Upslope Brown Ale,English Brown Ale,51,12.0\n2294,0.057999999999999996,,80,Upslope Pale Ale,American Pale Ale (APA),51,12.0\n2295,0.07200000000000001,,79,Upslope India Pale Ale,American IPA,51,12.0\n2296,0.053,22.0,382,Common Sense Kentucky Common Ale,American Brown Ale,546,16.0\n2297,0.065,70.0,381,Upstate I.P.W.,American IPA,546,12.0\n2298,0.04,,1826,Squatters Full Suspension Pale Ale,American Pale Ale (APA),302,12.0\n2299,0.09,75.0,1825,Squatters Hop Rising Double IPA,American Double / Imperial IPA,302,12.0\n2300,0.08,,1824,Devastator Double Bock,Doppelbock,302,12.0\n2301,0.06,,1823,Wasatch Ghostrider White IPA,American White IPA,302,12.0\n2302,0.06,,1682,Wasatch Ghostrider White IPA (2014),American White IPA,302,12.0\n2303,0.04,,1681,Wasatch Apricot Hefeweizen,Fruit / Vegetable Beer,302,12.0\n2304,0.09,75.0,1680,Squatters Hop Rising Double IPA (2014),American Double / Imperial IPA,302,12.0\n2305,0.04,,1679,Squatters Full Suspension Pale Ale,American Pale Ale (APA),302,12.0\n2306,0.068,,2245,Nunica Pine,Cider,185,16.0\n2307,0.069,,2244,Ginger Peach,Cider,185,16.0\n2308,0.068,,1378,Totally Roasted,Cider,185,16.0\n2309,0.068,,1377,Blue Gold,Cider,185,16.0\n2310,0.068,,1376,Hard Apple,Cider,185,16.0\n2311,0.052000000000000005,,2411,Nitro Can Coffee Stout,American Stout,113,12.0\n2312,0.092,25.0,1770,Voodoo Love Child,Tripel,322,12.0\n2313,0.079,23.0,1769,White Magick of the Sun,Witbier,322,12.0\n2314,0.075,31.0,1730,Wynona's Big Brown Ale,American Brown Ale,322,12.0\n2315,0.092,25.0,1729,Gran Met,Belgian Strong Pale Ale,322,12.0\n2316,0.073,85.0,1603,Good Vibes IPA,American IPA,322,12.0\n2317,0.075,85.0,1488,Pilzilla,American Double / Imperial Pilsner,322,12.0\n2318,0.04,37.0,1846,Wachusett Light IPA,American IPA,295,12.0\n2319,0.06,55.0,1845,Green Monsta IPA,American IPA,295,12.0\n2320,0.055999999999999994,50.0,1844,Wachusett IPA,American IPA,295,12.0\n2321,0.047,,1843,Strawberry White,Witbier,295,12.0\n2322,0.085,85.0,1418,Larry Imperial IPA,American Double / Imperial IPA,295,12.0\n2323,0.047,,1038,Wachusett Summer,American Pale Wheat Ale,295,12.0\n2324,0.051,17.0,1030,Country Pale Ale,English Pale Ale,295,12.0\n2325,0.04,37.0,1029,Wachusett Light IPA (2013),American IPA,295,12.0\n2326,0.052000000000000005,20.0,908,Pumpkan,Pumpkin Ale,295,12.0\n2327,0.045,10.0,619,Wachusett Blueberry Ale,Fruit / Vegetable Beer,295,12.0\n2328,0.06,55.0,618,Green Monsta IPA,American IPA,295,12.0\n2329,0.047,,780,T-6 Red Ale (2004),American Amber / Red Ale,506,12.0\n2330,0.052000000000000005,67.0,2450,Self Starter,American IPA,94,16.0\n2331,0.054000000000000006,20.0,2223,Ermal's,Cream Ale,94,16.0\n2332,0.07,,2222,10 Ton,Oatmeal Stout,94,16.0\n2333,0.07,,2221,Flyin' Rye,American IPA,94,16.0\n2334,0.09,,2439,Christmas Ale,Herbed / Spiced Beer,100,12.0\n2335,0.07,,2356,Pay It Forward Cocoa Porter,American Porter,100,12.0\n2336,0.055,,1069,West Sixth Amber Ale,American Amber / Red Ale,100,12.0\n2337,,,652,West Sixth IPA,American IPA,100,12.0\n2338,0.055,,1542,One Claw,American Pale Ale (APA),384,12.0\n2339,0.04,5.0,1312,Westbrook Gose,Gose,384,12.0\n2340,0.05,16.0,576,White Thai,Witbier,384,12.0\n2341,0.068,65.0,575,Westbrook IPA,American IPA,384,12.0\n2342,0.057,22.0,1645,Westfield Octoberfest,Märzen / Oktoberfest,351,12.0\n2343,0.052000000000000005,,1551,Pop's Old Fashioned Lager,American Amber / Red Lager,351,12.0\n2344,0.057999999999999996,55.0,1550,Charlie in the Rye,American IPA,351,12.0\n2345,,,2364,Royal Lager,American Pale Lager,132,16.0\n2346,0.08,,2348,Rip Van Winkle (Current),Bock,132,12.0\n2347,,,2344,O’Malley’s Stout,English Stout,132,12.0\n2348,0.075,89.0,2343,O’Malley’s IPA,American IPA,132,12.0\n2349,,,2342,O’Malley’s Irish Style Cream Ale,Cream Ale,132,12.0\n2350,0.049,28.0,2341,L'il Lucy's Hot Pepper Ale,Chile Beer,132,12.0\n2351,0.052000000000000005,,2340,Drop Kick Ale,American Amber / Red Ale,132,12.0\n2352,0.055,,2573,Raspberry Berliner Weisse,Berliner Weissbier,47,12.0\n2353,0.05,,2572,Hop Session,American IPA,47,12.0\n2354,0.055,,2571,Blueberry Berliner Weisse,Berliner Weissbier,47,12.0\n2355,0.055,,2570,Berliner Weisse,Berliner Weissbier,47,12.0\n2356,0.06,,1498,Super G IPA,American IPA,396,16.0\n2357,0.049,30.0,1838,Hefe Lemon,Radler,296,12.0\n2358,0.049,30.0,1837,Hefe Black,Hefeweizen,296,12.0\n2359,0.049,30.0,1836,Widmer Brothers Hefeweizen,Hefeweizen,296,12.0\n2360,0.08199999999999999,100.0,1619,Hop Slayer Double IPA,American Double / Imperial IPA,361,12.0\n2361,0.045,,1618,Pumpkin Ale,Pumpkin Ale,361,12.0\n2362,0.05,,1364,Big Bowl Blonde Ale,American Brown Ale,361,12.0\n2363,0.052000000000000005,27.0,971,Phat Chance,American Blonde Ale,361,12.0\n2364,0.08199999999999999,100.0,740,Hop Slayer Double IPA (2011),American Double / Imperial IPA,361,12.0\n2365,0.08199999999999999,100.0,430,Hop Slayer Double IPA (2011),American Double / Imperial IPA,361,12.0\n2366,0.042,13.0,398,Wild Onion Summer Wit,Witbier,361,12.0\n2367,0.06,23.0,366,Jack Stout,Oatmeal Stout,361,12.0\n2368,0.045,,334,Wild Onion Pumpkin Ale (2010),Pumpkin Ale,361,12.0\n2369,0.055999999999999994,41.0,162,Paddy Pale Ale,American Pale Ale (APA),361,12.0\n2370,0.068,21.0,2253,Blonde Hunny,Belgian Pale Ale,181,12.0\n2371,0.057,20.0,1318,Wild Wolf Wee Heavy Scottish Style Ale,Scotch Ale / Wee Heavy,181,12.0\n2372,0.045,25.0,1195,Wild Wolf American Pilsner,American Pilsner,181,12.0\n2373,0.051,45.0,1194,Alpha Ale,American Pale Ale (APA),181,12.0\n2374,0.054000000000000006,,826,Mystical Stout,Irish Dry Stout,499,16.0\n2375,0.075,,825,Bodacious Bock,Bock,499,16.0\n2376,0.05,,813,Ambitious Lager,Munich Helles Lager,499,16.0\n2377,0.07200000000000001,,324,Wyoming Pale Ale,American Pale Ale (APA),550,16.0\n2378,0.05,,323,Wind River Blonde Ale,American Blonde Ale,550,16.0\n2379,0.07400000000000001,83.0,762,Ace IPA,American IPA,509,16.0\n2380,0.08,31.0,761,P-51 Porter,American Porter,509,16.0\n2381,0.055,,2149,#001 Golden Amber Lager,American Amber / Red Lager,211,12.0\n2382,0.071,60.0,2148,#002 American I.P.A.,American IPA,211,12.0\n2383,0.052000000000000005,,2147,#003 Brown & Robust Porter,American Porter,211,12.0\n2384,0.048,38.0,2146,#004 Session I.P.A.,American IPA,211,12.0\n2385,0.059000000000000004,,2047,Tarasque,Saison / Farmhouse Ale,239,12.0\n2386,0.062,61.0,1470,Ananda India Pale Ale,American IPA,239,12.0\n2387,0.045,23.0,1469,Tiny Bomb,American Pilsner,239,12.0\n2388,0.057999999999999996,72.0,2627,Train Hopper,American IPA,14,12.0\n2389,0.045,,2626,Edward’s Portly Brown,American Brown Ale,14,12.0\n2390,0.059000000000000004,135.0,1676,Troopers Alley IPA,American IPA,344,12.0\n2391,0.047,15.0,1468,Wolverine Premium Lager,American Pale Lager,402,12.0\n2392,0.05,,822,Woodchuck Amber Hard Cider,Cider,501,12.0\n2393,0.065,82.0,2417,4000 Footer IPA,American IPA,109,12.0\n2394,0.027999999999999997,15.0,2306,Summer Brew,American Pilsner,109,12.0\n2395,0.065,69.0,1697,Be Hoppy IPA,American IPA,339,16.0\n2396,0.069,69.0,2194,Worthy IPA,American IPA,199,12.0\n2397,0.045,25.0,1514,Easy Day Kolsch,Kölsch,199,12.0\n2398,0.077,30.0,1513,Lights Out Vanilla Cream Extra Stout,American Double / Imperial IPA,199,12.0\n2399,0.069,69.0,1512,Worthy IPA (2013),American IPA,199,12.0\n2400,0.06,50.0,1511,Worthy Pale,American Pale Ale (APA),199,12.0\n2401,0.042,,1345,Patty's Chile Beer,Chile Beer,424,12.0\n2402,0.08199999999999999,,1316,Colorojo Imperial Red Ale,American Strong Ale,424,12.0\n2403,0.055,,1045,Wynkoop Pumpkin Ale,Pumpkin Ale,424,12.0\n2404,0.075,,1035,Rocky Mountain Oyster Stout,American Stout,424,12.0\n2405,0.067,45.0,928,Belgorado,Belgian IPA,424,12.0\n2406,0.052000000000000005,,807,Rail Yard Ale,American Amber / Red Ale,424,12.0\n2407,0.055,,620,B3K Black Lager,Schwarzbier,424,12.0\n2408,0.055,40.0,145,Silverback Pale Ale,American Pale Ale (APA),424,12.0\n2409,0.052000000000000005,,84,Rail Yard Ale (2009),American Amber / Red Ale,424,12.0\n"
  },
  {
    "path": "plugins/riot/src/test/resources/files/beers.json",
    "content": "[\n    {\n        \"id\": \"1\",\n        \"brewery_id\": \"812\",\n        \"name\": \"Hocus Pocus\",\n        \"abv\": \"4.5\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"Our take on a classic summer ale.  A toast to weeds, rays, and summer haze.  A light, crisp ale for mowing lawns, hitting lazy fly balls, and communing with nature, Hocus Pocus is offered up as a summer sacrifice to clodless days.\\n\\nIts malty sweetness finishes tart and crisp and is best apprediated with a wedge of orange.\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Light American Wheat Ale or Lager\",\n        \"cat_name\": \"Other Style\"\n    },\n    {\n        \"id\": \"6\",\n        \"brewery_id\": \"1385\",\n        \"name\": \"Winter Warmer\",\n        \"abv\": \"5.199999809265137\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Old Ale\",\n        \"cat_name\": \"British Ale\"\n    },\n    {\n        \"id\": \"8\",\n        \"brewery_id\": \"1099\",\n        \"name\": \"Oatmeal Stout\",\n        \"abv\": \"5\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Stout\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"10\",\n        \"brewery_id\": \"545\",\n        \"name\": \"Chocolate Stout\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Stout\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"13\",\n        \"brewery_id\": \"545\",\n        \"name\": \"The Kidd Lager\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"German-Style Schwarzbier\",\n        \"cat_name\": \"German Lager\"\n    },\n    {\n        \"id\": \"14\",\n        \"brewery_id\": \"1099\",\n        \"name\": \"Imperial Stout\",\n        \"abv\": \"7\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Stout\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"17\",\n        \"brewery_id\": \"1023\",\n        \"name\": \"Wiesen Edel Weisse\",\n        \"abv\": \"6.199999809265137\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"South German-Style Hefeweizen\",\n        \"cat_name\": \"German Ale\"\n    },\n    {\n        \"id\": \"20\",\n        \"brewery_id\": \"483\",\n        \"name\": \"Cow Palace Scotch Ale 1998\",\n        \"abv\": \"8.699999809265137\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Scotch Ale\",\n        \"cat_name\": \"British Ale\"\n    },\n    {\n        \"id\": \"26\",\n        \"brewery_id\": \"1220\",\n        \"name\": \"Winter Ale\",\n        \"abv\": \"5.900000095367432\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Old Ale\",\n        \"cat_name\": \"British Ale\"\n    },\n    {\n        \"id\": \"27\",\n        \"brewery_id\": \"878\",\n        \"name\": \"Full Moon Winter Ale\",\n        \"abv\": \"5.599999904632568\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"This full-bodied ale is brewed with roasted malts and a hint of Dark Belgian sugar for a perfectly balanced taste.\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Other Belgian-Style Ales\",\n        \"cat_name\": \"Belgian and French Ale\"\n    },\n    {\n        \"id\": \"28\",\n        \"brewery_id\": \"935\",\n        \"name\": \"Odell IPA\",\n        \"abv\": \"7\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"We took the traditional IPA, originally shipped from England to India in the 1700's, and made it bolder and more flavorful - American Style. We've added new varieties of highly aromatic American hops to create a distinctive bitterness profile and an incredible hop character.\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style India Pale Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"29\",\n        \"brewery_id\": \"1271\",\n        \"name\": \"Ornery Amber Lager\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"Ornery Amber is brewed with a blend of the finest European hops and gently roasted malts.\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Lager\",\n        \"cat_name\": \"North American Lager\"\n    },\n    {\n        \"id\": \"30\",\n        \"brewery_id\": \"935\",\n        \"name\": \"Cutthroat Porter\",\n        \"abv\": \"4.800000190734863\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"Not quite a stout but definitely no lightweight, Cutthroat Porter is smooth and robust. Inspired by the classic London porters, we use dark roasted malts to create a deep, rich color and flavor that hint at chocolate and coffee. We named it Cutthroat Porter as our tribute to the Colorado state fish - with its own rich heritage and unmistakable dark coloring. And while we're big fans of small batches, here's to the currently threatened Cutthroat population reaching mass quantities.\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Porter\",\n        \"cat_name\": \"Irish Ale\"\n    },\n    {\n        \"id\": \"31\",\n        \"brewery_id\": \"1271\",\n        \"name\": \"Maple Nut Brown Ale Ale\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"Maple syrup is added to each barrel of Maple Nut Brown Ale to impart roasted sweetness balancing the nut flavor produced by chocolate malts.\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Brown Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"37\",\n        \"brewery_id\": \"1175\",\n        \"name\": \"Winter Cheer\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Brown Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"40\",\n        \"brewery_id\": \"1307\",\n        \"name\": \"Quelque Chose\",\n        \"abv\": \"8\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"Quelque Chose was launched in January 1996. This versatile beer was specifically developed as a winter beer because, when warmed to 70oC (160oF), it can be taken as a hot drink. On the other hand, on the rocks, it is a wonderful aperitif. The cherries are soaked for months in slightly bitter ale before being blended into the beer. Quelque Chose is made with dark roasted malts, and the end result is something commonly known as an authentic nectar. The most original of the Unibroue line, it is highly appreciated by winter-sports enthusiasts.\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Belgian-Style Fruit Lambic\",\n        \"cat_name\": \"Belgian and French Ale\"\n    },\n    {\n        \"id\": \"42\",\n        \"brewery_id\": \"170\",\n        \"name\": \"Bière Darbyste\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Light American Wheat Ale or Lager\",\n        \"cat_name\": \"Other Style\"\n    },\n    {\n        \"id\": \"43\",\n        \"brewery_id\": \"723\",\n        \"name\": \"Maracaibo Especial\",\n        \"abv\": \"7.5\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"A rich brown ale inspired by the enigmatic monastic brews of Belgium, and the mysterious mist shrouded jungles of the tropics. Brewed with real cacao, and spiced with cinnamon and sweet orange peel for a sensual delight. A brew to be sipped, savored, and enjoyed!\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Brown Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"45\",\n        \"brewery_id\": \"723\",\n        \"name\": \"Calabaza Blanca\",\n        \"abv\": \"4.800000190734863\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"Aged in large oak casks and refermented in the bottle, Calabaza Blanca is a Belgian Biere Blanche. Spiced with orange peel and corriander, you'll find it refreshingly tart, with a wonderfully dry finish.\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Other Belgian-Style Ales\",\n        \"cat_name\": \"Belgian and French Ale\"\n    },\n    {\n        \"id\": \"46\",\n        \"brewery_id\": \"901\",\n        \"name\": \"Porter\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Porter\",\n        \"cat_name\": \"Irish Ale\"\n    },\n    {\n        \"id\": \"47\",\n        \"brewery_id\": \"901\",\n        \"name\": \"Cardinal Pale Ale\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Pale Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"50\",\n        \"brewery_id\": \"176\",\n        \"name\": \"Zinnebir\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Pale Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"57\",\n        \"brewery_id\": \"160\",\n        \"name\": \"Obovoid Empirical Stout\",\n        \"abv\": \"8\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Imperial Stout\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"58\",\n        \"brewery_id\": \"1221\",\n        \"name\": \"Furious Beer\",\n        \"abv\": \"6\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"Like Hops? You'll like this fire-hued beer. This is the beer I have always dreamed of making. This is the beer that would come to mind while spending the last two years tearing down walls, hanging sheetrock, moving kegs, power washing the ceilings, arguing with various agencies, and cutting the water main. \\n\\nWithout Golden Promise malt, made by family-owned Simpsons Malt, Furious would just be pissed off-ed. From Scotland, this malt is still produced in the tradition of turning over the barley by hand, resulting in a malt that is unsurpassed in its quality. Golden Promise is also used extensively by premium whisky distilleries such as The Macallan. This malt provides the backbone for the intense hop character. Four American hop varieties are used at a rate of over three pounds per barrel. The result is a rich malt sweetness infused with bright hop flavor and aroma from beginning to end. Oh yeah, it's about 6% alcohol and around 100 IBUs.\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style India Pale Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"59\",\n        \"brewery_id\": \"1221\",\n        \"name\": \"Bender Beer\",\n        \"abv\": \"5.099999904632568\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"This beer is an amalgamation of styles; brown/porter/apa. Five distinct malts, including two from Belgium, give this beer added complexity and depth. We also add oatmeal to this beer to give it a smooth texture not usually associated with this type of beer. We add large amounts of American finishing hops to give Bender a citrus hop aroma because... we like hops. This is a session beer weighing in around 5% alcohol and 25 IBUs. Grab one today, we think you will want another!\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Brown Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"61\",\n        \"brewery_id\": \"160\",\n        \"name\": \"Killer Penguin\",\n        \"abv\": \"10\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Barley Wine Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"62\",\n        \"brewery_id\": \"236\",\n        \"name\": \"Oatmeal Stout\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Stout\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"63\",\n        \"brewery_id\": \"935\",\n        \"name\": \"Isolation Ale\",\n        \"abv\": \"6\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"Ever been in a warm, cozy cabin and had a secret desire to get snowed in? To celebrate the winter season, we offer our Isolation Ale - a traditional winter brew made with premium malts imported from England. It's just one of the reasons Isolation Ale stands alone.\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Winter Warmer\",\n        \"cat_name\": \"Other Style\"\n    },\n    {\n        \"id\": \"66\",\n        \"brewery_id\": \"670\",\n        \"name\": \"Twelve Days\",\n        \"abv\": \"5.5\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Stout\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"68\",\n        \"brewery_id\": \"905\",\n        \"name\": \"Big Shot Seasonal Ale\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Porter\",\n        \"cat_name\": \"Irish Ale\"\n    },\n    {\n        \"id\": \"69\",\n        \"brewery_id\": \"923\",\n        \"name\": \"God Jul - Winter Ale\",\n        \"abv\": \"8.5\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"A dark ale brewed specially for the Christmas season, with a rich, complex taste of caramel. This is a strong, dark and rather sweet Christmas Beer – just the way we think a Christmas beer should be.\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Stout\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"70\",\n        \"brewery_id\": \"1142\",\n        \"name\": \"Harvest Ale 2007\",\n        \"abv\": \"6.699999809265137\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Pale Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"71\",\n        \"brewery_id\": \"161\",\n        \"name\": \"Nut Cracker Ale\",\n        \"abv\": \"5.900000095367432\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"Nutcracker Ale is Boulevardâ€TMs holiday gift for real beer lovers. This hearty, warming brew is a classic winter ale, deep amber in color, with hints of molasses balanced by the â€œspicinessâ€ of freshly harvested Chinook hops.\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Winter Warmer\",\n        \"cat_name\": \"Other Style\"\n    },\n    {\n        \"id\": \"72\",\n        \"brewery_id\": \"779\",\n        \"name\": \"Goosinator Smoked Doppelbock 2007\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Lager\",\n        \"cat_name\": \"North American Lager\"\n    },\n    {\n        \"id\": \"74\",\n        \"brewery_id\": \"779\",\n        \"name\": \"Warrior IPA\",\n        \"abv\": \"6.599999904632568\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style India Pale Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"78\",\n        \"brewery_id\": \"266\",\n        \"name\": \"Petrus Dubbel Bruin Ale\",\n        \"abv\": \"6.5\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Belgian-Style Dubbel\",\n        \"cat_name\": \"Belgian and French Ale\"\n    },\n    {\n        \"id\": \"79\",\n        \"brewery_id\": \"266\",\n        \"name\": \"Petrus Speciale\",\n        \"abv\": \"5.5\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Pale Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"80\",\n        \"brewery_id\": \"1202\",\n        \"name\": \"Weizengold Hefefein\",\n        \"abv\": \"5.099999904632568\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"Stiegl Weizengold. It has 12o original gravity; the choicest ingredients and a top fermentation process are responsible for the highest possible quality and an unmistakable flavor. It is brewed according to the classic wheat beer recipe: 60 % wheat malt and 40 % barley malt, top fermentation and in compliance with the Purity Law of 1516.  This fine yeast wheat beer specialty is a refreshing, natural and stimulating beer brand.\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"South German-Style Hefeweizen\",\n        \"cat_name\": \"German Ale\"\n    },\n    {\n        \"id\": \"81\",\n        \"brewery_id\": \"160\",\n        \"name\": \"Never Summer Ale\",\n        \"abv\": \"5.940000057220459\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Winter Warmer\",\n        \"cat_name\": \"Other Style\"\n    },\n    {\n        \"id\": \"82\",\n        \"brewery_id\": \"1264\",\n        \"name\": \"Modern Monks Belgian Blonde\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Pale Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"84\",\n        \"brewery_id\": \"210\",\n        \"name\": \"Jörger Weiße Hell\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"South German-Style Hefeweizen\",\n        \"cat_name\": \"German Ale\"\n    },\n    {\n        \"id\": \"87\",\n        \"brewery_id\": \"1047\",\n        \"name\": \"Glacier Ale\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Amber/Red Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"88\",\n        \"brewery_id\": \"1047\",\n        \"name\": \"Bent Nail IPA\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style India Pale Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"90\",\n        \"brewery_id\": \"879\",\n        \"name\": \"Harvest Ale\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Pale Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"92\",\n        \"brewery_id\": \"879\",\n        \"name\": \"Sharptail Pale Ale\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Pale Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"93\",\n        \"brewery_id\": \"879\",\n        \"name\": \"Fat Belly Amber\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Amber/Red Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"94\",\n        \"brewery_id\": \"879\",\n        \"name\": \"Whitetail Wheat\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Lager\",\n        \"cat_name\": \"North American Lager\"\n    },\n    {\n        \"id\": \"96\",\n        \"brewery_id\": \"901\",\n        \"name\": \"Brunette Nut Brown Ale\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Brown Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"99\",\n        \"brewery_id\": \"901\",\n        \"name\": \"EOS Hefeweizen\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"South German-Style Hefeweizen\",\n        \"cat_name\": \"German Ale\"\n    },\n    {\n        \"id\": \"100\",\n        \"brewery_id\": \"901\",\n        \"name\": \"India Pale Ale\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Pale Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"101\",\n        \"brewery_id\": \"1185\",\n        \"name\": \"Winter Ale\",\n        \"abv\": \"6.300000190734863\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Old Ale\",\n        \"cat_name\": \"British Ale\"\n    },\n    {\n        \"id\": \"102\",\n        \"brewery_id\": \"1260\",\n        \"name\": \"Pride & Joy Mild Ale\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"English-Style Pale Mild Ale\",\n        \"cat_name\": \"British Ale\"\n    },\n    {\n        \"id\": \"103\",\n        \"brewery_id\": \"1260\",\n        \"name\": \"Robert the Bruce Scottish Ale\",\n        \"abv\": \"7\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"A big malty body from chocolate and roasted malts, well balanced with just the right combination of hops. Robust yet smooth, a true malt-lover's delight.\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Scotch Ale\",\n        \"cat_name\": \"British Ale\"\n    },\n    {\n        \"id\": \"104\",\n        \"brewery_id\": \"1056\",\n        \"name\": \"Lump of Coal Dark Holiday Stout\",\n        \"abv\": \"8\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Stout\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"105\",\n        \"brewery_id\": \"1056\",\n        \"name\": \"Warm Welcome Nut Browned Ale\",\n        \"abv\": \"6\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Brown Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"106\",\n        \"brewery_id\": \"884\",\n        \"name\": \"Pendle Witches Brew\",\n        \"abv\": \"5.099999904632568\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Pale Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"107\",\n        \"brewery_id\": \"345\",\n        \"name\": \"Carnegie Stark-Porter\",\n        \"abv\": \"5.5\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Porter\",\n        \"cat_name\": \"Irish Ale\"\n    },\n    {\n        \"id\": \"108\",\n        \"brewery_id\": \"727\",\n        \"name\": \"Harvest Ale 2002\",\n        \"abv\": \"11.5\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Old Ale\",\n        \"cat_name\": \"British Ale\"\n    },\n    {\n        \"id\": \"109\",\n        \"brewery_id\": \"1075\",\n        \"name\": \"Woody Organic IPA\",\n        \"abv\": \"6.199999809265137\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style India Pale Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"111\",\n        \"brewery_id\": \"304\",\n        \"name\": \"Leute Bok Bier\",\n        \"abv\": \"7.5\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Traditional German-Style Bock\",\n        \"cat_name\": \"German Lager\"\n    },\n    {\n        \"id\": \"114\",\n        \"brewery_id\": \"304\",\n        \"name\": \"Tikka Gold\",\n        \"abv\": \"5\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Pale Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"121\",\n        \"brewery_id\": \"481\",\n        \"name\": \"Triple Exultation Old Ale\",\n        \"abv\": \"9.699999809265137\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Old Ale\",\n        \"cat_name\": \"British Ale\"\n    },\n    {\n        \"id\": \"123\",\n        \"brewery_id\": \"1064\",\n        \"name\": \"Falcon Pale Ale\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Pale Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"124\",\n        \"brewery_id\": \"441\",\n        \"name\": \"Buzzsaw Brown\",\n        \"abv\": \"4.800000190734863\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"By 1915, Bend, Oregon, was alive with the sound of the buzz saw, as two of the country's largest pine sawmills set up shop on the banks of the Deschutes River.  The mills are  gone now, but the smokestacks still stand testament to Bend's humble beginnings. \\n\\nBuzzsaw Brown is an easy-drinking beer that is refreshing after a hard day's work. The timber mills in Bend may be closed, but whether your adventure includes a day of scaling rock faces, hitting 18 holes or skiing the slopes in spring, Buzzsaw Brown is the perfect end to a fun-filled day.\\n\\nâ€œBuzzsaw Brown is one of my favorite beers,â€ says Deschutes Brewery Brewmaster Larry Sidor. â€œThe unique combination of European and American malts makes it a very food friendly beer that pairs well with a wide variety of flavors.â€\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Brown Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"125\",\n        \"brewery_id\": \"369\",\n        \"name\": \"Eisenbahn South American Pale Ale (S.A.P.A.)\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Pale Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"126\",\n        \"brewery_id\": \"584\",\n        \"name\": \"Geist Bock\",\n        \"abv\": \"6.099999904632568\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"This is one of our rare lagers brewed in the style of the German Heiliges Geist Bock, or Holy Ghost Bock. The name refers to the lighter nature of the beer as opposed to the darker and heavier Doppel Bock and Mai Bock also brewed during the spring in Germany. There is a rich malt flavor, a firm German style lager head, and a clean lagered finish to this beer.  Available on draft or in 12 oz. bottles.\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Traditional German-Style Bock\",\n        \"cat_name\": \"German Lager\"\n    },\n    {\n        \"id\": \"127\",\n        \"brewery_id\": \"623\",\n        \"name\": \"Troll Porter\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Porter\",\n        \"cat_name\": \"Irish Ale\"\n    },\n    {\n        \"id\": \"128\",\n        \"brewery_id\": \"397\",\n        \"name\": \"Dark Ale\",\n        \"abv\": \"4.5\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"A dark brew full of promise. Coopers Dark Ale is a journey in taste, starting fresh and creamy, and finishing with a lingering coffee flavour. \\n\\nConditioned and naturally brewed using the top fermentation method, Coopers 'Dark' is made using roasted and chocolate malts, giving it a rich dark colour and unique flavour. \\n\\nCoopers Dark Ale has no additives and no preservatives.\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"English-Style Pale Mild Ale\",\n        \"cat_name\": \"British Ale\"\n    },\n    {\n        \"id\": \"129\",\n        \"brewery_id\": \"441\",\n        \"name\": \"Cinder Cone Red\",\n        \"abv\": \"5.400000095367432\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"Cinder Cone Red's diverse selection of hops and barley captivates thirsty palates with its toffee-like flavor, intense citrus aroma and defined bitterness.\\n\\nLocated on the northern slope of Mt. Bachelor, the Cinder Cone was also known as \\\"Red Hill\\\" due to its reddish color that is revealed as the seasons change, the weather warms and the snow melts.  It's spring. Time to get outside.\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Amber/Red Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"130\",\n        \"brewery_id\": \"562\",\n        \"name\": \"LTD 02 Lager\",\n        \"abv\": \"6.400000095367432\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Traditional German-Style Bock\",\n        \"cat_name\": \"German Lager\"\n    },\n    {\n        \"id\": \"134\",\n        \"brewery_id\": \"622\",\n        \"name\": \"Blue Dot Double India Pale Ale\",\n        \"abv\": \"7\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Imperial or Double India Pale Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"135\",\n        \"brewery_id\": \"562\",\n        \"name\": \"Nugget\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Amber/Red Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"136\",\n        \"brewery_id\": \"1175\",\n        \"name\": \"American Pale Ale\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Pale Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"138\",\n        \"brewery_id\": \"935\",\n        \"name\": \"Odell Red Ale\",\n        \"abv\": \"6.5\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"The Rocky Mountain Goat is no ordinary goat. Just like Odell Red is no ordinary red. \\n\\nWe took the American-style red to a whole new level by adding a variety of aggressive American hops—giving this ale a distinctive fresh hop aroma and flavor. \\n\\nWe think you'll agree this red has some serious kick.\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Amber/Red Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"142\",\n        \"brewery_id\": \"447\",\n        \"name\": \"Pale Ale\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Pale Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"143\",\n        \"brewery_id\": \"447\",\n        \"name\": \"Silk Lady\",\n        \"abv\": \"4.400000095367432\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Pale Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"144\",\n        \"brewery_id\": \"447\",\n        \"name\": \"Danger Ale\",\n        \"abv\": \"5.199999809265137\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Brown Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"146\",\n        \"brewery_id\": \"1392\",\n        \"name\": \"Yeti Special Export\",\n        \"abv\": \"7\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Lager\",\n        \"cat_name\": \"North American Lager\"\n    },\n    {\n        \"id\": \"147\",\n        \"brewery_id\": \"1151\",\n        \"name\": \"Steelie Brown Ale\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Brown Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"149\",\n        \"brewery_id\": \"1151\",\n        \"name\": \"Trumpeter\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Stout\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"150\",\n        \"brewery_id\": \"1264\",\n        \"name\": \"Nitro Porter\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Porter\",\n        \"cat_name\": \"Irish Ale\"\n    },\n    {\n        \"id\": \"152\",\n        \"brewery_id\": \"919\",\n        \"name\": \"Old Stock Ale 2007\",\n        \"abv\": \"11.699999809265137\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Old Ale\",\n        \"cat_name\": \"British Ale\"\n    },\n    {\n        \"id\": \"153\",\n        \"brewery_id\": \"160\",\n        \"name\": \"Cold Hop\",\n        \"abv\": \"6.5\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"English-Style India Pale Ale\",\n        \"cat_name\": \"British Ale\"\n    },\n    {\n        \"id\": \"157\",\n        \"brewery_id\": \"723\",\n        \"name\": \"Biere de Mars\",\n        \"abv\": \"7\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"A sustaining beer that is brewed to comfort in the gusty ides of March and welcome in a wealth of warmer weather.\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Old Ale\",\n        \"cat_name\": \"British Ale\"\n    },\n    {\n        \"id\": \"161\",\n        \"brewery_id\": \"869\",\n        \"name\": \"Smoked Hefe\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Lager\",\n        \"cat_name\": \"North American Lager\"\n    },\n    {\n        \"id\": \"162\",\n        \"brewery_id\": \"1084\",\n        \"name\": \"The Unforgiven Amber Ale\",\n        \"abv\": \"5.800000190734863\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Amber/Red Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"164\",\n        \"brewery_id\": \"595\",\n        \"name\": \"Duke IPA\",\n        \"abv\": \"5.099999904632568\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style India Pale Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"165\",\n        \"brewery_id\": \"595\",\n        \"name\": \"Broad Axe Stout\",\n        \"abv\": \"5\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Stout\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"166\",\n        \"brewery_id\": \"595\",\n        \"name\": \"Northern Light Lager\",\n        \"abv\": \"4.400000095367432\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Lager\",\n        \"cat_name\": \"North American Lager\"\n    },\n    {\n        \"id\": \"167\",\n        \"brewery_id\": \"31\",\n        \"name\": \"Podge Belgian Imperial Stout\",\n        \"abv\": \"10.5\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Stout\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"168\",\n        \"brewery_id\": \"307\",\n        \"name\": \"Okocim Porter\",\n        \"abv\": \"8.300000190734863\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Porter\",\n        \"cat_name\": \"Irish Ale\"\n    },\n    {\n        \"id\": \"177\",\n        \"brewery_id\": \"723\",\n        \"name\": \"Luciérnaga\",\n        \"abv\": \"6.5\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"An artisan pale ale brewed in the Grand Cru tradition. Enjoy its golden effervescence and gentle hop aroma. Coriander and Grains of Paradise round out the spicy palate, melting o so softly into a silken finish of hoppiness and bliss! Make any season a celebration!\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Belgian-Style Pale Ale\",\n        \"cat_name\": \"Belgian and French Ale\"\n    },\n    {\n        \"id\": \"178\",\n        \"brewery_id\": \"202\",\n        \"name\": \"Cuvée des Champions 2003-2004\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Belgian-Style Fruit Lambic\",\n        \"cat_name\": \"Belgian and French Ale\"\n    },\n    {\n        \"id\": \"179\",\n        \"brewery_id\": \"859\",\n        \"name\": \"Beer Geek Breakfast\",\n        \"abv\": \"7.5\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"Breakfast is the most important meal of the day, many say, and if you are a beer geek there is no better way to start the day than with a powerful, complex morning stout. The unique mix of oats and coffee gives this beer large body and power, while the coffee, at the same time, creates a nice balance.\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Imperial Stout\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"181\",\n        \"brewery_id\": \"39\",\n        \"name\": \"Bock\",\n        \"abv\": \"5.5\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Traditional German-Style Bock\",\n        \"cat_name\": \"German Lager\"\n    },\n    {\n        \"id\": \"182\",\n        \"brewery_id\": \"810\",\n        \"name\": \"Double India Pale Ale\",\n        \"abv\": \"8.600000381469727\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Pale Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"185\",\n        \"brewery_id\": \"481\",\n        \"name\": \"Certified Organic India Pale Ale\",\n        \"abv\": \"7\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Pale Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"186\",\n        \"brewery_id\": \"481\",\n        \"name\": \"Certified Organic Porter\",\n        \"abv\": \"5.5\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Porter\",\n        \"cat_name\": \"Irish Ale\"\n    },\n    {\n        \"id\": \"188\",\n        \"brewery_id\": \"481\",\n        \"name\": \"Certified Organic Amber Ale\",\n        \"abv\": \"4.800000190734863\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"Eel River Brewing Company, brewers of California's first Certified Organic Ale, proudly brings you our Organic Amber Ale. Unique in flavor and purity, this medium bodied beer has a hoppy bouquet and a distinctive rich taste with a caramel-like sweetness that is balanced with a liberal dose of certified organic Pacific Gems and Hallertau hops, imported from New Zealand. Pure taste, pure ingredients, pure good.\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Amber/Red Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"190\",\n        \"brewery_id\": \"255\",\n        \"name\": \"Beer Town Brown\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Brown Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"192\",\n        \"brewery_id\": \"62\",\n        \"name\": \"Mephistopheles Stout\",\n        \"abv\": \"16.030000686645508\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Stout\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"193\",\n        \"brewery_id\": \"923\",\n        \"name\": \"Nøgne Ø Brown Ale\",\n        \"abv\": \"4.5\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"A dark brown English ale, in which classic English malts meet the spicy hoppiness of the new world.  Recommended serving temperature 8°C/45°F. Goes very well with 'pub grub.'\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Brown Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"196\",\n        \"brewery_id\": \"1136\",\n        \"name\": \"Export Ale\",\n        \"abv\": \"5.099999904632568\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Pale Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"201\",\n        \"brewery_id\": \"765\",\n        \"name\": \"Undercover Investigation Shut-Down Ale\",\n        \"abv\": \"9.279999732971191\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Pale Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"202\",\n        \"brewery_id\": \"727\",\n        \"name\": \"Harvest Ale 2006\",\n        \"abv\": \"11.600000381469727\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Old Ale\",\n        \"cat_name\": \"British Ale\"\n    },\n    {\n        \"id\": \"203\",\n        \"brewery_id\": \"202\",\n        \"name\": \"Classic Gueuze\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Belgian-Style Fruit Lambic\",\n        \"cat_name\": \"Belgian and French Ale\"\n    },\n    {\n        \"id\": \"204\",\n        \"brewery_id\": \"1315\",\n        \"name\": \"Gueuze-Lambic\",\n        \"abv\": \"6.5\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Belgian-Style Fruit Lambic\",\n        \"cat_name\": \"Belgian and French Ale\"\n    },\n    {\n        \"id\": \"205\",\n        \"brewery_id\": \"484\",\n        \"name\": \"Schwarzbier / Dunkel\",\n        \"abv\": \"4.900000095367432\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"German-Style Schwarzbier\",\n        \"cat_name\": \"German Lager\"\n    },\n    {\n        \"id\": \"206\",\n        \"brewery_id\": \"779\",\n        \"name\": \"Sawtooth Ale\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Pale Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"208\",\n        \"brewery_id\": \"935\",\n        \"name\": \"90 Shilling\",\n        \"abv\": \"5.300000190734863\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"We introduced 90 Shilling, our flagship beer, at our opening party in 1989. For a while, we'd been wondering - what would happen if we lightened up the traditional Scottish ale? The result is an irresistibly smooth and delicious medium-bodied amber ale. The name 90 Shilling comes from the Scottish method of taxing beer. Only the highest quality beers were taxed 90 Shillings. A shilling was a British coin used from 1549 to 1982. We think you'll find this original ale brilliantly refreshing, and worth every shilling.\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Scottish-Style Light Ale\",\n        \"cat_name\": \"British Ale\"\n    },\n    {\n        \"id\": \"209\",\n        \"brewery_id\": \"905\",\n        \"name\": \"Sunshine Wheat\",\n        \"abv\": \"4.800000190734863\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"SUNSHINE WHEAT is a great beer for trouncing thirst.  Yet, it has a depth of character that inspires a quiet moment's reflection. Sunshine Wheat swirls in the mouth with ripples of coriander and orange peel tartness, settling nicely into a tranquil sea of apple and honey tones.  A filtered wheat beer, Sunshine offers a crisp, refreshing alternative to heavier-bodied heffe-weizens.\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Light American Wheat Ale or Lager\",\n        \"cat_name\": \"Other Style\"\n    },\n    {\n        \"id\": \"211\",\n        \"brewery_id\": \"70\",\n        \"name\": \"Der Weisse Bock\",\n        \"abv\": \"8.5\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"South German-Style Weizenbock\",\n        \"cat_name\": \"German Ale\"\n    },\n    {\n        \"id\": \"213\",\n        \"brewery_id\": \"779\",\n        \"name\": \"Black Jack Porter\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Porter\",\n        \"cat_name\": \"Irish Ale\"\n    },\n    {\n        \"id\": \"214\",\n        \"brewery_id\": \"161\",\n        \"name\": \"Lunar Ale\",\n        \"abv\": \"5.099999904632568\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"Our first new year-round brand launch since 1996, Lunar Ale is in a category all its own. Brewed using a unique aromatic yeast, this refreshing variety is best described as a cloudy brown ale with a complex, malty aroma and flavor, and a crisp, dry finish.\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Brown Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"215\",\n        \"brewery_id\": \"604\",\n        \"name\": \"Denver Pale Ale / DPA\",\n        \"abv\": \"5.400000095367432\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"Historically Great Divide's flagship beer, DPA's record speaks for itself. By continually garnering national and international recognition, DPA has risen to become one of the most award-winning English-style pale ales in the world.\\n\\nSporting a brilliant copper hue and an assertive floral hop aroma, DPA is known for its smooth, malty middle, which is expertly complemented with hearty and complex hop flavor. DPA's extraordinary hop finish is marked by crisp yet moderate hop bitterness. Its well-balanced profile makes DPA the perfect beer to accompany a hearty mountain picnic or a night on the town. For those who seek beers characterized by excitement, flavor and distinction, Denver Pale Ale is the natural choice.\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Pale Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"216\",\n        \"brewery_id\": \"296\",\n        \"name\": \"Grotten Flemish Ale\",\n        \"abv\": \"7.699999809265137\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Other Belgian-Style Ales\",\n        \"cat_name\": \"Belgian and French Ale\"\n    },\n    {\n        \"id\": \"221\",\n        \"brewery_id\": \"296\",\n        \"name\": \"Pater 6\",\n        \"abv\": \"6.699999809265137\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"This name became a reference. This beer is mostly pointed out with its product name: â€œa Paterkeâ€. \\n\\nThis â€œPaterkeâ€ is a chestnut coloured dark beer with a high fermentation (6.7 alcohol content) and a full taste.\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Belgian-Style Dubbel\",\n        \"cat_name\": \"Belgian and French Ale\"\n    },\n    {\n        \"id\": \"223\",\n        \"brewery_id\": \"905\",\n        \"name\": \"Skinny Dip\",\n        \"abv\": \"4.199999809265137\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"Ever tried a Skinny Dip? You wouldn't be alone. Featured by both Men's Journal and the Today Show as a favorite summer brew, this full-bodied, highly drinkable beer makes a splash every summer in our Seasonal line-up. Cascade hops frolic with a hint of lime leaf, giving the beer complexity that's surprisingly refreshing.\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Golden or Blonde Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"229\",\n        \"brewery_id\": \"1056\",\n        \"name\": \"IPA\",\n        \"abv\": \"5.5\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style India Pale Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"231\",\n        \"brewery_id\": \"935\",\n        \"name\": \"Double Pilsner\",\n        \"abv\": \"8.100000381469727\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Lager\",\n        \"cat_name\": \"North American Lager\"\n    },\n    {\n        \"id\": \"232\",\n        \"brewery_id\": \"708\",\n        \"name\": \"Creamy Dark\",\n        \"abv\": \"4.900000095367432\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Lager\",\n        \"cat_name\": \"North American Lager\"\n    },\n    {\n        \"id\": \"234\",\n        \"brewery_id\": \"590\",\n        \"name\": \"Stüvenbräu Maibock\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Traditional German-Style Bock\",\n        \"cat_name\": \"German Lager\"\n    },\n    {\n        \"id\": \"235\",\n        \"brewery_id\": \"590\",\n        \"name\": \"Jack of Spades Schwarzbier\",\n        \"abv\": \"3.9000000953674316\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"German-Style Schwarzbier\",\n        \"cat_name\": \"German Lager\"\n    },\n    {\n        \"id\": \"236\",\n        \"brewery_id\": \"1179\",\n        \"name\": \"Shiner Hefeweizen\",\n        \"abv\": \"5.400000095367432\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"South German-Style Hefeweizen\",\n        \"cat_name\": \"German Ale\"\n    },\n    {\n        \"id\": \"237\",\n        \"brewery_id\": \"1154\",\n        \"name\": \"Sapporo Premium Beer\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Lager\",\n        \"cat_name\": \"North American Lager\"\n    },\n    {\n        \"id\": \"242\",\n        \"brewery_id\": \"1274\",\n        \"name\": \"New\",\n        \"abv\": \"4.599999904632568\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Lager\",\n        \"cat_name\": \"North American Lager\"\n    },\n    {\n        \"id\": \"244\",\n        \"brewery_id\": \"369\",\n        \"name\": \"Eisenbahn Escura\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"German-Style Schwarzbier\",\n        \"cat_name\": \"German Lager\"\n    },\n    {\n        \"id\": \"246\",\n        \"brewery_id\": \"501\",\n        \"name\": \"Fallen Angel Sweet Stout\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Stout\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"247\",\n        \"brewery_id\": \"604\",\n        \"name\": \"Hot Shot ESB\",\n        \"abv\": \"5\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"HotShot ESB is an easy-drinking and remarkably smooth Extra Special Bitter, brewed in the classic-English style. More assertively hopped than ordinary bitters, light copper-colored HotShot showcases clean hop flavors, balanced by its slightly fruity nose and light-caramel malt character.\\n\\nWhile HotShot is one of Great Divide's easiest-drinking and lower alcohol beers, its complex flavor profile makes it the perfect session beer for craft beer lovers.\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Extra Special Bitter\",\n        \"cat_name\": \"British Ale\"\n    },\n    {\n        \"id\": \"248\",\n        \"brewery_id\": \"312\",\n        \"name\": \"Porter\",\n        \"abv\": \"8\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Porter\",\n        \"cat_name\": \"Irish Ale\"\n    },\n    {\n        \"id\": \"249\",\n        \"brewery_id\": \"923\",\n        \"name\": \"Nøgne Ø Imperial Stout\",\n        \"abv\": \"9\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"We think the russian tsar would have liked his stout this way. A dark, rich ale in which a generous sweetness with roasted malt bitterness.  Serving temp.10°C/50°F. Great with vanilla ice cream or dark chocolate.\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Imperial Stout\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"250\",\n        \"brewery_id\": \"923\",\n        \"name\": \"Nøgne Ø Porter\",\n        \"abv\": \"7\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"In this quite dark ale, dark malts provide flavors of coffee and dried fruit. Recommended serving temperature 10°C/50°F.  Try with dark chocolate, cheese, or red meat dishes.\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Porter\",\n        \"cat_name\": \"Irish Ale\"\n    },\n    {\n        \"id\": \"251\",\n        \"brewery_id\": \"923\",\n        \"name\": \"Nøgne Ø Pale Ale\",\n        \"abv\": \"6\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"A refreshing light and hoppy ale. Probably our best allrounder.  Recommended serving temperature 8°C/45°F.  Ideal with barbequed or smoked meat dishes.\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Pale Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"253\",\n        \"brewery_id\": \"1265\",\n        \"name\": \"Oatmeal Stout\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Stout\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"254\",\n        \"brewery_id\": \"1265\",\n        \"name\": \"Amber Light\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Lager\",\n        \"cat_name\": \"North American Lager\"\n    },\n    {\n        \"id\": \"255\",\n        \"brewery_id\": \"1265\",\n        \"name\": \"New World Wheat\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Lager\",\n        \"cat_name\": \"North American Lager\"\n    },\n    {\n        \"id\": \"256\",\n        \"brewery_id\": \"1265\",\n        \"name\": \"Maibock\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Traditional German-Style Bock\",\n        \"cat_name\": \"German Lager\"\n    },\n    {\n        \"id\": \"257\",\n        \"brewery_id\": \"1265\",\n        \"name\": \"Ironwood Dark\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Brown Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"258\",\n        \"brewery_id\": \"1265\",\n        \"name\": \"Cascade Amber\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Amber/Red Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"260\",\n        \"brewery_id\": \"624\",\n        \"name\": \"Illuminator Doppelbock\",\n        \"abv\": \"6.800000190734863\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Traditional German-Style Bock\",\n        \"cat_name\": \"German Lager\"\n    },\n    {\n        \"id\": \"261\",\n        \"brewery_id\": \"624\",\n        \"name\": \"Old Princeton Landing IPA\",\n        \"abv\": \"6.099999904632568\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style India Pale Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"262\",\n        \"brewery_id\": \"624\",\n        \"name\": \"Paddle Out Stout\",\n        \"abv\": \"5.199999809265137\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Stout\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"263\",\n        \"brewery_id\": \"624\",\n        \"name\": \"Pillar Point Pale Ale\",\n        \"abv\": \"4.599999904632568\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Pale Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"264\",\n        \"brewery_id\": \"624\",\n        \"name\": \"Sandy Beach Blonde Hefeweizen\",\n        \"abv\": \"4.5\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"South German-Style Hefeweizen\",\n        \"cat_name\": \"German Ale\"\n    },\n    {\n        \"id\": \"265\",\n        \"brewery_id\": \"624\",\n        \"name\": \"Mavericks Amber Ale\",\n        \"abv\": \"4.800000190734863\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Amber/Red Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"268\",\n        \"brewery_id\": \"1126\",\n        \"name\": \"Oatmeal Stout\",\n        \"abv\": \"6\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Stout\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"269\",\n        \"brewery_id\": \"1126\",\n        \"name\": \"Amber\",\n        \"abv\": \"5\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Amber/Red Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"270\",\n        \"brewery_id\": \"1126\",\n        \"name\": \"Blur IPA\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style India Pale Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"271\",\n        \"brewery_id\": \"1126\",\n        \"name\": \"Pelican Pale\",\n        \"abv\": \"5\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Pale Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"272\",\n        \"brewery_id\": \"1126\",\n        \"name\": \"Brew Ribbon\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Lager\",\n        \"cat_name\": \"North American Lager\"\n    },\n    {\n        \"id\": \"273\",\n        \"brewery_id\": \"701\",\n        \"name\": \"Casey Jones Imperial IPA\",\n        \"abv\": \"7.25\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style India Pale Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"275\",\n        \"brewery_id\": \"701\",\n        \"name\": \"Epiphany Ale\",\n        \"abv\": \"5.5\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Amber/Red Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"276\",\n        \"brewery_id\": \"701\",\n        \"name\": \"IPA\",\n        \"abv\": \"6\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style India Pale Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"277\",\n        \"brewery_id\": \"701\",\n        \"name\": \"Chazz Cat Rye\",\n        \"abv\": \"4.5\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Lager\",\n        \"cat_name\": \"North American Lager\"\n    },\n    {\n        \"id\": \"278\",\n        \"brewery_id\": \"701\",\n        \"name\": \"Shining Star Pale Ale\",\n        \"abv\": \"5\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Pale Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"279\",\n        \"brewery_id\": \"701\",\n        \"name\": \"Honey Bunny Blonde Ale\",\n        \"abv\": \"5.800000190734863\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Lager\",\n        \"cat_name\": \"North American Lager\"\n    },\n    {\n        \"id\": \"282\",\n        \"brewery_id\": \"892\",\n        \"name\": \"Irish Dry Stout\",\n        \"abv\": \"4.800000190734863\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Stout\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"283\",\n        \"brewery_id\": \"892\",\n        \"name\": \"Kilt Lifter Scottish Ale\",\n        \"abv\": \"8\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Scotch Ale\",\n        \"cat_name\": \"British Ale\"\n    },\n    {\n        \"id\": \"284\",\n        \"brewery_id\": \"892\",\n        \"name\": \"India Pale Ale\",\n        \"abv\": \"6.5\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Pale Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"285\",\n        \"brewery_id\": \"588\",\n        \"name\": \"Blonde Bock\",\n        \"abv\": \"7\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Traditional German-Style Bock\",\n        \"cat_name\": \"German Lager\"\n    },\n    {\n        \"id\": \"286\",\n        \"brewery_id\": \"588\",\n        \"name\": \"Schwarzbier\",\n        \"abv\": \"4.300000190734863\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"German-Style Schwarzbier\",\n        \"cat_name\": \"German Lager\"\n    },\n    {\n        \"id\": \"288\",\n        \"brewery_id\": \"385\",\n        \"name\": \"Yule Tide\",\n        \"abv\": \"10\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"The latest addition to Baltimore's own Clipper City Brewing Company - Mutiny Fleet is their holiday brew Yule Tide, a Belgian style triple ale, which like the rest of the Mutiny Fleet is distributed in 22 ounce bombers.\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Belgian-Style Tripel\",\n        \"cat_name\": \"Belgian and French Ale\"\n    },\n    {\n        \"id\": \"290\",\n        \"brewery_id\": \"308\",\n        \"name\": \"Warka Strong\",\n        \"abv\": \"7\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"European Strong Lager\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Lager\",\n        \"cat_name\": \"North American Lager\"\n    },\n    {\n        \"id\": \"291\",\n        \"brewery_id\": \"1074\",\n        \"name\": \"Porter\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Porter\",\n        \"cat_name\": \"Irish Ale\"\n    },\n    {\n        \"id\": \"293\",\n        \"brewery_id\": \"1074\",\n        \"name\": \"Pale Ale\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Pale Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"294\",\n        \"brewery_id\": \"1074\",\n        \"name\": \"Kristall Weizen\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Lager\",\n        \"cat_name\": \"North American Lager\"\n    },\n    {\n        \"id\": \"296\",\n        \"brewery_id\": \"677\",\n        \"name\": \"Paint the Town Red\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Amber/Red Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"298\",\n        \"brewery_id\": \"1004\",\n        \"name\": \"Train Wreck IPA\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style India Pale Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"299\",\n        \"brewery_id\": \"1004\",\n        \"name\": \"Zone 7 Porter\",\n        \"abv\": \"3.799999952316284\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Porter\",\n        \"cat_name\": \"Irish Ale\"\n    },\n    {\n        \"id\": \"300\",\n        \"brewery_id\": \"1004\",\n        \"name\": \"Pleasanton Pale\",\n        \"abv\": \"5.300000190734863\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Pale Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"301\",\n        \"brewery_id\": \"1004\",\n        \"name\": \"Island Wheat\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Lager\",\n        \"cat_name\": \"North American Lager\"\n    },\n    {\n        \"id\": \"302\",\n        \"brewery_id\": \"707\",\n        \"name\": \"Hefeweizen\",\n        \"abv\": \"5.599999904632568\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"South German-Style Hefeweizen\",\n        \"cat_name\": \"German Ale\"\n    },\n    {\n        \"id\": \"304\",\n        \"brewery_id\": \"707\",\n        \"name\": \"Penalty Shot Porter\",\n        \"abv\": \"5.800000190734863\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Porter\",\n        \"cat_name\": \"Irish Ale\"\n    },\n    {\n        \"id\": \"305\",\n        \"brewery_id\": \"707\",\n        \"name\": \"India Pale Ale\",\n        \"abv\": \"7.5\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Pale Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"306\",\n        \"brewery_id\": \"707\",\n        \"name\": \"Grid Iron Amber Ale\",\n        \"abv\": \"5.599999904632568\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Amber/Red Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"307\",\n        \"brewery_id\": \"707\",\n        \"name\": \"Boys of Summer Wheat\",\n        \"abv\": \"3.5\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Lager\",\n        \"cat_name\": \"North American Lager\"\n    },\n    {\n        \"id\": \"308\",\n        \"brewery_id\": \"523\",\n        \"name\": \"Pale Ale\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Pale Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"309\",\n        \"brewery_id\": \"523\",\n        \"name\": \"Red Ale\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Amber/Red Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"310\",\n        \"brewery_id\": \"523\",\n        \"name\": \"Hefeweizen\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Lager\",\n        \"cat_name\": \"North American Lager\"\n    },\n    {\n        \"id\": \"312\",\n        \"brewery_id\": \"523\",\n        \"name\": \"Double IPA\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style India Pale Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"313\",\n        \"brewery_id\": \"133\",\n        \"name\": \"Tatonka Stout\",\n        \"abv\": \"8.5\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Imperial Stout\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"314\",\n        \"brewery_id\": \"133\",\n        \"name\": \"P.M. Porter\",\n        \"abv\": \"6.400000095367432\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Porter\",\n        \"cat_name\": \"Irish Ale\"\n    },\n    {\n        \"id\": \"315\",\n        \"brewery_id\": \"133\",\n        \"name\": \"Jeremiah Red\",\n        \"abv\": \"7.300000190734863\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Irish-Style Red Ale\",\n        \"cat_name\": \"Irish Ale\"\n    },\n    {\n        \"id\": \"316\",\n        \"brewery_id\": \"133\",\n        \"name\": \"Piranha Pale Ale\",\n        \"abv\": \"5.699999809265137\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Pale Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"317\",\n        \"brewery_id\": \"133\",\n        \"name\": \"Harvest Hefeweizen\",\n        \"abv\": \"4.900000095367432\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"South German-Style Hefeweizen\",\n        \"cat_name\": \"German Ale\"\n    },\n    {\n        \"id\": \"319\",\n        \"brewery_id\": \"133\",\n        \"name\": \"Nutty Brewnette\",\n        \"abv\": \"5.900000095367432\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Brown Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"320\",\n        \"brewery_id\": \"515\",\n        \"name\": \"India Pale Ale (IPA)\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style India Pale Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"323\",\n        \"brewery_id\": \"515\",\n        \"name\": \"Stout\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Stout\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"324\",\n        \"brewery_id\": \"515\",\n        \"name\": \"Pale Ale\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Pale Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"326\",\n        \"brewery_id\": \"515\",\n        \"name\": \"Hefe Weizen\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"South German-Style Hefeweizen\",\n        \"cat_name\": \"German Ale\"\n    },\n    {\n        \"id\": \"333\",\n        \"brewery_id\": \"236\",\n        \"name\": \"Avalanche Amber\",\n        \"abv\": \"5.400000095367432\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Amber/Red Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"334\",\n        \"brewery_id\": \"236\",\n        \"name\": \"Hefe Proper Ale\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Lager\",\n        \"cat_name\": \"North American Lager\"\n    },\n    {\n        \"id\": \"335\",\n        \"brewery_id\": \"935\",\n        \"name\": \"Levity Amber Ale\",\n        \"abv\": \"5.099999904632568\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"Levity is our lighter take on the amber ale. Munich and honey malts give it a full-bodied flavor and a happy-go-lucky personality. Then we let the finishing hops shine, for a beer that's crisp instead of bitter, as many ambers are. Levity was named by our brewers partly for its light color - and partly for the way it just refuses to take itself too seriously. Hey, we could all use a little levity once in a while.\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Amber/Red Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"336\",\n        \"brewery_id\": \"935\",\n        \"name\": \"Easy Street Wheat\",\n        \"abv\": \"4.599999904632568\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"Light and refreshing, Easy Street Wheat is an unfiltered American-style wheat beer. Leaving in the yeast gives the beer a nice, smooth finish and a slightly citrusy flavor. Easy Street Wheat gets its name by brewers \\\"taking it easy\\\" and not filtering the beer. However, for ultimate enjoyment, we encourage you to work just a little harder in pouring it: just pour 2/3 of the beer into a glass, swirl what's left to stir up the yeast, then pour the rest and enjoy.\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Light American Wheat Ale or Lager\",\n        \"cat_name\": \"Other Style\"\n    },\n    {\n        \"id\": \"337\",\n        \"brewery_id\": \"161\",\n        \"name\": \"Boulevard Pale Ale\",\n        \"abv\": \"5.400000095367432\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"Boulevard Pale Ale is a smooth, fruity, well-balanced beer with year-round appeal. A variety of caramel malts impart a rich flavor and amber color, while liberal use of whole hops adds zest and aroma. Pale Ale is the first beer we brewed, and continues to be a perennial favorite.\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Pale Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"338\",\n        \"brewery_id\": \"161\",\n        \"name\": \"Bully! Porter\",\n        \"abv\": \"5.400000095367432\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"The intense flavors of dark-roasted malt in Boulevard's rendition of the classic English porter are perfectly balanced by a generous and complex hop character. Bully! Porter's robust nature makes it the ideal companion to a variety of foods, from seafood to chocolate.\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Porter\",\n        \"cat_name\": \"Irish Ale\"\n    },\n    {\n        \"id\": \"340\",\n        \"brewery_id\": \"795\",\n        \"name\": \"XX Black Angus Stout\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Stout\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"341\",\n        \"brewery_id\": \"795\",\n        \"name\": \"Blarney Stone Stout\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Stout\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"342\",\n        \"brewery_id\": \"795\",\n        \"name\": \"Bison Brown Ale\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Brown Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"343\",\n        \"brewery_id\": \"795\",\n        \"name\": \"Prairie Pale\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Pale Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"344\",\n        \"brewery_id\": \"795\",\n        \"name\": \"Wildcat Wheat\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Lager\",\n        \"cat_name\": \"North American Lager\"\n    },\n    {\n        \"id\": \"345\",\n        \"brewery_id\": \"161\",\n        \"name\": \"Boulevard Dry Stout\",\n        \"abv\": \"4.900000095367432\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"Velvety black and perfectly opaque, our bottled Dry Stout is the somewhat livelier companion to our popular draught version of this enduring style. This surprisingly smooth, drinkable beer is a delightful harmony of smoky roasted flavors and tangy, coffee-like notes.\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Stout\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"346\",\n        \"brewery_id\": \"160\",\n        \"name\": \"Planet Porter / Boulder Porter\",\n        \"abv\": \"5.5\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Porter\",\n        \"cat_name\": \"Irish Ale\"\n    },\n    {\n        \"id\": \"350\",\n        \"brewery_id\": \"272\",\n        \"name\": \"Arabier\",\n        \"abv\": \"9\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"An arabier is a pure malt beer 8°vol/alc brewed with flower Nugget-hops from Poperinge. It has the special dry-hopping taste and aroma, so appreciated by beer lovers all over the world. It is one of the two main beers from De Dolle Brouwers throughout the year. Aging time is limited due to the fact that hop bitterness is declining with the time. Store arabier cool and dark and serve cool at 10°C. Cheers!\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Belgian-Style Pale Strong Ale\",\n        \"cat_name\": \"Belgian and French Ale\"\n    },\n    {\n        \"id\": \"351\",\n        \"brewery_id\": \"272\",\n        \"name\": \"Bos Keun\",\n        \"abv\": \"8.899999618530273\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Belgian-Style Pale Strong Ale\",\n        \"cat_name\": \"Belgian and French Ale\"\n    },\n    {\n        \"id\": \"359\",\n        \"brewery_id\": \"285\",\n        \"name\": \"Delirium Noël\",\n        \"abv\": \"10\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Other Belgian-Style Ales\",\n        \"cat_name\": \"Belgian and French Ale\"\n    },\n    {\n        \"id\": \"360\",\n        \"brewery_id\": \"7\",\n        \"name\": \"Rochefort 10\",\n        \"abv\": \"11.300000190734863\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"Reddish-brown colour, with a very compact head and an aroma of figs, feels like honey in the mouth. The alcohol profile is a major component in the flavour of this rich ale. It is very similar to 6 and 8, but has much more of everything. Some may find the high alcohol content to be disagreeable.\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Belgian-Style Quadrupel\",\n        \"cat_name\": \"Belgian and French Ale\"\n    },\n    {\n        \"id\": \"361\",\n        \"brewery_id\": \"167\",\n        \"name\": \"McChouffe\",\n        \"abv\": \"8.5\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"Description : Dark Ale, strong, spicy, lightly hoppy, with evoluting taste. Natural Beer, bottle refermented, unfiltered, not pasteurised and without any additives\\n\\nAlcohol : 8,5% alc./vol.\\n\\nOriginal gravity : 16 °Plato\\n\\nStorage : Store the bottles vertically in a cold place, sheltered from light. The yeast deposit can either be drunk or left according to taste\\n\\nServe at : 8 to 12°C (botlle)\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Dark American-Belgo-Style Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"362\",\n        \"brewery_id\": \"236\",\n        \"name\": \"471 Double IPA\",\n        \"abv\": \"9.199999809265137\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style India Pale Ale\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"363\",\n        \"brewery_id\": \"167\",\n        \"name\": \"La Chouffe Golden Ale\",\n        \"abv\": \"8\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Belgian-Style Pale Strong Ale\",\n        \"cat_name\": \"Belgian and French Ale\"\n    },\n    {\n        \"id\": \"365\",\n        \"brewery_id\": \"322\",\n        \"name\": \"Olde Expensive Ale\",\n        \"abv\": \"0\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Old Ale\",\n        \"cat_name\": \"British Ale\"\n    },\n    {\n        \"id\": \"369\",\n        \"brewery_id\": \"903\",\n        \"name\": \"Old Growler\",\n        \"abv\": \"6.5\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Porter\",\n        \"cat_name\": \"Irish Ale\"\n    },\n    {\n        \"id\": \"370\",\n        \"brewery_id\": \"431\",\n        \"name\": \"Urthel Vlaemse Bock\",\n        \"abv\": \"7.5\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Traditional German-Style Bock\",\n        \"cat_name\": \"German Lager\"\n    },\n    {\n        \"id\": \"371\",\n        \"brewery_id\": \"296\",\n        \"name\": \"Watou Tripel\",\n        \"abv\": \"7.5\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"The flavour of this beer is pleasantly soft and is characterized by a delicate bitterness where the balance between malt and hop is based upon a fruity orange taste with a straight fresh after taste (7.5% alcohol content)\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Belgian-Style Tripel\",\n        \"cat_name\": \"Belgian and French Ale\"\n    },\n    {\n        \"id\": \"374\",\n        \"brewery_id\": \"935\",\n        \"name\": \"Imperial Stout\",\n        \"abv\": \"7.099999904632568\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"American-Style Stout\",\n        \"cat_name\": \"North American Ale\"\n    },\n    {\n        \"id\": \"375\",\n        \"brewery_id\": \"757\",\n        \"name\": \"EKU 28\",\n        \"abv\": \"11\",\n        \"ibu\": \"0\",\n        \"srm\": \"0\",\n        \"upc\": \"0\",\n        \"filepath\": \"\",\n        \"descript\": \"\",\n        \"add_user\": \"0\",\n        \"last_mod\": \"2010-07-22 20:00:20 UTC\",\n        \"style_name\": \"Traditional German-Style Bock\",\n        \"cat_name\": \"German Lager\"\n    }\n]"
  },
  {
    "path": "plugins/riot/src/test/resources/files/beers.jsonl",
    "content": "{\"id\": \"1\",\"brewery_id\": \"812\",\"name\": \"Hocus Pocus\",\"abv\": \"4.5\",\"ibu\": \"0\",\"srm\": \"0\",\"upc\": \"0\",\"filepath\": \"\",\"descript\": \"Our take on a classic summer ale.  A toast to weeds, rays, and summer haze.  A light, crisp ale for mowing lawns, hitting lazy fly balls, and communing with nature, Hocus Pocus is offered up as a summer sacrifice to clodless days.\\n\\nIts malty sweetness finishes tart and crisp and is best apprediated with a wedge of orange.\",\"add_user\": \"0\",\"last_mod\": \"2010-07-22 20:00:20 UTC\",\"style_name\": \"Light American Wheat Ale or Lager\",\"cat_name\": \"Other Style\"}\n{\"id\": \"6\",\"brewery_id\": \"1385\",\"name\": \"Winter Warmer\",\"abv\": \"5.199999809265137\",\"ibu\": \"0\",\"srm\": \"0\",\"upc\": \"0\",\"filepath\": \"\",\"descript\": \"\",\"add_user\": \"0\",\"last_mod\": \"2010-07-22 20:00:20 UTC\",\"style_name\": \"Old Ale\",\"cat_name\": \"British Ale\"}\n{\"id\": \"8\",\"brewery_id\": \"1099\",\"name\": \"Oatmeal Stout\",\"abv\": \"5\",\"ibu\": \"0\",\"srm\": \"0\",\"upc\": \"0\",\"filepath\": \"\",\"descript\": \"\",\"add_user\": \"0\",\"last_mod\": \"2010-07-22 20:00:20 UTC\",\"style_name\": \"American-Style Stout\",\"cat_name\": \"North American Ale\"}\n{\"id\": \"10\",\"brewery_id\": \"545\",\"name\": \"Chocolate Stout\",\"abv\": \"0\",\"ibu\": \"0\",\"srm\": \"0\",\"upc\": \"0\",\"filepath\": \"\",\"descript\": \"\",\"add_user\": \"0\",\"last_mod\": \"2010-07-22 20:00:20 UTC\",\"style_name\": \"American-Style Stout\",\"cat_name\": \"North American Ale\"}\n{\"id\": \"13\",\"brewery_id\": \"545\",\"name\": \"The Kidd Lager\",\"abv\": \"0\",\"ibu\": \"0\",\"srm\": \"0\",\"upc\": \"0\",\"filepath\": \"\",\"descript\": \"\",\"add_user\": \"0\",\"last_mod\": \"2010-07-22 20:00:20 UTC\",\"style_name\": \"German-Style Schwarzbier\",\"cat_name\": \"German Lager\"}\n{\"id\": \"14\",\"brewery_id\": \"1099\",\"name\": \"Imperial Stout\",\"abv\": \"7\",\"ibu\": \"0\",\"srm\": \"0\",\"upc\": \"0\",\"filepath\": \"\",\"descript\": \"\",\"add_user\": \"0\",\"last_mod\": \"2010-07-22 20:00:20 UTC\",\"style_name\": \"American-Style Stout\",\"cat_name\": \"North American Ale\"}"
  },
  {
    "path": "plugins/riot/src/test/resources/files/beers1.csv",
    "content": ",abv,ibu,id,name,style,brewery_id,ounces\n0,0.05,,1436,Pub Beer,American Pale Lager,408,12.0\n1,0.066,,2265,Devil's Cup,American Pale Ale (APA),177,12.0\n2,0.071,,2264,Rise of the Phoenix,American IPA,177,12.0\n3,0.09,,2263,Sinister,American Double / Imperial IPA,177,12.0\n4,0.075,,2262,Sex and Candy,American IPA,177,12.0\n5,0.077,,2261,Black Exodus,Oatmeal Stout,177,12.0\n6,0.045,,2260,Lake Street Express,American Pale Ale (APA),177,12.0\n7,0.065,,2259,Foreman,American Porter,177,12.0\n8,0.055,,2258,Jade,American Pale Ale (APA),177,12.0\n9,0.086,,2131,Cone Crusher,American Double / Imperial IPA,177,12.0\n10,0.07200000000000001,,2099,Sophomoric Saison,Saison / Farmhouse Ale,177,12.0\n11,0.073,,2098,Regional Ring Of Fire,Saison / Farmhouse Ale,177,12.0\n12,0.069,,2097,Garce Selé,Saison / Farmhouse Ale,177,12.0\n13,0.085,,1980,Troll Destroyer,Belgian IPA,177,12.0\n14,0.061,60.0,1979,Bitter Bitch,American Pale Ale (APA),177,12.0\n15,0.06,,2318,Ginja Ninja,Cider,154,12.0\n16,0.06,,2170,Cherried Away,Cider,154,12.0\n17,0.06,,2169,Rhubarbarian,Cider,154,12.0\n18,0.06,,1502,BrightCider,Cider,154,12.0\n19,0.08199999999999999,,1593,He Said Baltic-Style Porter,Baltic Porter,368,12.0\n20,0.08199999999999999,,1592,He Said Belgian-Style Tripel,Tripel,368,12.0\n21,0.099,92.0,1036,Lower De Boom,American Barleywine,368,8.4\n22,0.079,45.0,1024,Fireside Chat,Winter Warmer,368,12.0\n23,0.079,,976,Marooned On Hog Island,American Stout,368,12.0\n24,0.044000000000000004,42.0,876,Bitter American,American Pale Ale (APA),368,12.0\n25,0.049,17.0,802,Hell or High Watermelon Wheat (2009),Fruit / Vegetable Beer,368,12.0\n26,0.049,17.0,801,Hell or High Watermelon Wheat (2009),Fruit / Vegetable Beer,368,12.0\n27,0.049,17.0,800,21st Amendment Watermelon Wheat Beer (2006),Fruit / Vegetable Beer,368,12.0\n28,0.07,70.0,799,21st Amendment IPA (2006),American IPA,368,12.0\n29,0.07,70.0,797,Brew Free! or Die IPA (2008),American IPA,368,12.0\n30,0.07,70.0,796,Brew Free! or Die IPA (2009),American IPA,368,12.0\n31,0.085,52.0,531,Special Edition: Allies Win The War!,English Strong Ale,368,12.0\n32,0.09699999999999999,94.0,432,Hop Crisis,American Double / Imperial IPA,368,12.0\n33,0.044000000000000004,42.0,353,Bitter American (2011),American Pale Ale (APA),368,12.0\n34,0.079,45.0,321,Fireside Chat (2010),Winter Warmer,368,12.0\n35,0.068,65.0,173,Back in Black,American Black Ale,368,12.0\n36,0.083,35.0,11,Monk's Blood,Belgian Dark Ale,368,12.0\n37,0.07,65.0,10,Brew Free! or Die IPA,American IPA,368,12.0\n38,0.049,17.0,9,Hell or High Watermelon Wheat,Fruit / Vegetable Beer,368,12.0\n39,0.07,82.0,2519,Bimini Twist,American IPA,67,12.0\n40,0.05,,2518,Beach Blonde,American Blonde Ale,67,12.0\n41,0.059000000000000004,,2517,Rod Bender Red,American Amber / Red Ale,67,12.0\n42,0.035,11.0,2545,Passion Fruit Prussia,Berliner Weissbier,60,12.0\n43,0.045,18.0,2544,Send Help,American Blonde Ale,60,12.0\n44,0.055,,2324,Cast Iron Oatmeal Brown,American Brown Ale,60,12.0\n45,0.06,,2288,Reprise Centennial Red,American Amber / Red Ale,60,12.0\n46,0.055,,2287,Alter Ego,American Black Ale,60,12.0\n47,0.065,,2286,Divided Sky,American IPA,60,12.0\n48,0.065,,2285,Resurrected,American IPA,60,12.0\n49,0.05,28.0,1870,Contact High,American Pale Wheat Ale,60,12.0\n50,0.065,,2603,Galaxyfest,American IPA,27,16.0\n51,0.05,45.0,2602,Citrafest,American IPA,27,16.0\n52,0.09,,2220,Barn Yeti,Belgian Strong Dark Ale,27,16.0\n53,0.069,65.0,2219,Scarecrow,American IPA,27,16.0\n54,0.09,50.0,2218,Ironman,English Strong Ale,27,16.0\n55,0.046,15.0,2217,Honey Kolsch,Kölsch,27,16.0\n56,0.052000000000000005,18.0,2216,Copperhead Amber,Belgian Dark Ale,27,16.0\n57,0.059000000000000004,75.0,972,Rude Parrot IPA,American IPA,481,16.0\n58,0.054000000000000006,30.0,866,British Pale Ale (2010),English Pale Ale,481,16.0\n59,0.054000000000000006,30.0,48,British Pale Ale,English Pale Ale,481,16.0\n60,0.084,82.0,47,Ballz Deep Double IPA,American Double / Imperial IPA,481,16.0\n61,0.038,,1583,Wolfman's Berliner,Berliner Weissbier,373,12.0\n62,0.055,26.0,1165,Colorado Native,American Amber / Red Lager,462,12.0\n63,0.055,26.0,431,Colorado Native (2011),American Amber / Red Lager,462,12.0\n64,0.065,52.0,516,Jockamo IPA,American IPA,533,12.0\n65,0.042,13.0,515,Purple Haze,Fruit / Vegetable Beer,533,12.0\n66,0.045,17.0,514,Abita Amber,American Amber / Red Lager,533,12.0\n67,0.08199999999999999,68.0,2540,Citra Ass Down,American IPA,62,16.0\n68,0.05,20.0,2539,The Brown Note,American Brown Ale,62,16.0\n69,0.08,68.0,2686,Citra Ass Down,American Double / Imperial IPA,1,16.0\n70,0.125,80.0,2685,London Balling,English Barleywine,1,16.0\n71,0.077,25.0,2684,35 K,Milk / Sweet Stout,1,16.0\n72,0.042,42.0,2683,A Beer,American Pale Ale (APA),1,16.0\n73,0.05,25.0,2682,Rules are Rules,German Pilsener,1,16.0\n74,0.066,21.0,2681,Flesh Gourd'n,Pumpkin Ale,1,16.0\n75,0.04,13.0,2680,Sho'nuff,Belgian Pale Ale,1,16.0\n76,0.055,17.0,2679,Bloody Show,American Pilsner,1,16.0\n77,0.076,68.0,2678,Rico Sauvin,American Double / Imperial IPA,1,16.0\n78,0.051,38.0,2677,Coq de la Marche,Saison / Farmhouse Ale,1,16.0\n79,0.065,,2676,Kamen Knuddeln,American Wild Ale,1,16.0\n80,0.06,65.0,2675,Pile of Face,American IPA,1,16.0\n81,0.05,20.0,2674,The Brown Note,English Brown Ale,1,16.0\n82,0.053,35.0,1594,Maylani's Coconut Stout,American Stout,367,16.0\n83,0.05,35.0,1162,Oatmeal PSA,American Pale Ale (APA),367,16.0\n84,0.052000000000000005,33.0,1137,Pre Flight Pilsner,American Pilsner,367,16.0\n85,0.04,20.0,2403,P-Town Pilsner,American Pilsner,117,12.0\n86,0.053,36.0,2402,Klickitat Pale Ale,American Pale Ale (APA),117,12.0\n87,0.08199999999999999,103.0,2401,Yellow Wolf Imperial IPA,American Double / Imperial IPA,117,12.0\n88,0.053,40.0,1921,Freeride APA,American Pale Ale (APA),270,12.0\n89,0.053,18.0,1920,Alaskan Amber,Altbier,270,12.0\n90,0.057,,2501,Hopalicious,American Pale Ale (APA),73,12.0\n91,0.043,,1535,Kentucky Kölsch,Kölsch,388,16.0\n92,0.065,,1149,Kentucky IPA,American IPA,388,16.0\n93,0.054000000000000006,,1474,Dusty Trail Pale Ale,American Pale Ale (APA),401,16.0\n94,0.062,,1473,Damnesia,American IPA,401,16.0\n95,0.062,43.0,837,Desolation IPA,American IPA,401,16.0\n96,0.059000000000000004,,2592,Liberty Ale,American IPA,35,12.0\n97,0.065,,2578,IPA,American IPA,35,12.0\n98,0.045,,2577,Summer Wheat,American Pale Wheat Ale,35,12.0\n99,0.049,,2103,California Lager,American Amber / Red Lager,35,12.0\n100,0.055999999999999994,,2102,Brotherhood Steam,California Common / Steam Beer,35,12.0\n101,0.042,,2291,Blood Orange Gose,Gose,171,12.0\n102,0.042,,1818,Keebarlin' Pale Ale,American Pale Ale (APA),171,12.0\n103,0.048,,1738,\"the Kimmie, the Yink and the Holy Gose\",Gose,171,12.0\n104,0.06,,1563,Fall Hornin',Pumpkin Ale,171,12.0\n105,0.057,13.0,1520,Barney Flats Oatmeal Stout,Oatmeal Stout,171,12.0\n106,0.055999999999999994,4.0,1350,Summer Solstice,Cream Ale,171,12.0\n107,0.07,80.0,1327,Hop Ottin' IPA,American IPA,171,12.0\n108,0.057999999999999996,15.0,1326,Boont Amber Ale,American Amber / Red Ale,171,12.0\n109,0.057,13.0,1221,Barney Flats Oatmeal Stout,Oatmeal Stout,171,12.0\n110,0.055,25.0,1217,El Steinber Dark Lager,Vienna Lager,171,16.0\n111,0.057999999999999996,15.0,811,Boont Amber Ale (2010),American Amber / Red Ale,171,12.0\n112,0.055999999999999994,4.0,753,Summer Solstice Cerveza Crema (2009),Cream Ale,171,12.0\n113,0.057,13.0,572,Barney Flats Oatmeal Stout (2012),Oatmeal Stout,171,12.0\n114,0.069,6.0,523,Winter Solstice,Winter Warmer,171,12.0\n115,0.07,80.0,367,Hop Ottin' IPA (2011),American IPA,171,12.0\n116,0.057999999999999996,15.0,78,Boont Amber Ale (2011),American Amber / Red Ale,171,12.0\n117,0.055999999999999994,4.0,77,Summer Solstice (2011),Cream Ale,171,12.0\n118,0.055,28.0,76,Poleeko Gold Pale Ale (2009),American Pale Ale (APA),171,12.0\n119,0.06,,2337,Charlie's Rye IPA,American IPA,146,16.0\n120,0.054000000000000006,,410,River Pig Pale Ale,American Pale Ale (APA),542,16.0\n121,0.047,,409,Oaky's Oatmeal Stout,Oatmeal Stout,542,16.0\n122,0.05,,1294,Angry Orchard Apple Ginger,Cider,434,16.0\n123,0.05,,1293,Angry Orchard Crisp Apple,Cider,434,16.0\n124,0.05,,1292,Angry Orchard Crisp Apple,Cider,434,12.0\n125,0.068,,2207,Golden One,Belgian Pale Ale,193,12.0\n126,0.06,,2040,Arjuna,Witbier,193,12.0\n127,0.085,,2039,Uroboros,American Stout,193,12.0\n128,0.071,75.0,2511,Long Leaf,American IPA,69,16.0\n129,0.047,19.0,2510,Honey Badger Blonde,American Blonde Ale,69,16.0\n130,0.06,23.0,2509,Porter (a/k/a Black Gold Porter),American Porter,69,16.0\n131,0.06,55.0,413,Sky High Rye,American Pale Ale (APA),541,12.0\n132,0.062,17.0,390,Whitsun,American Pale Wheat Ale,541,12.0\n133,0.052000000000000005,,735,On-On Ale (2008),American Pale Ale (APA),513,12.0\n134,0.092,50.0,1333,Quakertown Stout,American Double / Imperial Stout,426,12.0\n135,0.051,20.0,1332,Greenbelt Farmhouse Ale,Saison / Farmhouse Ale,426,12.0\n136,0.052000000000000005,10.0,1172,Mo's Gose,Gose,461,16.0\n137,0.07,45.0,1322,Green Bullet Organic India Pale Ale,American IPA,429,16.0\n138,0.032,27.0,550,Rocket Girl,Kölsch,528,12.0\n139,0.053,26.0,429,Ninja Porter,American Porter,528,12.0\n140,0.06,69.0,428,Shiva IPA,American IPA,528,12.0\n141,0.048,,1640,Aslan Kölsch,Kölsch,353,16.0\n142,0.077,,1639,Aslan IPA,American IPA,353,16.0\n143,0.077,,1638,Aslan Amber,American Amber / Red Ale,353,16.0\n144,0.055999999999999994,27.0,597,This Season's Blonde,American Blonde Ale,523,12.0\n145,0.07,67.0,596,Independence Pass Ale,American IPA,523,12.0\n146,0.057,40.0,1580,Trolley Stop Stout,American Stout,374,12.0\n147,0.08199999999999999,138.0,980,Bitter Bitch Imperial IPA,American Double / Imperial IPA,374,12.0\n148,0.062,35.0,979,Poop Deck Porter,American Porter,374,12.0\n149,0.06,35.0,978,Old Red Beard Amber Ale,American Amber / Red Ale,374,12.0\n150,0.075,115.0,2503,Hop A-Peel,American Double / Imperial IPA,72,16.0\n151,0.055,12.0,2502,Vanilla Java Porter,American Porter,72,16.0\n152,0.052000000000000005,,2495,Michelada,Fruit / Vegetable Beer,72,16.0\n153,0.045,8.0,534,Dirty Blonde Ale,American Blonde Ale,72,12.0\n154,0.05,62.0,528,Grand Circus IPA,American IPA,72,12.0\n155,0.05,12.0,527,Atwater's Lager,Munich Helles Lager,72,12.0\n156,0.07,,1409,Heavy Machinery IPA Series #1: Heavy Fist,American Black Ale,413,16.0\n157,0.062,,343,Fire Eagle IPA,American IPA,413,12.0\n158,0.051,,342,Peacemaker,American Pale Ale (APA),413,12.0\n159,0.053,,341,Pearl-Snap,German Pilsener,413,12.0\n160,0.052000000000000005,,340,Black Thunder,Schwarzbier,413,12.0\n161,0.08,,2589,Raja,American Double / Imperial IPA,37,12.0\n162,0.064,,2546,Perzik Saison,Saison / Farmhouse Ale,37,12.0\n163,0.047,42.0,146,Avery Joe’s Premium American Pilsner,German Pilsener,37,12.0\n164,0.055999999999999994,10.0,108,White Rascal,Witbier,37,12.0\n165,0.063,69.0,107,Avery India Pale Ale,American IPA,37,12.0\n166,0.055,17.0,106,Ellie’s Brown Ale,American Brown Ale,37,12.0\n167,0.062,17.0,1620,Pumpkin Beast,Pumpkin Ale,360,12.0\n168,0.07200000000000001,22.0,1579,OktoberBeast,Märzen / Oktoberfest,360,12.0\n169,0.048,23.0,1228,Mad Beach,American Pale Wheat Ale,360,12.0\n170,0.067,,705,Hog Wild India Pale Ale,American IPA,360,12.0\n171,0.092,5.0,704,Devils Tramping Ground Tripel,Tripel,360,12.0\n172,0.061,41.0,702,Hot Rod Red,American Amber / Red Ale,360,12.0\n173,0.086,,2058,Palate Mallet,American Double / Imperial IPA,235,12.0\n174,0.06,,1483,Back East Porter,American Porter,235,12.0\n175,0.049,,1426,Back East Golden Ale,American Blonde Ale,235,12.0\n176,0.07,,1132,Misty Mountain IPA,American IPA,235,12.0\n177,0.05,,1131,Back East Ale,American Amber / Red Ale,235,12.0\n178,0.06,,1876,Truck Stop Honey Brown Ale,English Brown Ale,286,12.0\n179,0.06,43.0,1875,Naked Pig Pale Ale,American Pale Ale (APA),286,12.0\n180,0.068,70.0,966,Topcutter India Pale Ale,American IPA,483,12.0\n181,0.044000000000000004,38.0,965,Field 41 Pale Ale,American Pale Ale (APA),483,12.0\n182,0.07,,2593,Grapefruit Sculpin,American IPA,34,12.0\n183,0.038,40.0,2105,Even Keel,American IPA,34,12.0\n184,0.052000000000000005,23.0,1401,Ballast Point Pale Ale,Kölsch,34,12.0\n185,0.07,75.0,1400,Big Eye India Pale Ale,American IPA,34,12.0\n186,0.046,,1019,Longfin Lager,Munich Helles Lager,34,12.0\n187,0.07,70.0,1018,Sculpin IPA,American IPA,34,12.0\n188,0.045,,1776,All Nighter Ale,Extra Special / Strong Bitter (ESB),318,12.0\n189,0.045,20.0,1644,Banner American Rye,Rye Beer,318,12.0\n190,0.035,45.0,1643,Banner American Ale,American Amber / Red Ale,318,12.0\n191,0.07,46.0,2618,Thai.p.a,American IPA,20,16.0\n192,0.06,60.0,2005,Barrio Blanco,American IPA,251,12.0\n193,0.045,,1343,Barrio Tucson Blonde,American Blonde Ale,251,12.0\n194,0.049,22.0,2404,Hop in the ‘Pool Helles,American Pilsner,116,12.0\n195,0.067,60.0,2323,Ultra Gnar Gnar IPA,American IPA,116,12.0\n196,0.068,62.0,2189,In-Tents India Pale Lager,American Pale Lager,116,12.0\n197,0.05,20.0,2188,Lost Meridian Wit,Witbier,116,12.0\n198,0.051,45.0,2187,Celestial Meridian Cascadian Dark Lager,Euro Dark Lager,116,12.0\n199,0.054000000000000006,55.0,1966,Wagon Party,California Common / Steam Beer,258,12.0\n200,0.067,70.0,1965,Sky-Five,American IPA,258,12.0\n201,0.05,28.0,1964,Stargrazer,Schwarzbier,258,12.0\n202,0.054000000000000006,48.0,1963,Wonderstuff,German Pilsener,258,12.0\n203,0.053,,1855,Tarnation California-Style Lager,California Common / Steam Beer,292,12.0\n204,0.07,42.0,1778,On the Count of 3 (2015),Hefeweizen,292,16.0\n205,0.047,,1209,Summer Swelter,American Pale Wheat Ale,292,12.0\n206,0.068,,954,Phantom Punch Winter Stout,Foreign / Export Stout,292,12.0\n207,0.066,,910,Hayride Autumn Ale,Rye Beer,292,12.0\n208,0.047,,707,Celsius Summer Ale (2012),American Pale Wheat Ale,292,12.0\n209,0.055,35.0,533,Amber Road,American Amber / Red Ale,292,12.0\n210,0.049,28.0,183,Pamola Xtra Pale Ale,American Pale Ale (APA),292,12.0\n211,0.069,69.0,182,Stowaway IPA,American IPA,292,12.0\n212,0.08800000000000001,108.0,1806,Hoptopus Double IPA,American Double / Imperial IPA,306,16.0\n213,0.05,10.0,2435,Watermelon Ale,Fruit / Vegetable Beer,103,12.0\n214,0.057999999999999996,45.0,2423,Fenway American Pale Ale,American Pale Ale (APA),103,12.0\n215,0.068,85.0,2420,Back Bay IPA,American IPA,103,12.0\n216,0.048,16.0,2419,Bunker Hill Blueberry Ale ,Other,103,12.0\n217,0.057999999999999996,,2494,Oberon,American Pale Wheat Ale,76,12.0\n218,0.06,,2325,Smitten,Rye Beer,76,16.0\n219,0.05,,2022,Winter White,Witbier,76,16.0\n220,0.057999999999999996,,1989,Oberon,American Pale Wheat Ale,76,16.0\n221,0.07,,1988,Two Hearted,American IPA,76,16.0\n222,0.057999999999999996,,1955,Best Brown,American Brown Ale,76,16.0\n223,0.044000000000000004,44.0,2558,Moar,English India Pale Ale (IPA),53,12.0\n224,0.083,,2557,Uber Lupin Schwarz IPA,American Double / Imperial IPA,53,16.0\n225,0.057,27.0,2556,Nordic Blonde,American Blonde Ale,53,12.0\n226,0.06,,2496,Cold Press,American Black Ale,75,12.0\n227,0.07200000000000001,87.0,2410,Harness the Winter,American IPA,75,12.0\n228,0.055999999999999994,32.0,1902,14° ESB ,Extra Special / Strong Bitter (ESB),75,12.0\n229,0.062,68.0,1901,Bent Hop Golden IPA,American IPA,75,12.0\n230,0.06,34.0,1261,Bent Paddle Black Ale,American Black Ale,75,12.0\n231,0.05,38.0,1253,Venture Pils,German Pilsener,75,12.0\n232,0.055,40.0,1900,Lost Sailor IPA,English India Pale Ale (IPA),278,12.0\n233,0.053,20.0,1317,Steel Rail Extra Pale Ale,American Pale Ale (APA),278,12.0\n234,0.078,,1158,La Frontera Premium IPA,American IPA,463,12.0\n235,0.047,,1157,Tejas Lager,Czech Pilsener,463,12.0\n236,0.064,,1156,Number 22 Porter,American Porter,463,12.0\n237,0.055999999999999994,,1155,Big Bend Hefeweizen,Hefeweizen,463,12.0\n238,0.06,,1154,Terlingua Gold,American Blonde Ale,463,12.0\n239,0.081,17.0,2104,Aprè Shred,American Strong Ale,220,16.0\n240,0.095,104.0,1762,Hemlock Double IPA,American Double / Imperial IPA,220,12.0\n241,0.040999999999999995,,1422,West Portal Colorado Common Summer Ale,California Common / Steam Beer,220,16.0\n242,0.067,85.0,1067,Disconnected Red,American Amber / Red Ale,220,16.0\n243,0.07,,1003,Big Elm IPA,American IPA,477,12.0\n244,0.065,,1002,Gerry Dog Stout,American Stout,477,12.0\n245,0.06,,1001,413 Farmhouse Ale,Saison / Farmhouse Ale,477,12.0\n246,0.08,54.0,2639,Dark Star,American Stout,8,16.0\n247,0.062,,2469,Ryecoe,American IPA,8,16.0\n248,0.06,,2586,Blueberry Blonde,Fruit / Vegetable Beer,40,12.0\n249,0.075,60.0,2585,Galaxy IPA,American IPA,40,16.0\n250,0.05,32.0,643,Big River Pilsner,Czech Pilsener,519,12.0\n251,0.06,55.0,632,House Brand IPA,American IPA,519,12.0\n252,0.062,65.0,1714,Big Sky IPA,American IPA,336,12.0\n253,0.05,40.0,1713,Scape Goat Pale Ale,English Pale Ale,336,12.0\n254,0.05,35.0,1712,Montana Trout Slayer Ale,American Pale Wheat Ale,336,12.0\n255,0.051,26.0,1711,Moose Drool Brown Ale,American Brown Ale,336,12.0\n256,0.07200000000000001,60.0,1456,Powder Hound Winter Ale,English Strong Ale,336,12.0\n257,0.051,26.0,767,Moose Drool Brown Ale (2011),American Brown Ale,336,12.0\n258,0.05,35.0,766,Montana Trout Slayer Ale (2012),American Pale Wheat Ale,336,12.0\n259,0.062,65.0,579,Big Sky IPA (2012),American IPA,336,12.0\n260,0.047,,168,Summer Honey,American Blonde Ale,336,12.0\n261,0.05,40.0,159,Scape Goat Pale Ale (2010),English Pale Ale,336,12.0\n262,0.05,35.0,35,Montana Trout Slayer Ale (2009),American Pale Wheat Ale,336,12.0\n263,0.051,26.0,34,Moose Drool Brown Ale (2009),American Brown Ale,336,12.0\n264,0.069,81.0,2096,Arcus IPA,American IPA,221,12.0\n265,0.057999999999999996,38.0,2095,Wavemaker,American Amber / Red Ale,221,12.0\n266,0.053,43.0,1257,Jack Pine Savage,American Pale Ale (APA),444,16.0\n267,0.099,85.0,1256,Forest Fire Imperial Smoked Rye,Rye Beer,444,16.0\n268,0.098,76.0,1255,Bad Axe Imperial IPA,American Double / Imperial IPA,444,16.0\n269,0.055,35.0,986,Morning Wood,Oatmeal Stout,444,16.0\n270,0.066,50.0,985,Bark Bite IPA,American IPA,444,16.0\n271,0.055,45.0,2508,Jalapeno Pale Ale,American Pale Ale (APA),70,16.0\n272,0.052000000000000005,,1441,Blown Out Brown,American Brown Ale,407,12.0\n273,0.063,,1413,Single Hop Ale,American Pale Ale (APA),407,12.0\n274,0.054000000000000006,,1411,Sawtooth Ale,American Blonde Ale,407,12.0\n275,0.07200000000000001,75.0,2620,Saucy Intruder,Rye Beer,18,16.0\n276,0.045,16.0,2412,Deception,American Blonde Ale,112,12.0\n277,0.075,35.0,1898,Blackmarket Rye IPA,American IPA,112,12.0\n278,0.05,8.0,1897,Black Market Hefeweizen,Hefeweizen,112,12.0\n279,0.057999999999999996,44.0,1896,Aftermath Pale Ale,American Pale Ale (APA),112,12.0\n280,0.071,83.0,1850,American India Red Ale,American Strong Ale,294,12.0\n281,0.071,45.0,1849,American Red Porter,American Porter,294,12.0\n282,0.078,34.0,1848,American Red Saison,Saison / Farmhouse Ale,294,12.0\n283,0.066,44.0,1847,Colorado Red Ale,American Amber / Red Ale,294,12.0\n284,0.048,16.0,2485,Saddle Bronc Brown Ale,American Brown Ale,79,12.0\n285,0.046,20.0,2484,Bomber Mountain Amber Ale,American Amber / Red Ale,79,12.0\n286,0.073,,2449,Flying Sailor,Rye Beer,95,12.0\n287,0.048,47.0,2634,Nordskye ,American IPA,12,12.0\n288,0.06,30.0,2153,North Third Stout,Foreign / Export Stout,12,12.0\n289,0.052000000000000005,,1953,Honey Lav,American Pale Wheat Ale,12,12.0\n290,0.068,,1496,Coconut Brown Ale,American Brown Ale,12,12.0\n291,0.07,51.0,1481,51K IPA,American IPA,12,12.0\n292,0.055,,1480,Grand Rabbits,Cream Ale,12,12.0\n293,0.05,,1564,1800 Big Log Wheat (2012),American Pale Wheat Ale,380,12.0\n294,,,1541,Double Play Pilsner,American Pilsner,380,12.0\n295,0.055,,1321,Brewerhood Brown Ale,American Brown Ale,380,12.0\n296,0.08,,1320,Last Call Imperial Amber Ale,American Amber / Red Ale,380,12.0\n297,0.096,,1319,Pernicious Double IPA,American Double / Imperial IPA,380,12.0\n298,0.052000000000000005,,1303,6-4-3 Double Play Pilsner,German Pilsener,380,12.0\n299,,,1025,N Street Drive-In 50th Anniversary IPA,American Double / Imperial IPA,380,12.0\n300,0.05,,1012,467 Ethan's Stout,American Stout,380,12.0\n301,0.064,,942,1335 Wicked Snout,Saison / Farmhouse Ale,380,12.0\n302,0.045,,937,543 Skull Creek Fresh Hopped Pale Ale,American Pale Ale (APA),380,12.0\n303,0.055999999999999994,37.0,888,1327 Pod's ESB,Extra Special / Strong Bitter (ESB),380,12.0\n304,0.055999999999999994,37.0,886,1327 Pod's ESB,Extra Special / Strong Bitter (ESB),380,12.0\n305,0.055999999999999994,37.0,612,1327 Pod's ESB,Extra Special / Strong Bitter (ESB),380,12.0\n306,0.046,35.0,611,834 Happy As Ale,American Pale Ale (APA),380,12.0\n307,0.059000000000000004,,1372,Yellow Collar,Mead,422,12.0\n308,0.059000000000000004,,1371,Green Collar,Mead,422,12.0\n309,0.08,80.0,1812,Quarter Mile Double IPA,American Double / Imperial IPA,304,12.0\n310,0.059000000000000004,60.0,1547,Full Nelson Pale Ale,American Pale Ale (APA),382,12.0\n311,0.065,30.0,1546,Steel Wheels ESB,Extra Special / Strong Bitter (ESB),382,12.0\n312,0.053,22.0,1545,Blue Mountain Classic Lager,Euro Pale Lager,382,12.0\n313,0.059000000000000004,60.0,119,Full Nelson Pale Ale (2010),American Pale Ale (APA),382,12.0\n314,0.049,16.0,1408,Kölsch 151,Kölsch,414,12.0\n315,,,2490,Professor Black,American Stout,77,12.0\n316,,,2489,Little Boss,American Pale Wheat Ale,77,12.0\n317,,,2488,Van Dayum!,American Amber / Red Ale,77,12.0\n318,,,2487,Spirit Animal,American Pale Ale (APA),77,12.0\n319,0.07,,939,Toxic Sludge,American Black Ale,489,16.0\n320,0.06,40.0,692,Blue Point White IPA,American White IPA,489,12.0\n321,0.044000000000000004,16.0,667,Blue Point Summer Ale,American Blonde Ale,489,12.0\n322,0.055,28.0,665,Toasted Lager,Vienna Lager,489,12.0\n323,0.06,,1607,Bohemian Export Lager,Dortmunder / Export Lager,364,12.0\n324,0.053,,1597,Altus Bohemes Altbier,Altbier,364,12.0\n325,0.04,,344,Cherny Bock,Schwarzbier,364,12.0\n326,0.05,,89,Czech Pilsner,Czech Pilsener,364,12.0\n327,0.05,,88,Viennese Lager,Vienna Lager,364,12.0\n328,0.065,,1569,Mad Manatee IPA,American IPA,378,12.0\n329,0.055,,1568,Killer Whale Cream Ale,Cream Ale,378,12.0\n330,0.06,,1188,Duke's Cold Nose Brown Ale,American Brown Ale,378,12.0\n331,0.042,30.0,1891,Longhop IPA,American IPA,281,16.0\n332,0.04,34.0,1890,Lucky Buck,Irish Dry Stout,281,16.0\n333,0.051,,577,Bomb Lager (New Recipe),Munich Helles Lager,525,12.0\n334,0.045,27.0,513,Bomb Lager (Old Recipe),Munich Helles Lager,525,12.0\n335,0.066,72.0,2422,Firestarter India Pale Ale,American IPA,107,12.0\n336,0.075,22.0,1727,Kilt Dropper Scotch Ale,Scotch Ale / Wee Heavy,107,16.0\n337,0.048,30.0,1614,Wood Splitter Pilsner,Czech Pilsener,107,16.0\n338,0.055999999999999994,26.0,1613,Gyptoberfest,Märzen / Oktoberfest,107,12.0\n339,0.07,94.0,1549,Farmer Wirtz India Pale Ale,English India Pale Ale (IPA),107,16.0\n340,0.047,,1548,Slow & Steady Golden Ale,American Blonde Ale,107,12.0\n341,0.068,,1517,Pink-I Raspberry IPA,American IPA,107,16.0\n342,0.047,,1500,Moe's Original Bar B Que 'Bama Brew Golden Ale,American Blonde Ale,107,12.0\n343,0.047,,1421,Live Local Golden Ale,American Blonde Ale,107,12.0\n344,0.048,38.0,1360,Screaming Eagle Special Ale ESB,Extra Special / Strong Bitter (ESB),107,12.0\n345,0.049,,1184,Dirtbag Dunkel,Munich Dunkel Lager,107,16.0\n346,0.053,45.0,1183,Kindler Pale Ale,American Pale Ale (APA),107,12.0\n347,0.064,,1023,Mistress Winter Wheat,Winter Warmer,107,12.0\n348,0.061,,998,Tent Pole Vanilla Porter,American Porter,107,16.0\n349,0.057999999999999996,,997,Awry Rye Pale Ale,American Pale Ale (APA),107,12.0\n350,0.057999999999999996,,996,Demshitz Brown Ale,American Brown Ale,107,12.0\n351,0.048,,931,Wood Splitter Pilsner (2012),Czech Pilsener,107,12.0\n352,0.048,,798,Brush Creek Blonde,American Blonde Ale,107,16.0\n353,0.066,72.0,633,Firestarter India Pale Ale,American IPA,107,16.0\n354,0.071,16.0,2062,Noche Dulce,American Porter,231,16.0\n355,0.045,8.0,1830,Porch Rocker,Radler,300,12.0\n356,0.065,45.0,1629,Rebel IPA,American IPA,300,16.0\n357,0.055,,1601,Cold Snap,Witbier,300,12.0\n358,0.055999999999999994,,1427,Samuel Adams Winter Lager,Bock,300,12.0\n359,0.049,30.0,1349,Boston Lager,Vienna Lager,300,16.0\n360,0.049,30.0,1310,Boston Lager,Vienna Lager,300,12.0\n361,0.053,15.0,1281,Samuel Adams Octoberfest,Märzen / Oktoberfest,300,12.0\n362,0.053,7.0,1144,Samuel Adams Summer Ale,American Pale Wheat Ale,300,12.0\n363,0.049,30.0,1143,Boston Lager,Vienna Lager,300,12.0\n364,0.049,35.0,1395,Hazed & Infused,American Pale Ale (APA),417,12.0\n365,0.057,35.0,808,Hoopla Pale Ale,American Pale Ale (APA),417,12.0\n366,0.049,35.0,81,Hazed & Infused (2010),American Pale Ale (APA),417,12.0\n367,0.062,80.0,2596,Heavy Lifting,American IPA,31,12.0\n368,0.065,,2300,1492,American Pale Ale (APA),167,12.0\n369,0.057999999999999996,,2299,Mango Ginger,American IPA,167,12.0\n370,0.047,,2298,Passenger,English Dark Mild Ale,167,12.0\n371,0.06,52.0,2107,Plum St. Porter,American Porter,219,12.0\n372,0.057,52.0,1573,Plum St. Porter,American Porter,219,12.0\n373,0.07,80.0,1289,Bozone HopZone IPA,American IPA,219,12.0\n374,0.06,25.0,1288,Bozone Hefe Weizen,Hefeweizen,219,12.0\n375,0.055,,470,Bozone Select Amber Ale,American Amber / Red Ale,219,12.0\n376,0.052000000000000005,40.0,2167,Evil Owl,American Amber / Red Ale,207,12.0\n377,0.05,,2204,Post Time Kölsch,Kölsch,195,16.0\n378,0.042,9.0,1522,Agave Wheat,American Pale Wheat Ale,391,12.0\n379,0.045,15.0,397,SummerBright Ale,American Pale Wheat Ale,391,12.0\n380,0.062,68.0,193,Lucky U IPA,American IPA,391,12.0\n381,0.054000000000000006,19.0,83,Avalanche Ale,American Amber / Red Ale,391,12.0\n382,0.05,,1802,\"You're My Boy, Blue\",Fruit / Vegetable Beer,308,12.0\n383,0.07200000000000001,60.0,1801,Last Stop IPA,American IPA,308,12.0\n384,0.05,21.0,1800,Rollin Dirty Red Ale,Irish Red Ale,308,12.0\n385,0.055,28.0,1799,Are Wheat There Yet?,American Pale Wheat Ale,308,12.0\n386,0.057999999999999996,,2619,Insert Hop Reference,American Pale Ale (APA),19,16.0\n387,0.053,,2468,Manitou Amber,American Amber / Red Ale,85,16.0\n388,0.067,,2637,Belfort,Saison / Farmhouse Ale,10,16.0\n389,0.06,,2636,Star Runner,Belgian Pale Ale,10,16.0\n390,0.098,,2598,Tart Side of the Barrel,American Double / Imperial Stout,10,16.0\n391,0.06,,2597,Linnaeus Mango IPA,American IPA,10,16.0\n392,0.07,,2548,Beasts A'Burnin',Rauchbier,10,16.0\n393,0.077,,2542,Verdun,Bière de Garde,10,16.0\n394,0.065,,2541,Barrel Aged Triomphe,Belgian IPA,10,16.0\n395,0.065,,2504,Cherry Doppelbock,Doppelbock,10,16.0\n396,0.065,,2500,Tropical Saison,Saison / Farmhouse Ale,10,16.0\n397,0.065,,2499,Beach Patrol,Witbier,10,16.0\n398,0.05,,2498,Nuit Serpent,Belgian IPA,10,16.0\n399,0.09,,2481,Paris,Saison / Farmhouse Ale,10,16.0\n400,0.055,,2476,The Grand Army,Belgian IPA,10,16.0\n401,0.059000000000000004,,2467,Acidulated Trip,Saison / Farmhouse Ale,10,16.0\n402,0.066,,2466,Root Stock,Rye Beer,10,16.0\n403,0.040999999999999995,,2465,Mind Games,Dunkelweizen,10,16.0\n404,0.08199999999999999,,2433,Sous Chef,Belgian Strong Pale Ale,10,16.0\n405,0.065,,2418,Dubbelicious,Dubbel,10,16.0\n406,0.062,,2416,Psychopomp,Belgian Dark Ale,10,16.0\n407,,,2382,Fat Paczki,Belgian Dark Ale,10,16.0\n408,,,2381,Earth-Like Planets,Belgian Pale Ale,10,16.0\n409,0.061,,2290,Ski Patrol,Witbier,10,16.0\n410,0.063,,2241,Viking Ice Hole,Oatmeal Stout,10,16.0\n411,0.055999999999999994,,2240,Rye Porter,American Porter,10,16.0\n412,0.099,,2137,Wizard Burial Ground,Quadrupel (Quad),10,16.0\n413,0.051,,2101,Smoky Wheat,Rauchbier,10,16.0\n414,0.062,,2092,BRIPA,Belgian IPA,10,16.0\n415,0.062,,2091,Mela,Belgian Dark Ale,10,16.0\n416,0.053,,2086,W.I.P.A Snappa,Belgian IPA,10,16.0\n417,0.063,,2023,Pepper in the Rye,Rye Beer,10,16.0\n418,0.064,,2006,Moe Lasses',American Stout,10,16.0\n419,0.07,,1997,Pumpkin Tart,Fruit / Vegetable Beer,10,16.0\n420,0.067,,1977,Undertaker,Belgian Dark Ale,10,16.0\n421,0.067,,1976,Undertaker (2014),Belgian Dark Ale,10,16.0\n422,0.05,,1974,Coq D'Or,Belgian Pale Ale,10,16.0\n423,0.06,,1973,North French,Bière de Garde,10,16.0\n424,0.065,,1959,Agent a Deux,Belgian Dark Ale,10,16.0\n425,0.045,,1958,Belgian Wit,Witbier,10,16.0\n426,0.063,,1949,Pothole Stout,American Stout,10,16.0\n427,0.09300000000000001,,1947,Tree Bucket,Belgian IPA,10,16.0\n428,0.073,,1785,Le Flaneur Ale,American Wild Ale,10,16.0\n429,0.055999999999999994,,1651,Maize & Blueberry,Fruit / Vegetable Beer,10,16.0\n430,0.09300000000000001,,1443,Trebuchet Double IPA,American Double / Imperial IPA,10,16.0\n431,0.065,,1352,Contemplation,Bière de Garde,10,16.0\n432,0.05,,1267,Black Rabbit,American Black Ale,10,16.0\n433,0.09,,1266,Zaison,Saison / Farmhouse Ale,10,16.0\n434,0.08199999999999999,,1178,Vivant Tripel,Tripel,10,16.0\n435,0.098,,1136,Tart Side of the Moon,Belgian Dark Ale,10,16.0\n436,0.06,,1044,Big Red Coq,American Amber / Red Ale,10,16.0\n437,0.099,,1033,Hubris Quadrupel Anniversary Ale,Quadrupel (Quad),10,16.0\n438,0.095,,1031,Plow Horse Belgian Style Imperial Stout,American Double / Imperial Stout,10,16.0\n439,0.092,,909,Escoffier Bretta Ale,American Wild Ale,10,16.0\n440,0.065,,873,Contemplation (2012),Bière de Garde,10,16.0\n441,0.099,,860,Vivant Belgian Style Imperial Stout (2012),Russian Imperial Stout,10,16.0\n442,0.062,,677,Big Red Coq (2012),American Amber / Red Ale,10,16.0\n443,0.09,,671,Zaison (2012),Saison / Farmhouse Ale,10,16.0\n444,0.092,,670,Vivant Tripel (2012),Tripel,10,16.0\n445,0.09699999999999999,,669,Trebuchet Double IPA (2012),Belgian IPA,10,16.0\n446,0.085,,627,Kludde,Belgian Strong Dark Ale,10,16.0\n447,0.055,,387,Farm Hand,Saison / Farmhouse Ale,10,16.0\n448,0.06,,385,Solitude,Belgian Pale Ale,10,16.0\n449,0.065,,384,Triomphe,Belgian IPA,10,16.0\n450,,,1096,Tampa Pale Ale,American Pale Ale (APA),467,12.0\n451,,,1095,Orange Grove Wheat Ale,American Pale Wheat Ale,467,12.0\n452,0.061,,2456,Broad Brook Ale,American Amber / Red Ale,89,16.0\n453,0.05,15.0,921,Northern Lights Amber Ale,American Amber / Red Ale,493,12.0\n454,0.052000000000000005,17.0,920,Polar Pale Ale,American Pale Ale (APA),493,12.0\n455,0.048,,919,Chugach Session Ale,Cream Ale,493,12.0\n456,0.061,64.0,648,Fairweather IPA,American IPA,493,12.0\n457,0.068,47.0,1279,East India Pale Ale,English India Pale Ale (IPA),437,16.0\n458,0.045,,756,Brooklyn Summer Ale,English Pale Mild Ale,437,12.0\n459,0.068,47.0,566,East India Pale Ale,English India Pale Ale (IPA),437,12.0\n460,0.045,,328,Brooklyn Summer Ale (2011),English Pale Mild Ale,437,12.0\n461,0.052000000000000005,,66,Brooklyn Lager (16 oz.),American Amber / Red Lager,437,16.0\n462,0.052000000000000005,,65,Brooklyn Lager (12 oz.),American Amber / Red Lager,437,12.0\n463,0.08,,538,Tour de Nez Belgian IPA (Current),Belgian IPA,530,16.0\n464,,,504,Roler Bock (Current),Maibock / Helles Bock,530,16.0\n465,0.073,85.0,383,Black Adder IBA (Current),American Black Ale,530,16.0\n466,0.099,,29,Very Noddy Lager (Current),Schwarzbier,530,16.0\n467,0.062,42.0,28,Tule Duck Red Ale (Current),American Amber / Red Ale,530,16.0\n468,0.057999999999999996,35.0,27,Original Orange Blossom Ale (Current),Herbed / Spiced Beer,530,16.0\n469,0.052000000000000005,40.0,26,Black Noddy Lager (Current),Schwarzbier,530,16.0\n470,0.053,,1627,Cleveland Beer Week 2013,Munich Helles Lager,357,16.0\n471,0.045,,2552,Painted Turtle,American Pale Ale (APA),56,12.0\n472,0.06,40.0,2125,1836,American Blonde Ale,214,12.0\n473,0.06,20.0,2124,Summer's Wit,Witbier,214,12.0\n474,0.09,118.0,2123,More Cowbell,American Double / Imperial IPA,214,16.0\n475,0.065,,2608,Wrath of Pele,American Brown Ale,24,16.0\n476,0.068,,2607,Black Beer'd,American Black Ale,24,16.0\n477,0.078,,2606,Mr. Tea,Fruit / Vegetable Beer,24,24.0\n478,0.055,40.0,2478,Pale Alement,American Pale Ale (APA),24,12.0\n479,0.099,115.0,2471,Hopkick Dropkick,American Double / Imperial IPA,24,12.0\n480,0.06,,2470,Kreamed Corn,Cream Ale,24,12.0\n481,0.065,,2464,Coconoats,American Pale Wheat Ale,24,16.0\n482,0.068,16.0,2160,Joey Wheat,American Pale Wheat Ale,24,16.0\n483,0.07200000000000001,86.0,2158,3:33 Black IPA,American IPA,24,16.0\n484,0.068,,2072,MCA,American IPA,24,16.0\n485,0.055,40.0,2054,Pale Alement,American Pale Ale (APA),24,16.0\n486,0.05,14.0,2196,Couch Select Lager,American Pale Lager,197,12.0\n487,0.055999999999999994,36.0,668,Mucho Aloha Hawaiian Pale Ale,American Pale Ale (APA),517,12.0\n488,0.049,,52,Heinnieweisse Weissebier,Hefeweizen,556,12.0\n489,0.068,,51,Snapperhead IPA,American IPA,556,12.0\n490,0.049,,50,Moo Thunder Stout,Milk / Sweet Stout,556,12.0\n491,0.043,,49,Porkslap Pale Ale,American Pale Ale (APA),556,12.0\n492,0.09300000000000001,,2657,Blackbeard,American Double / Imperial Stout,5,12.0\n493,0.062,,2656,Rye Knot,American Brown Ale,5,12.0\n494,0.06,,2655,Dead Arm,American Pale Ale (APA),5,12.0\n495,0.048,,2654,32°/50° Kölsch ,Kölsch,5,16.0\n496,0.077,,2653,HopArt,American IPA,5,16.0\n497,0.09699999999999999,,2652,Boy King,American Double / Imperial IPA,5,16.0\n498,0.052000000000000005,,2252,Gran Sport,American Porter,182,16.0\n499,0.053,25.0,2214,Horny Toad Cerveza,American Blonde Ale,182,16.0\n500,0.063,35.0,2213,Native Amber,American Amber / Red Ale,182,16.0\n501,0.068,100.0,1442,F5 IPA,American IPA,182,16.0\n502,0.063,35.0,170,Native Amber (2013),American Amber / Red Ale,182,16.0\n503,0.053,25.0,169,Horny Toad Cerveza (2013),American Blonde Ale,182,16.0\n504,0.068,100.0,2315,Hopportunity Knocks IPA,American IPA,155,12.0\n505,0.06,,1808,Pilot Rock Porter,American Porter,155,12.0\n506,0.055999999999999994,55.0,1419,Caldera Pale Ale,American Pale Ale (APA),155,12.0\n507,0.039,16.0,878,Lawnmower Lager,American Adjunct Lager,155,12.0\n508,0.054000000000000006,24.0,794,Ashland Amber Ale (2009),American Amber / Red Ale,155,12.0\n509,0.061,94.0,793,Caldera IPA (2009),American IPA,155,12.0\n510,0.061,94.0,792,Caldera IPA (2007),American IPA,155,12.0\n511,0.055999999999999994,55.0,791,Caldera Pale Ale (2010),American Pale Ale (APA),155,12.0\n512,0.055999999999999994,55.0,790,Caldera Pale Ale (2009),American Pale Ale (APA),155,12.0\n513,0.055999999999999994,55.0,789,Caldera Pale Ale (2005),American Pale Ale (APA),155,12.0\n514,0.055999999999999994,55.0,788,Caldera Pale Ale (2007),American Pale Ale (APA),155,12.0\n515,0.055999999999999994,55.0,38,Caldera Pale Ale (2011),American Pale Ale (APA),155,12.0\n516,0.054000000000000006,24.0,37,Ashland Amber Ale,American Amber / Red Ale,155,12.0\n517,0.061,94.0,36,Caldera IPA,American IPA,155,12.0\n518,0.05,,2257,Remain in Light,American Pilsner,178,12.0\n519,0.065,,2256,Flower Child (2014),American IPA,178,12.0\n520,,,870,THP White (2006),Witbier,497,12.0\n521,,,869,THP Amber (2006),American Amber / Red Ale,497,12.0\n522,,,868,THP Light (2006),American Blonde Ale,497,12.0\n523,,,867,THP Dark (2006),English Dark Mild Ale,497,12.0\n524,0.099,43.0,2068,Imperial Pumpkin Stout,Pumpkin Ale,230,16.0\n525,0.09,130.0,2067,Dead-Eye DIPA,American Double / Imperial IPA,230,16.0\n526,0.055,64.0,2066,Fisherman's IPA,American IPA,230,12.0\n527,0.054000000000000006,35.0,2065,Fisherman's Pils,German Pilsener,230,12.0\n528,0.055,30.0,2064,Fisherman's Brew,American Amber / Red Ale,230,12.0\n529,0.055,35.0,1928,Cape Cod Red,American Amber / Red Ale,267,16.0\n530,0.049,10.0,1927,Beach Blonde,American Blonde Ale,267,16.0\n531,0.065,80.0,2227,Dark Voyage Black IPA (2013),American Black Ale,192,12.0\n532,0.052000000000000005,28.0,2226,Wisconsin Amber,Vienna Lager,192,12.0\n533,0.046,18.0,2225,Lake House,Munich Helles Lager,192,12.0\n534,0.055999999999999994,55.0,1954,Ghost Ship White IPA,American IPA,192,12.0\n535,0.046,18.0,1910,Lake House,Munich Helles Lager,192,16.0\n536,0.062,70.0,1177,Mutiny IPA,American IPA,192,12.0\n537,0.052000000000000005,,840,Wisconsin Amber (1998),Vienna Lager,192,12.0\n538,0.042,,180,Island Wheat,American Pale Wheat Ale,192,12.0\n539,0.052000000000000005,,63,Wisconsin Amber (2013),Vienna Lager,192,12.0\n540,0.05,,62,U.S. Pale Ale,American Pale Ale (APA),192,12.0\n541,,,61,Supper Club Lager,American Pale Lager,192,12.0\n542,0.04,,784,Carolina Lighthouse (2007),American Blonde Ale,504,12.0\n543,0.05,,783,Carolina Blonde (2006),American Blonde Ale,504,12.0\n544,0.035,,782,Carolina Blonde Light (2005),American Blonde Ale,504,12.0\n545,0.059000000000000004,22.0,2255,Santa's Secret,Winter Warmer,179,16.0\n546,0.057,,530,Flagship IPA,English India Pale Ale (IPA),179,12.0\n547,0.051,,427,Sky Blue Golden Ale,Kölsch,179,12.0\n548,0.099,100.0,2094,Epitome,American Black Ale,222,16.0\n549,0.039,9.0,1941,Monkey Chased the Weasel,Berliner Weissbier,222,16.0\n550,0.078,80.0,1940,077XX,American Double / Imperial IPA,222,16.0\n551,0.042,35.0,1439,Boat Beer,American IPA,222,12.0\n552,0.069,,1465,Granny Smith Hard Apple Cider,Cider,404,16.0\n553,0.069,,1464,Dry Hard Apple Cider,Cider,404,16.0\n554,0.055999999999999994,,1744,Farmer Ted's Cream Ale,Cream Ale,331,12.0\n555,0.052000000000000005,,1743,Firewater India Pale Ale,American IPA,331,12.0\n556,0.047,,1742,White Zombie Ale,Witbier,331,12.0\n557,0.07,,1719,King Winterbolt Winter Ale,Winter Warmer,331,12.0\n558,0.047,,638,White Zombie Ale,Witbier,331,12.0\n559,0.052000000000000005,,507,Firewater India Pale Ale,American IPA,331,12.0\n560,0.055999999999999994,,480,Farmer Ted's Farmhouse Cream Ale,Cream Ale,331,12.0\n561,0.048,16.0,1882,Whitecap Wit,Witbier,285,16.0\n562,0.078,16.0,1881,Seiche Scottish Ale,Scottish Ale,285,16.0\n563,0.057999999999999996,,2446,Peanut Butter Jelly Time,American Brown Ale,96,12.0\n564,0.054000000000000006,,2106,King Coconut,American Porter,96,12.0\n565,0.085,90.0,2600,Gone A-Rye,American Double / Imperial IPA,29,16.0\n566,,,2210,Special Release,,29,16.0\n567,0.068,70.0,2052,Dankosaurus,American IPA,29,16.0\n568,0.051,35.0,1584,Scruffy's Smoked Alt,Smoked Beer,29,16.0\n569,0.051,36.0,1182,Elliott's Phoned Home Pale Ale,American Pale Ale (APA),29,16.0\n570,0.05,18.0,1050,The Lawn Ranger,Cream Ale,29,16.0\n571,0.05,,1219,All American Blonde Ale,American Blonde Ale,452,12.0\n572,0.05,,1218,All American Red Ale,American Amber / Red Ale,452,12.0\n573,0.05,40.0,2377,Main St. Virginia Ale,Altbier,122,12.0\n574,0.045,24.0,1839,Chin Music Amber Lager,American Amber / Red Lager,122,12.0\n575,0.05,40.0,1248,Main St. Virginia Ale,Altbier,122,12.0\n576,0.052000000000000005,42.0,1247,Ray Ray’s Pale Ale,American Pale Ale (APA),122,12.0\n577,0.051,15.0,1649,Chai Ale,Herbed / Spiced Beer,350,16.0\n578,0.07200000000000001,85.0,1648,Lucky Day IPA,American IPA,350,16.0\n579,0.095,99.0,1647,Terrace Hill Double IPA,American Double / Imperial IPA,350,16.0\n580,0.075,77.0,1646,Catch 23,American Black Ale,350,16.0\n581,0.07,,2057,Stickin' In My Rye,Rye Beer,236,24.0\n582,0.06,45.0,2056,Black Me Stout,American Stout,236,12.0\n583,0.05,22.0,2055,Killer Kolsch,Kölsch,236,12.0\n584,0.07,65.0,1933,Missile IPA,American IPA,236,12.0\n585,0.045,,2019,Enlighten,Kölsch,250,16.0\n586,0.065,8.0,2018,Ale Cider,Fruit / Vegetable Beer,250,16.0\n587,0.055,30.0,2017,Pail Ale,American Pale Ale (APA),250,16.0\n588,0.045,,2016,Englishman,English Brown Ale,250,16.0\n589,0.08,69.0,2080,8 Barrel,American Strong Ale,226,16.0\n590,0.055,40.0,2079,Oktoberfest,Märzen / Oktoberfest,226,16.0\n591,0.057,58.0,2380,IPA #11,American IPA,121,16.0\n592,0.057,10.0,2379,Blood Orange Honey,Fruit / Vegetable Beer,121,16.0\n593,0.052000000000000005,,2354,Lighthouse Amber,Altbier,121,16.0\n594,0.08900000000000001,126.0,2440,Bay of Bengal Double IPA (2014),American Double / Imperial IPA,99,12.0\n595,0.049,29.0,567,Churchkey Pilsner Style Beer,American Pilsner,526,12.0\n596,0.05,,1342,First Press,Cider,425,12.0\n597,0.05,,1341,Magic Apple,Cider,425,12.0\n598,0.055,25.0,2349,Cubano Espresso,Bock,141,12.0\n599,0.062,65.0,2014,Operation Homefront,American IPA,141,12.0\n600,0.08199999999999999,65.0,2013,Wandering Pelican,American Black Ale,141,12.0\n601,0.055,,2012,Sugar Plum,American Brown Ale,141,12.0\n602,0.055,,2011,Oktoberfest,Märzen / Oktoberfest,141,12.0\n603,0.06,,2010,Puppy's Breath Porter,American Porter,141,12.0\n604,0.045,,2009,Happening Now,American IPA,141,12.0\n605,0.07,60.0,1726,Hopped on the High Seas (Hop #529),American IPA,141,12.0\n606,0.07,60.0,1725,Hopped on the High Seas (Calypso),American IPA,141,12.0\n607,0.063,,1695,Wiregrass Post-Prohibition Ale,American Pale Ale (APA),141,12.0\n608,0.07,60.0,1694,Dry-Hopped On The High Seas Caribbean-Style IPA,American IPA,141,12.0\n609,0.07,60.0,1693,Hopped on the High Seas (Citra),American IPA,141,12.0\n610,0.07,60.0,1692,Hopped on the High Seas (Ahtanum),American IPA,141,12.0\n611,0.055,,1369,Gwar Beer,American Pale Ale (APA),141,12.0\n612,0.052000000000000005,,1243,Tropical Heatwave,American Pale Wheat Ale,141,16.0\n613,0.075,70.0,1142,Humidor Series India Pale Ale,American IPA,141,12.0\n614,0.075,70.0,1141,Jai Alai IPA Aged on White Oak,American IPA,141,12.0\n615,0.08,65.0,1140,José Martí American Porter,American Porter,141,12.0\n616,0.05,,1139,Invasion Pale Ale,American Pale Ale (APA),141,12.0\n617,0.055,25.0,1138,Maduro Brown Ale,English Brown Ale,141,12.0\n618,0.055,25.0,571,Maduro Brown Ale,American Brown Ale,141,12.0\n619,0.05,,570,Hotter Than Helles Lager,Munich Helles Lager,141,12.0\n620,0.07200000000000001,75.0,569,Tocobaga Red Ale,American Amber / Red Ale,141,12.0\n621,0.075,70.0,546,Jai Alai IPA,American IPA,141,12.0\n622,0.05,18.0,545,Florida Cracker Belgian Wit,Witbier,141,12.0\n623,0.048,,2338,Shark Tracker Light lager,Light Lager,145,12.0\n624,0.06,,1365,Pumple Drumkin,Pumpkin Ale,145,12.0\n625,0.045,,1094,Grey Lady,Witbier,145,12.0\n626,0.062,,657,Summer of Lager,Munich Helles Lager,145,12.0\n627,0.065,,656,Indie Pale Ale,American IPA,145,12.0\n628,0.038,,359,Sankaty Light Lager,Light Lager,145,12.0\n629,0.055999999999999994,,56,Whale's Tale Pale Ale,English Pale Ale,145,12.0\n630,0.067,60.0,1772,Jacaranada Rye IPA,American IPA,320,16.0\n631,0.06,75.0,1393,Cascadian Dark Ale,American Black Ale,418,12.0\n632,0.044000000000000004,13.0,893,Wheat the People,American Pale Wheat Ale,418,16.0\n633,0.047,17.0,1407,Tybee Island Blonde,American Blonde Ale,415,12.0\n634,0.062,55.0,1406,Savannah Brown Ale,American Brown Ale,415,12.0\n635,0.046,11.0,2438,Rhode Island Blueberry,Kölsch,101,12.0\n636,0.065,75.0,2437,Newport Storm IPA,American IPA,101,12.0\n637,0.052000000000000005,24.0,751,Hurricane Amber Ale (2004),American Amber / Red Ale,101,12.0\n638,0.052000000000000005,24.0,120,Hurricane Amber Ale,American Amber / Red Ale,101,12.0\n639,0.057999999999999996,,2061,Big Blue Van,Fruit / Vegetable Beer,232,16.0\n640,0.068,75.0,970,Des Moines IPA,American IPA,482,16.0\n641,0.048,22.0,969,Capital Gold Golden Lager,German Pilsener,482,16.0\n642,0.055999999999999994,21.0,968,Farmer John's Multi-Grain Ale,American Blonde Ale,482,16.0\n643,0.05,,2351,Behemoth,American Pilsner,139,12.0\n644,0.052000000000000005,,1650,Arkansas Red,American Amber / Red Ale,139,12.0\n645,0.057,,1337,Core Oatmeal Stout,Oatmeal Stout,139,12.0\n646,0.061,,1336,Core ESB,Extra Special / Strong Bitter (ESB),139,12.0\n647,0.038,,737,Chester's Beer (2005),American Pale Lager,512,12.0\n648,0.05,,129,Heiner Brau Kölsch,Kölsch,553,12.0\n649,0.048,,716,Trigger Blonde Ale,American Blonde Ale,515,16.0\n650,0.075,29.0,659,Crabtree Oatmeal Stout,Oatmeal Stout,515,16.0\n651,0.077,71.0,556,Eclipse Black IPA,American Black Ale,515,16.0\n652,0.06,46.0,2538,Neomexicanus Native,American Pale Ale (APA),63,12.0\n653,0.075,25.0,2355,Old Soul,Belgian Strong Pale Ale,63,12.0\n654,0.059000000000000004,,1689,Snowcat Coffee Stout,American Stout,63,12.0\n655,,,1163,WinterWonderGrass Festival Ale,American Amber / Red Ale,63,12.0\n656,,,940,Boohai Red Ale,American Amber / Red Ale,63,12.0\n657,0.052000000000000005,15.0,685,Lava Lake Wit,Witbier,63,12.0\n658,0.06,,613,Mountain Livin' Pale Ale,American Pale Ale (APA),63,12.0\n659,0.052000000000000005,25.0,356,Crazy Mountain Amber Ale,American Amber / Red Ale,63,12.0\n660,0.065,65.0,2029,Tropicalia,American IPA,247,12.0\n661,0.045,,2028,Athena,Berliner Weissbier,247,12.0\n662,0.049,25.0,2293,Aviator Raspberry Blonde,American Blonde Ale,169,12.0\n663,0.055,,1105,3 Picket Porter,American Porter,169,12.0\n664,0.055999999999999994,,1104,Rusty Nail Pale Ale,American Pale Ale (APA),169,12.0\n665,0.065,,2145,Red Water Irish Style Red,American Amber / Red Ale,212,12.0\n666,0.066,,1804,Mjöllnir,Herbed / Spiced Beer,212,12.0\n667,0.055,,1602,Bear Butte Nut Brown Ale,American Brown Ale,212,12.0\n668,0.045,,1301,Easy Livin' Summer Ale,American Blonde Ale,212,12.0\n669,0.055,,542,Canyon Cream Ale,Cream Ale,212,12.0\n670,0.069,,272,Pile O'Dirt Porter,American Porter,212,12.0\n671,0.06,,271,11th Hour IPA,American IPA,212,12.0\n672,0.06,31.0,1057,South Ridge Amber Ale,American Amber / Red Ale,472,16.0\n673,0.052000000000000005,23.0,681,Summertime Ale,Kölsch,472,16.0\n674,0.049,,1789,Lost River Blonde Ale,American Blonde Ale,315,16.0\n675,0.054000000000000006,,1788,Monon Wheat,Witbier,315,16.0\n676,0.08,,1787,Floyd's Folly,Scottish Ale,315,16.0\n677,0.063,,1786,Half Court IPA,American IPA,315,16.0\n678,0.045,,1763,Geary's Pale Ale,English Pale Ale,323,12.0\n679,0.06,,1311,Geary's Summer Ale,Kölsch,323,12.0\n680,0.08,,2078,Stone of Arbroath,Scotch Ale / Wee Heavy,227,12.0\n681,0.05,15.0,1809,The Tradition,American Blonde Ale,227,12.0\n682,0.053,11.0,1263,El Hefe Speaks,Hefeweizen,227,12.0\n683,0.055,,1092,Penn Quarter Porter,American Porter,227,12.0\n684,0.092,115.0,851,On the Wings of Armageddon,American Double / Imperial IPA,227,12.0\n685,0.065,80.0,186,The Corruption,American IPA,227,12.0\n686,0.07,,185,The Citizen,Belgian Pale Ale,227,12.0\n687,0.06,,184,The Public,American Pale Ale (APA),227,12.0\n688,0.065,,1224,Dank IPA,American IPA,451,16.0\n689,0.065,,964,Dank IPA (2012),American IPA,451,16.0\n690,0.07200000000000001,,1623,Lift Off IPA,American IPA,358,16.0\n691,0.055,,110,BrewFarm Select Golden Lager,American Pale Lager,554,12.0\n692,0.05,,1735,Sprocket Blonde Ale (2006),American Blonde Ale,333,12.0\n693,0.05,,1734,Sprocket Pale Ale (2006),American Pale Ale (APA),333,12.0\n694,0.063,37.0,1746,Dead Armadillo Amber Ale,American Amber / Red Ale,330,12.0\n695,0.06,,2371,Neato Bandito,Euro Pale Lager,127,12.0\n696,0.075,33.0,2251,Oak Cliff Coffee Ale,American Brown Ale,127,12.0\n697,0.085,100.0,2166,Dream Crusher Double IPA,American Double / Imperial IPA,127,12.0\n698,0.06,,1827,Deep Ellum Pale Ale,American Pale Ale (APA),127,12.0\n699,0.07,,1203,Double Brown Stout,Baltic Porter,127,12.0\n700,0.048,25.0,1202,Farmhouse Wit,Saison / Farmhouse Ale,127,16.0\n701,0.046,,1161,Rye Pils Session Lager,German Pilsener,127,12.0\n702,0.052000000000000005,23.0,946,Dallas Blonde,American Blonde Ale,127,12.0\n703,0.07,70.0,943,Deep Ellum IPA,American IPA,127,12.0\n704,0.045,44.0,1886,Thrasher Session India Pale Ale,American IPA,283,12.0\n705,0.05,16.0,1885,Gutch English Style Mild Ale,English Pale Mild Ale,283,12.0\n706,0.059000000000000004,55.0,1213,Chuli Stout,Irish Dry Stout,453,12.0\n707,0.055999999999999994,46.0,1159,Mother Ale,American Blonde Ale,453,12.0\n708,0.065,71.0,947,Twister Creek India Pale Ale,American IPA,453,12.0\n709,0.057999999999999996,46.0,929,Single Engine Red,Irish Red Ale,453,12.0\n710,0.07,,1944,Incredible Pedal IPA,American IPA,263,12.0\n711,0.05,,1943,Graham Cracker Porter,American Porter,263,12.0\n712,0.05,40.0,1210,Mirror Pond Pale Ale,American Pale Ale (APA),454,12.0\n713,0.052000000000000005,16.0,2550,Weissenheimer,Hefeweizen,57,12.0\n714,0.049,22.0,2505,Abbey's Single (2015- ),Abbey Single Ale,57,12.0\n715,0.063,76.0,2025,Vertex IPA,American IPA,57,12.0\n716,0.05,12.0,2021,Here Gose Nothin',Gose,57,12.0\n717,0.05,,2015,Strawberry Blonde,Fruit / Vegetable Beer,57,12.0\n718,0.096,85.0,1888,Hoperation Overload,American Double / Imperial IPA,57,12.0\n719,0.049,22.0,1887,Abbey's Single Ale (Current),Abbey Single Ale,57,12.0\n720,0.044000000000000004,45.0,2051,Bravo Four Point,American Pale Ale (APA),237,12.0\n721,0.052000000000000005,26.0,1201,Striped Bass Pale Ale,American Pale Ale (APA),237,12.0\n722,0.054000000000000006,27.0,924,Deadicated Amber,American Amber / Red Ale,491,16.0\n723,,,731,Kaleidoscope Collaboration 2012,American Black Ale,491,16.0\n724,0.071,85.0,730,California Sunshine Rye IPA,American IPA,491,16.0\n725,0.07400000000000001,12.0,647,Full Boar Scotch Ale,Scotch Ale / Wee Heavy,491,16.0\n726,0.045,,1773,12 Man Pale Ale,American Pale Ale (APA),319,12.0\n727,0.065,72.0,1795,Filthy Hoppin' IPA,American IPA,311,16.0\n728,,,944,Dock Street Amber Beer (1992),American Amber / Red Ale,488,12.0\n729,,,524,Dolores River Hefeweizen,Hefeweizen,531,16.0\n730,,,450,Dolores River ESB,Extra Special / Strong Bitter (ESB),531,16.0\n731,,,449,Snaggletooth Double Pale Ale,American Double / Imperial IPA,531,16.0\n732,,,448,Dolores River Pale Ale,American Pale Ale (APA),531,16.0\n733,,,447,Dolores River Dry Stout,Irish Dry Stout,531,16.0\n734,,,446,Dolores River Mild,English Dark Mild Ale,531,16.0\n735,0.049,,1246,Cranberry Blend,Cider,446,12.0\n736,0.051,,977,Orignal Blend,Cider,446,12.0\n737,0.066,100.0,881,Hop Abomination,American IPA,496,12.0\n738,0.051,17.0,880,Apricot Blonde,Fruit / Vegetable Beer,496,12.0\n739,0.043,12.0,872,Dry Dock Hefeweizen,Hefeweizen,496,12.0\n740,0.057999999999999996,49.0,871,Dry Dock Amber Ale,American Amber / Red Ale,496,12.0\n741,0.061,64.0,1685,Category 3 IPA,American IPA,340,12.0\n742,0.045,18.0,457,Dundee Summer Wheat Beer,American Pale Wheat Ale,538,12.0\n743,0.05,,1590,Pumpkin Patch Ale,Pumpkin Ale,369,16.0\n744,0.078,74.0,1382,Crank Yanker IPA,American IPA,369,16.0\n745,0.06,,1110,River Runners Pale Ale,American Pale Ale (APA),369,16.0\n746,0.05,,1014,Pumpkin Patch Ale (2012),Pumpkin Ale,369,16.0\n747,0.055,,911,Mountain Fairy Raspberry Wheat,Fruit / Vegetable Beer,369,16.0\n748,0.045,,680,Boater Beer,German Pilsener,369,16.0\n749,0.078,74.0,395,Crank Yanker IPA (2011),American IPA,369,16.0\n750,0.057,,1642,Bleeding Buckeye Red Ale,Extra Special / Strong Bitter (ESB),352,16.0\n751,0.049,25.0,673,Dottie Seattle Lager,American Amber / Red Lager,516,16.0\n752,0.07,,1107,Nut Sack Imperial Brown Ale,American Brown Ale,465,12.0\n753,0.05,,1039,Underachiever,American Adjunct Lager,473,16.0\n754,0.052000000000000005,,2477,Lil' Brainless Raspberries,Fruit / Vegetable Beer,81,12.0\n755,0.052000000000000005,,2008,Element 29,American Pale Ale (APA),81,12.0\n756,0.05,,2004,Hop Syndrome,American Pale Lager,81,12.0\n757,0.062,,2003,Escape to Colorado,American IPA,81,12.0\n758,0.043,60.0,2292,Little Sister India Style Session Ale,American IPA,170,12.0\n759,0.062,80.0,1504,Country Boy IPA,American IPA,170,12.0\n760,0.049,23.0,2604,Blonde Czich,American Blonde Ale,26,16.0\n761,0.07,61.0,2432,White Reaper,Belgian IPA,26,16.0\n762,0.051,,2431,Bobblehead,American Pale Wheat Ale,26,16.0\n763,0.052000000000000005,,2430,Lucky Dog,American Pale Ale (APA),26,16.0\n764,0.048,,2429,Voodoo,American Porter,26,16.0\n765,0.054000000000000006,48.0,1967,General George Patton Pilsner,Czech Pilsener,26,16.0\n766,0.04,,2283,Nomader Weiss,Berliner Weissbier,173,12.0\n767,0.085,,2248,Molotov Lite,American Double / Imperial IPA,173,16.0\n768,0.055,,1287,Hipster Ale (Two Roads Brewing),American Pale Ale (APA),173,12.0\n769,0.027000000000000003,,1286,Bikini Beer,American IPA,173,12.0\n770,0.055,,640,Hipster Ale (Westbrook Brewing),American Pale Ale (APA),173,12.0\n771,0.05,32.0,1722,Iron Horse Pale Ale,American Pale Ale (APA),335,12.0\n772,0.045,19.0,1435,Stone's Throw IPA,Scottish Ale,335,12.0\n773,0.067,70.0,1434,Wood Chipper India Pale Ale,American IPA,335,12.0\n774,0.063,55.0,2089,Trail Head,American Pale Ale (APA),224,12.0\n775,0.07,80.0,2088,Hop Stalker Fresh Hop IPA,American IPA,224,16.0\n776,0.07,58.0,1455,Sudice American Stout,American Stout,405,16.0\n777,0.05,20.0,1454,Parcae Belgian Style Pale Ale,Belgian Pale Ale,405,16.0\n778,0.05,20.0,1453,Norns Roggenbier,Roggenbier,405,16.0\n779,0.05,20.0,1452,Laimas Kölsch Style Ale,Kölsch,405,16.0\n780,0.07,70.0,1451,Moirai India Pale Ale,American IPA,405,16.0\n781,0.075,53.0,2191,Loki Red Ale,American Amber / Red Ale,201,16.0\n782,0.046,,1731,Peaches & Cream,Fruit / Vegetable Beer,201,16.0\n783,0.051,,1022,Quaff India Style Session Ale,American IPA,201,16.0\n784,0.075,53.0,895,Loki Red Ale (2013),American Amber / Red Ale,201,16.0\n785,0.069,,682,Mjolnir Imperial IPA,American Double / Imperial IPA,201,16.0\n786,0.05,,112,Fearless Scottish Ale,Scottish Ale,201,16.0\n787,0.081,,2289,Mastermind,American Double / Imperial IPA,172,12.0\n788,0.08199999999999999,,2027,Hyzer Flip,American Double / Imperial IPA,172,16.0\n789,0.08199999999999999,80.0,1929,Second Fiddle,American Double / Imperial IPA,172,16.0\n790,0.055,30.0,1858,Hodad Porter,American Porter,172,16.0\n791,0.045,,2591,Weiss Weiss Baby,Kristalweizen,36,12.0\n792,0.055,45.0,2590,Czech Yo Self,Czech Pilsener,36,12.0\n793,0.048,20.0,1968,FMB 101,Kölsch,36,12.0\n794,0.09,,1981,Hardcore Chimera,American Double / Imperial IPA,256,16.0\n795,0.08,80.0,1664,Sobek & Set,American Black Ale,256,16.0\n796,0.086,,1663,Nuclear Winter,Belgian Strong Dark Ale,256,16.0\n797,0.05,22.0,1662,Wet Hot American Wheat Ale,American Pale Wheat Ale,256,16.0\n798,0.053,,941,Secret Stache Stout,American Stout,256,16.0\n799,0.08,72.0,935,Fascist Pig Ale,American Amber / Red Ale,256,16.0\n800,0.055,,809,Cut Throat Pale Ale,American Pale Ale (APA),256,16.0\n801,0.075,,481,Threadless IPA,American IPA,256,16.0\n802,0.055,,351,Cut Throat Pale Ale (2011),American Pale Ale (APA),256,16.0\n803,0.047,,350,Golden Wing Blonde Ale,American Blonde Ale,256,16.0\n804,0.045,47.0,2569,Easy Jack,American IPA,48,12.0\n805,0.075,75.0,2463,Union Jack,American IPA,48,12.0\n806,0.053,,2462,Pivo Pils,German Pilsener,48,12.0\n807,0.047,,1957,805 Blonde Ale,American Blonde Ale,48,12.0\n808,0.047,20.0,1733,805,American Blonde Ale,48,12.0\n809,0.065,,2624,Deflator,Doppelbock,16,16.0\n810,0.05,27.0,2284,Hinchtown Hammer Down,American Blonde Ale,16,16.0\n811,0.06,104.0,1610,Half Cycle IPA,American IPA,16,16.0\n812,,,520,Inclined Plane Ale,American IPA,532,12.0\n813,0.055,,2554,Moped Traveler,American Pale Ale (APA),54,16.0\n814,0.071,60.0,608,Snake Dog IPA,American IPA,521,12.0\n815,0.047,28.0,607,Underdog Atlantic Lager,American Pale Lager,521,12.0\n816,0.04,,2567,Flying Mouse 8,American Porter,50,12.0\n817,0.07,70.0,2566,Flying Mouse 4,American IPA,50,12.0\n818,0.078,,1899,La Ferme Urbaine Farmhouse Ale,Saison / Farmhouse Ale,279,12.0\n819,0.06,,983,Backyahd IPA,American IPA,279,12.0\n820,0.065,,982,Raincloud Robust Porter,American Porter,279,12.0\n821,0.045,,981,Barstool American Golden Ale,American Blonde Ale,279,12.0\n822,0.05,18.0,2111,What the Butler Saw,Witbier,217,12.0\n823,0.069,65.0,2110,1916 Shore Shiver,American IPA,217,12.0\n824,0.052000000000000005,,2172,Quick WIT,Belgian Pale Ale,206,12.0\n825,0.062,,2171,The Optimist,American IPA,206,12.0\n826,0.045,,1911,Suicide Squeeze IPA,American IPA,206,16.0\n827,0.065,,1803,Java the Hop,American IPA,206,16.0\n828,0.062,,1566,Next Adventure Black IPA,American Black Ale,206,16.0\n829,0.067,,1515,3-Way IPA (2013),American IPA,206,16.0\n830,0.057999999999999996,,1214,Tender Loving Empire NWPA,American Pale Ale (APA),206,16.0\n831,0.052000000000000005,,674,Quick Wit Belgianesque Ale,Witbier,206,16.0\n832,0.055,,562,Sunrise Oatmeal Pale Ale,American Pale Ale (APA),206,16.0\n833,0.08800000000000001,,552,Cavatica Stout,American Double / Imperial Stout,206,16.0\n834,0.051,,319,1811 Lager,American Amber / Red Lager,206,16.0\n835,0.07400000000000001,97.0,318,Vortex IPA,American IPA,206,16.0\n836,,,2322,Fort Pitt Ale,American Amber / Red Ale,151,12.0\n837,0.047,19.0,2661,Park,American Pale Wheat Ale,4,12.0\n838,0.055999999999999994,16.0,2660,Westfalia,American Amber / Red Ale,4,12.0\n839,0.046,17.0,2659,KSA,Kölsch,4,12.0\n840,0.063,42.0,2658,Villager,American IPA,4,12.0\n841,0.085,50.0,2625,Dirty Bastard,Scotch Ale / Wee Heavy,15,12.0\n842,0.07200000000000001,65.0,1565,Centennial IPA,American IPA,15,12.0\n843,0.047,42.0,1223,All Day IPA,American IPA,15,12.0\n844,0.076,73.0,1874,El Chingon IPA,American IPA,287,12.0\n845,0.057,40.0,1873,Block Party Robust Porter,American Porter,287,12.0\n846,0.052000000000000005,20.0,1872,Local Buzz,American Blonde Ale,287,12.0\n847,0.055,,2613,Feel Like Maplin' Love,Oatmeal Stout,22,16.0\n848,0.05,,2612,Father's Beer,Belgian Pale Ale,22,16.0\n849,0.06,,2611,The 26th,American IPA,22,16.0\n850,0.064,90.0,2610,The Gadget,American IPA,22,16.0\n851,0.04,,1657,Leprechaun Lager,American Pale Lager,348,12.0\n852,0.052000000000000005,17.0,2309,Sunbru Kölsch,Kölsch,160,12.0\n853,0.06,21.0,1635,Kilt Lifter Scottish-Style Ale,,160,12.0\n854,0.051,,1616,Pumpkin Porter,American Porter,160,12.0\n855,0.042,9.0,1585,Four Peaks Peach Ale,Fruit / Vegetable Beer,160,12.0\n856,0.067,47.0,358,Hop Knot IPA,American IPA,160,12.0\n857,0.06,21.0,179,Kilt Lifter Scottish-Style Ale (2009),Scottish Ale,160,12.0\n858,0.052000000000000005,,178,Sunbru Kölsch,Kölsch,160,12.0\n859,0.06,,2428,Four String Vanilla Porter,American Porter,105,12.0\n860,0.05,28.0,2427,Suncaster Summer Wheat,American Pale Wheat Ale,105,12.0\n861,0.057,36.0,2425,Brass Knuckle Pale Ale,American Pale Ale (APA),105,12.0\n862,0.07,70.0,2424,Big Star White IPA,American White IPA,105,12.0\n863,0.055999999999999994,,1998,Old Detroit,American Amber / Red Ale,253,12.0\n864,0.069,69.0,1556,Batch 69 IPA,American IPA,253,12.0\n865,0.055,18.0,1208,Twisted Helles Summer Lager,Munich Helles Lager,253,12.0\n866,0.053,27.0,2527,OktoberFiesta,,66,12.0\n867,0.065,33.0,2526,Texicali ,American Brown Ale,66,12.0\n868,0.06,,2525,Pinata Protest,Witbier,66,12.0\n869,0.042,20.0,2524,Bat Outta Helles,Munich Helles Lager,66,12.0\n870,0.068,,2523,Original,American Amber / Red Ale,66,12.0\n871,0.042,10.0,2522,Rye Wit,Witbier,66,12.0\n872,0.059000000000000004,70.0,2521,Soul Doubt,American IPA,66,12.0\n873,0.044000000000000004,5.0,2520,Yo Soy Un Berliner,Berliner Weissbier,66,12.0\n874,0.04,,1174,77 Fremont Select Spring Session IPA,American IPA,460,12.0\n875,0.045,,1116,Fremont Organic Pale Ale,American Pale Ale (APA),460,12.0\n876,0.08,,994,Abominable Ale,English Strong Ale,460,12.0\n877,0.065,35.0,901,Harvest Ale,Saison / Farmhouse Ale,460,12.0\n878,0.065,45.0,875,Fremont Summer Ale,American Pale Ale (APA),460,12.0\n879,0.055999999999999994,30.0,858,Universale Pale Ale,American Pale Ale (APA),460,12.0\n880,0.065,80.0,857,Interurban IPA,American IPA,460,12.0\n881,0.053,32.0,1300,Gateway Kolsch Style Ale,Kölsch,433,12.0\n882,0.07,24.0,1260,Wee-Heavy-Er Scotch Ale,Scotch Ale / Wee Heavy,433,12.0\n883,0.052000000000000005,42.0,1259,13 Rebels ESB,Extra Special / Strong Bitter (ESB),433,12.0\n884,0.07,73.0,2254,Salamander Slam,American IPA,180,16.0\n885,0.05,,1658,Cack-A-Lacky,American Pale Ale (APA),347,12.0\n886,0.07200000000000001,50.0,2077,No Wake IPA,American IPA,228,12.0\n887,0.049,15.0,2076,Boathouse Blonde,American Blonde Ale,228,12.0\n888,0.05,26.0,2075,Cedar Point,American Amber / Red Ale,228,12.0\n889,0.067,70.0,2426,Clean Shave IPA,American IPA,106,12.0\n890,0.07200000000000001,75.0,2045,Might As Well IPL,American Pale Lager,240,16.0\n891,0.057999999999999996,35.0,1960,Saison Pamplemousse,Saison / Farmhouse Ale,240,12.0\n892,0.07400000000000001,74.0,1777,2020 IPA,American IPA,240,16.0\n893,0.08,70.0,1698,Wolf Among Weeds IPA,American IPA,240,16.0\n894,0.094,92.0,1641,Better Weather IPA,American IPA,240,16.0\n895,0.059000000000000004,60.0,1490,Point the Way IPA,American IPA,240,16.0\n896,0.046,15.0,1489,Golden Road Hefeweizen,Hefeweizen,240,16.0\n897,0.068,65.0,1399,Heal the Bay IPA,American IPA,240,16.0\n898,0.059000000000000004,60.0,1296,Point the Way IPA,American IPA,240,12.0\n899,0.05,,1034,Cabrillo Kölsch,Kölsch,240,16.0\n900,0.055,20.0,991,Get Up Offa That Brown,American Brown Ale,240,16.0\n901,0.08,70.0,750,Burning Bush Smoked IPA,American IPA,240,16.0\n902,0.08,70.0,749,Wolf Among Weeds IPA (2012),American IPA,240,16.0\n903,0.059000000000000004,60.0,549,Point the Way IPA (2012),American IPA,240,16.0\n904,0.046,15.0,548,Golden Road Hefeweizen (2012),Hefeweizen,240,16.0\n905,0.07,11.0,2587,Vanilla Porter,American Porter,39,16.0\n906,0.07,70.0,1109,Descender IPA,American IPA,464,12.0\n907,0.06,18.0,1108,Sweet As Pacific Ale,American Pale Wheat Ale,464,12.0\n908,0.055999999999999994,36.0,1000,Good People Pale Ale,American Pale Ale (APA),478,12.0\n909,0.09300000000000001,103.0,312,Snake Handler Double IPA,American Double / Imperial IPA,478,12.0\n910,0.06,54.0,311,Coffee Oatmeal Stout,Oatmeal Stout,478,12.0\n911,0.06,64.0,309,Good People IPA,American IPA,478,12.0\n912,0.057999999999999996,36.0,308,Good People American Brown Ale,American Brown Ale,478,12.0\n913,0.055,40.0,2205,Mountain Rescue Pale Ale,American Pale Ale (APA),194,12.0\n914,0.059000000000000004,55.0,2198,Goose Island India Pale Ale,American IPA,196,12.0\n915,0.054000000000000006,30.0,2457,312 Urban Pale Ale,American Pale Ale (APA),88,16.0\n916,0.054000000000000006,30.0,2202,312 Urban Pale Ale,American Pale Ale (APA),88,12.0\n917,0.042,18.0,2201,312 Urban Wheat Ale,American Pale Wheat Ale,88,16.0\n918,0.042,18.0,1829,312 Urban Wheat Ale,American Pale Wheat Ale,88,12.0\n919,0.042,20.0,581,312 Urban Wheat Ale (2012),American Pale Wheat Ale,88,12.0\n920,0.052000000000000005,19.0,1383,Beaver Logger,American Pale Lager,420,12.0\n921,0.05,,477,White Water Wheat,American Pale Wheat Ale,536,12.0\n922,0.052000000000000005,,476,Grand Canyon American Pilsner,American Pilsner,536,12.0\n923,0.054000000000000006,,143,Grand Canyon Sunset Amber Ale,American Amber / Red Ale,536,12.0\n924,,,142,Black Iron India Pale Ale,American IPA,536,12.0\n925,0.043,21.0,2129,Monarch Classic American Wheat,American Pale Wheat Ale,213,12.0\n926,0.049,21.0,2127,Sir William's English Brown Ale,English Brown Ale,213,12.0\n927,0.055,35.0,2126,Lakefire Rye Pale Ale,American Pale Ale (APA),213,12.0\n928,0.053,22.0,2303,Beer Agent Re-Ignition,American Blonde Ale,165,16.0\n929,0.057,18.0,1990,Cherry Ale,Fruit / Vegetable Beer,165,16.0\n930,0.055999999999999994,33.0,1702,Bourbon Barrel Aged Coconut Porter,American Porter,165,16.0\n931,0.062,60.0,1701,Great Crescent IPA,American IPA,165,16.0\n932,0.057,27.0,1700,Aurora Lager,Dortmunder / Export Lager,165,16.0\n933,0.053,22.0,1699,Great Crescent Blonde Ale,American Blonde Ale,165,16.0\n934,0.055999999999999994,33.0,1269,Great Crescent Coconut Porter,American Porter,165,16.0\n935,0.057,25.0,930,Great Crescent Oktoberfest Lager,Märzen / Oktoberfest,165,16.0\n936,0.045,36.0,649,Great Crescent Brown Ale,American Brown Ale,165,16.0\n937,0.057,18.0,639,Cherry Ale (1),Fruit / Vegetable Beer,165,16.0\n938,0.057,27.0,626,Aurora Lager (2011),Dortmunder / Export Lager,165,16.0\n939,0.06,25.0,615,Frosted Fields Winter Wheat,American Dark Wheat Ale,165,16.0\n940,0.051,13.0,478,Great Crescent Belgian Style Wit,Witbier,165,16.0\n941,0.075,65.0,455,Bourbon's Barrel Stout,American Stout,165,16.0\n942,0.08,66.0,442,Great Crescent Stout,English Stout,165,16.0\n943,0.055999999999999994,33.0,441,Great Crescent Coconut Porter (2012),American Porter,165,16.0\n944,0.057,23.0,440,Great Crescent Dark Lager,Euro Dark Lager,165,16.0\n945,0.042,26.0,439,Great Crescent Mild Ale,English Dark Mild Ale,165,16.0\n946,0.062,60.0,436,Great Crescent IPA (2011),American IPA,165,16.0\n947,0.053,22.0,389,Great Crescent Blonde Ale (2011),American Blonde Ale,165,16.0\n948,0.05,,2650,Denver Pale Ale (Artist Series No. 1),American Pale Ale (APA),6,12.0\n949,0.087,,2649,Hibernation Ale,Old Ale,6,12.0\n950,0.061,,2648,Whitewater,American Pale Wheat Ale,6,12.0\n951,0.071,,2647,Rumble,American IPA,6,12.0\n952,0.083,,2646,Orabelle,Tripel,6,12.0\n953,0.05,,2645,Lasso,American IPA,6,12.0\n954,0.095,75.0,2644,Yeti  Imperial Stout,Russian Imperial Stout,6,12.0\n955,0.073,,2643,Colette,Saison / Farmhouse Ale,6,12.0\n956,0.071,,2642,Titan IPA,American IPA,6,12.0\n957,0.045,15.0,404,Black Star Double Hopped Golden Lager (24 oz.),American Pale Lager,543,24.0\n958,0.045,15.0,164,Black Star Double Hopped Golden Lager (12 oz.),American Pale Lager,543,12.0\n959,0.052000000000000005,49.0,1923,Commotion APA,American Pale Ale (APA),269,12.0\n960,0.052000000000000005,,1922,Southern Drawl Pale Lager,American Pale Lager,269,12.0\n961,0.05,5.0,1604,Chickawawa Lemonale,Fruit / Vegetable Beer,365,12.0\n962,0.07,22.0,1574,Barrel Aged Farmer,American Brown Ale,365,16.0\n963,0.048,,1446,Great River Golden Ale,American Blonde Ale,365,12.0\n964,0.048,,1275,Dirty Blonde Chocolate Ale,American Blonde Ale,365,12.0\n965,0.048,20.0,1244,Dos Pistolas,Vienna Lager,365,12.0\n966,0.05,30.0,1064,Owney Irish Style Red Ale,Irish Red Ale,365,16.0\n967,0.06,,1028,Aaah Bock Lager,Vienna Lager,365,16.0\n968,0.055,10.0,865,Widespread Wit,Witbier,365,16.0\n969,0.054000000000000006,30.0,864,Roller Dam Red Ale,Irish Red Ale,365,16.0\n970,0.053,48.0,863,483 Pale Ale,American Pale Ale (APA),365,16.0\n971,0.09,99.0,672,Hop A Potamus Double Dark Rye Pale Ale,Rye Beer,365,16.0\n972,0.07,22.0,655,Farmer Brown Ale,American Brown Ale,365,16.0\n973,0.07,70.0,540,Big Cock IPA,American IPA,365,16.0\n974,0.059000000000000004,25.0,539,Oktoberfest,Märzen / Oktoberfest,365,16.0\n975,0.048,25.0,517,40th Annual Bix Street Fest Copper Ale (Current),American Amber / Red Ale,365,16.0\n976,0.06,36.0,371,Redband Stout,American Stout,365,16.0\n977,0.053,48.0,190,483 Pale Ale (2010),American Pale Ale (APA),365,16.0\n978,0.054000000000000006,30.0,189,Roller Dam Red Ale (2010),Irish Red Ale,365,16.0\n979,0.05,30.0,1106,Pablo Beach Pale Ale,American Pale Ale (APA),466,12.0\n980,0.057,44.0,2314,Wild Trail Pale Ale,American Pale Ale (APA),156,12.0\n981,0.067,71.0,2313,Mothman Black IPA,American Black Ale,156,12.0\n982,0.057999999999999996,,2461,Autumn Winds Fest Beer,Märzen / Oktoberfest,86,16.0\n983,0.085,69.0,2044,Captain's Daughter,American Double / Imperial IPA,86,12.0\n984,0.057999999999999996,,1567,Autumn Winds,Märzen / Oktoberfest,379,16.0\n985,0.06,54.0,1505,Flying Jenny Extra Pale Ale,American Pale Ale (APA),379,12.0\n986,0.04,20.0,1186,Hazy Day Belgian-Style Wit,Witbier,379,16.0\n987,0.055,,1185,Bring Back the Beach Blonde Ale,American Blonde Ale,379,16.0\n988,0.06,34.0,984,Leaning Chimney Smoked Porter,American Porter,379,16.0\n989,0.06,54.0,693,Flying Jenny Extra Pale Ale (2012),American Pale Ale (APA),379,12.0\n990,0.049,22.0,631,Flagship Ale,Cream Ale,379,12.0\n991,0.045,6.0,2375,Mr. Blue Sky,American Pale Wheat Ale,124,16.0\n992,0.065,,2143,3 Scrooges,Winter Warmer,124,16.0\n993,0.05,25.0,2142,Screamin’ Pumpkin,Pumpkin Ale,124,16.0\n994,0.05,35.0,2141,Grand Trunk Bohemian Pils,Czech Pilsener,124,16.0\n995,0.065,25.0,2140,El Rojo,American Amber / Red Ale,124,16.0\n996,0.075,,2139,Norm's Raggedy Ass IPA,American IPA,124,16.0\n997,0.05,35.0,2138,Grind Line,American Pale Ale (APA),124,16.0\n998,0.04,55.0,2007,Norm's Gateway IPA,American IPA,124,12.0\n999,0.09,,1570,Lemon Shandy Tripel,Tripel,124,16.0\n1000,0.063,43.0,2339,Little Red Cap,Altbier,144,12.0\n1001,0.069,67.0,1857,Supergoose IPA,American IPA,290,12.0\n1002,0.047,,1440,Hale's Pale American Ale,American Pale Ale (APA),290,12.0\n1003,0.07,,1753,Heyoka IPA,American IPA,327,16.0\n1004,0.08,,1448,Guest Lager,American Double / Imperial Pilsner,327,16.0\n1005,0.057,,1134,Pony Pilsner,German Pilsener,327,16.0\n1006,0.055,,1066,Akari Shogun American Wheat Ale,American Pale Wheat Ale,327,16.0\n1007,0.06,,849,Meat Wave,English India Pale Ale (IPA),327,16.0\n1008,0.06,,352,Over Ale,American Brown Ale,327,16.0\n1009,0.042,,149,Gossamer Golden Ale,American Blonde Ale,327,16.0\n1010,0.052000000000000005,,148,Daisy Cutter Pale Ale,American Pale Ale (APA),327,16.0\n1011,0.07,40.0,2026,Pursuit,American IPA,248,12.0\n1012,0.052000000000000005,18.0,1361,Half Full Bright Ale,American Blonde Ale,248,12.0\n1013,0.046,17.0,1016,Orange Wheat,Fruit / Vegetable Beer,476,12.0\n1014,0.043,14.0,1015,Hangar 24 Helles Lager,Munich Helles Lager,476,12.0\n1015,0.075,70.0,1677,The Great Return,American IPA,343,16.0\n1016,0.044000000000000004,18.0,1331,Hardywood Cream Ale,Cream Ale,343,12.0\n1017,0.055999999999999994,55.0,1270,Capital Trail Pale Ale,American Pale Ale (APA),343,12.0\n1018,0.052000000000000005,15.0,2059,UFO Gingerland,Herbed / Spiced Beer,234,12.0\n1019,0.062,45.0,1653,The Long Thaw White IPA,American White IPA,234,12.0\n1020,0.048,,1558,Honey Cider,Cider,234,12.0\n1021,0.05,28.0,1380,Harpoon Summer Beer,Kölsch,234,12.0\n1022,0.059000000000000004,42.0,1379,Harpoon IPA,American IPA,234,12.0\n1023,0.059000000000000004,20.0,1340,UFO Pumpkin,Pumpkin Ale,234,12.0\n1024,0.055,30.0,1313,Harpoon Octoberfest,Märzen / Oktoberfest,234,12.0\n1025,0.059000000000000004,42.0,770,Harpoon IPA (2012),American IPA,234,12.0\n1026,0.05,28.0,769,Harpoon Summer Beer (2012),Kölsch,234,12.0\n1027,0.048,10.0,610,UFO White,American Pale Wheat Ale,234,12.0\n1028,0.05,28.0,192,Harpoon Summer Beer (2010),Kölsch,234,12.0\n1029,0.059000000000000004,42.0,126,Harpoon IPA (2010),American IPA,234,12.0\n1030,,,506,Great Falls Select Pale Ale,American Blonde Ale,535,12.0\n1031,0.048,,181,Beltian White,Witbier,535,12.0\n1032,0.049,,2183,Kaua'i Golden Ale,American Blonde Ale,204,12.0\n1033,0.054000000000000006,,2182,Sunset Amber,American Pale Ale (APA),204,12.0\n1034,0.064,,2181,Hapa Brown Ale,American Brown Ale,204,19.2\n1035,0.064,,2180,Hapa Brown Ale,American Brown Ale,204,12.0\n1036,0.083,,2179,Southern Cross,Flanders Red Ale,204,19.2\n1037,0.076,65.0,1895,Groupe G,Belgian IPA,280,16.0\n1038,0.062,40.0,1894,Pt. Bonita Rustic Lager,American Pale Lager,280,16.0\n1039,0.08800000000000001,77.0,1893,Hill 88 Double IPA,American Double / Imperial IPA,280,16.0\n1040,0.07200000000000001,45.0,990,Loose Cannon,American IPA,479,12.0\n1041,0.06,30.0,989,AARGHtoberfest!,Märzen / Oktoberfest,479,12.0\n1042,0.06,,988,Davy Jones Lager,Cream Ale,479,12.0\n1043,0.063,30.0,1351,Grazias,Cream Ale,423,16.0\n1044,0.08,86.0,1346,Habitus IPA,American IPA,423,16.0\n1045,0.099,85.0,904,Ex Umbris Rye Imperial Stout,American Double / Imperial Stout,423,16.0\n1046,0.063,21.0,2295,The Golden One,American Pilsner,168,12.0\n1047,0.07,68.0,2294,The Power of Zeus,American Pale Ale (APA),168,12.0\n1048,0.044000000000000004,22.0,824,Tonganoxie Honey Wheat,American Pale Wheat Ale,500,12.0\n1049,0.045,,616,Oregon Trail Unfiltered Raspberry Wheat,Fruit / Vegetable Beer,500,12.0\n1050,0.055,,96,Annie's Amber Ale,American Amber / Red Ale,500,12.0\n1051,0.045,32.0,1615,The 12th Can™,American Pale Ale (APA),362,16.0\n1052,0.055,34.0,889,Hilliard's Pils,Czech Pilsener,362,16.0\n1053,0.049,20.0,724,Hilliard's Blonde,American Blonde Ale,362,16.0\n1054,0.055,60.0,497,Hilliard's Amber Ale,American Amber / Red Ale,362,16.0\n1055,0.066,30.0,496,Hilliard's Saison,Saison / Farmhouse Ale,362,16.0\n1056,0.042,,1652,White Cap White IPA,American White IPA,349,16.0\n1057,0.042,25.0,1835,Provision,Saison / Farmhouse Ale,297,12.0\n1058,0.047,28.0,1834,One Nut Brown,American Brown Ale,297,12.0\n1059,0.057999999999999996,45.0,1833,Hop Farm IPA,American IPA,297,12.0\n1060,0.049,20.0,2195,Double D Blonde,American Blonde Ale,198,12.0\n1061,0.078,60.0,1605,Festeroo Winter Ale,American Strong Ale,198,12.0\n1062,0.063,70.0,1543,Proxima IPA,American IPA,198,12.0\n1063,0.049,20.0,1390,Double D Blonde (2013),American Blonde Ale,198,12.0\n1064,0.048,13.0,1354,541 American Lager,American Pale Lager,198,12.0\n1065,0.065,90.0,1353,Alphadelic IPA,American IPA,198,12.0\n1066,0.065,90.0,499,Alphadelic IPA (2011),American IPA,198,12.0\n1067,0.049,20.0,498,Double D Blonde (2011),American Blonde Ale,198,12.0\n1068,0.07,,1501,Green House India Pale Ale,American IPA,395,12.0\n1069,0.051,,1004,The One They Call Zoe,American Pale Lager,395,12.0\n1070,0.051,40.0,502,Alteration,Altbier,395,12.0\n1071,0.06,50.0,501,Pale Dog,American Pale Ale (APA),395,12.0\n1072,0.065,,2357,Porter Culture,American Porter,136,12.0\n1073,0.068,,2483,Hard Cider,Cider,80,16.0\n1074,0.027000000000000003,21.0,2482,Totally Radler,Radler,80,16.0\n1075,0.039,20.0,2400,Nonstop Hef Hop,American Pale Wheat Ale,80,16.0\n1076,0.039,20.0,2399,Nonstop Hef Hop,American Pale Wheat Ale,80,16.0\n1077,0.039,20.0,2398,Nonstop Hef Hop,American Pale Wheat Ale,80,16.0\n1078,0.039,20.0,2397,Nonstop Hef Hop,American Pale Wheat Ale,80,16.0\n1079,0.039,20.0,2396,Nonstop Hef Hop,American Pale Wheat Ale,80,16.0\n1080,0.039,20.0,2395,Nonstop Hef Hop,American Pale Wheat Ale,80,16.0\n1081,0.039,20.0,2394,Nonstop Hef Hop,American Pale Wheat Ale,80,16.0\n1082,0.039,20.0,2393,Nonstop Hef Hop,American Pale Wheat Ale,80,16.0\n1083,0.039,20.0,2392,Nonstop Hef Hop,American Pale Wheat Ale,80,16.0\n1084,0.039,20.0,2391,Nonstop Hef Hop,American Pale Wheat Ale,80,16.0\n1085,0.039,20.0,2390,Nonstop Hef Hop,American Pale Wheat Ale,80,16.0\n1086,0.039,20.0,2389,Nonstop Hef Hop,American Pale Wheat Ale,80,16.0\n1087,0.057999999999999996,60.0,2388,Rise Up Red,American Amber / Red Ale,80,16.0\n1088,0.057999999999999996,35.0,2200,Survival Stout,American Stout,80,16.0\n1089,0.066,75.0,2199,Hopworks IPA,American IPA,80,16.0\n1090,0.073,70.0,2193,Abominable Winter Ale,American Strong Ale,80,16.0\n1091,0.06,60.0,1398,Pigwar White India Pale Ale,American White IPA,80,16.0\n1092,0.057999999999999996,60.0,1085,Rise-Up Red (2014),American Amber / Red Ale,80,16.0\n1093,0.073,70.0,916,Abominable Winter Ale (2012),American Strong Ale,80,16.0\n1094,0.051,32.0,658,HUB Lager,Czech Pilsener,80,16.0\n1095,0.066,75.0,653,Hopworks IPA (2012),American IPA,80,16.0\n1096,0.055999999999999994,,2385,Watermelon Wheat,American Pale Wheat Ale,120,12.0\n1097,0.051,17.0,2384,Laka Laka Pineapple,Hefeweizen,120,12.0\n1098,0.06,,2383,Oktoberfest,Märzen / Oktoberfest,120,16.0\n1099,0.065,,1251,Trail Maker Pale Ale,American Pale Ale (APA),445,12.0\n1100,0.055,,1250,Action Man Lager,Vienna Lager,445,12.0\n1101,0.068,90.0,1903,Let It Ride IPA,American IPA,277,12.0\n1102,0.065,22.0,1691,Stir Crazy Winter Ale,Winter Warmer,277,12.0\n1103,0.05,10.0,1555,Sweet Yamma Jamma Ale,Fruit / Vegetable Beer,277,12.0\n1104,0.046,27.0,1115,Shenanigans Summer Ale,American Pale Wheat Ale,277,12.0\n1105,0.065,80.0,729,Midnight Ryder,American Black Ale,277,12.0\n1106,0.054000000000000006,45.0,728,Day Tripper Pale Ale,American Pale Ale (APA),277,12.0\n1107,0.048,32.0,2350,Oklahoma Suks,American Amber / Red Ale,140,12.0\n1108,0.055,42.0,2301,Power & Light,American Pale Ale (APA),140,12.0\n1109,0.059000000000000004,27.0,1904,White Rabbit ,Witbier,140,12.0\n1110,0.057999999999999996,58.0,2609,Tribute,American Pale Ale (APA),23,12.0\n1111,0.07,75.0,2038,Infamous IPA,American IPA,242,12.0\n1112,0.055,20.0,1774,Hijack,Cream Ale,242,12.0\n1113,0.045,20.0,559,Jon Boat Coastal Ale,American Blonde Ale,527,12.0\n1114,0.068,55.0,558,I-10 IPA,American IPA,527,12.0\n1115,0.053,28.0,553,People's Pale Ale,American Pale Ale (APA),527,12.0\n1116,0.049,,2376,Summer Ale,American Blonde Ale,123,12.0\n1117,,,1784,Appreciation Ale,American IPA,316,16.0\n1118,0.052000000000000005,18.0,2673,House Lager,Keller Bier / Zwickel Bier,2,16.0\n1119,0.048,15.0,2672,Leisure Time,American Pale Lager,2,12.0\n1120,0.07200000000000001,80.0,2671,Excess IPL,American India Pale Lager,2,16.0\n1121,0.067,65.0,2670,Hoponius Union,American India Pale Lager,2,12.0\n1122,0.049,45.0,2669,Calyptra,American India Pale Lager,2,12.0\n1123,0.05,,1405,Helen's Blend,Cider,416,12.0\n1124,0.051,,823,Jack's Hard Cider,Cider,416,12.0\n1125,0.055,37.0,1793,Thunder Ann,American Pale Ale (APA),312,12.0\n1126,0.055,,2453,Razz Wheat,Fruit / Vegetable Beer,92,12.0\n1127,0.065,,2363,Hop Ryot,American IPA,92,12.0\n1128,0.07,,689,Mystic Mama IPA,American IPA,92,12.0\n1129,0.05,,688,Firefly Amber Ale,American Amber / Red Ale,92,12.0\n1130,0.067,,687,Chomolungma Honey Nut Brown Ale,English Brown Ale,92,12.0\n1131,0.069,,2408,Welcome to Scoville,American IPA,114,12.0\n1132,,,2595,Bastian,American Strong Ale,32,12.0\n1133,0.045,,2480,Healani,Hefeweizen,32,12.0\n1134,0.055,,1525,Yabba Dhaba Chai Tea Porter,American Porter,32,12.0\n1135,0.055,,1524,A Capella Gluten Free Pale Ale,American Pale Ale (APA),32,12.0\n1136,0.06,,1523,Casper White Stout,American Blonde Ale,32,12.0\n1137,0.06,,1254,JP's Ould Sod Irish Red IPA,American IPA,32,12.0\n1138,0.05,15.0,2060,Weize Guy,Hefeweizen,233,12.0\n1139,0.05,50.0,469,Fox Tail Gluten Free Ale,American Pale Ale (APA),233,12.0\n1140,0.09300000000000001,90.0,468,Hop Box Imperial IPA,American Double / Imperial IPA,233,12.0\n1141,0.052000000000000005,15.0,467,Joseph James American Lager,American Adjunct Lager,233,12.0\n1142,0.071,,2163,Sucha Much IPA,American IPA,208,12.0\n1143,0.075,24.0,2162,Lewbricator Wheat Dopplebock ,Doppelbock,208,12.0\n1144,0.052000000000000005,16.0,2374,Weisse Versa (2012),Hefeweizen,125,12.0\n1145,0.057999999999999996,25.0,1560,Mother in Lager,Munich Dunkel Lager,125,12.0\n1146,0.055,40.0,1557,Weekend Warrior Pale Ale,American Pale Ale (APA),125,12.0\n1147,0.055,25.0,1458,Karbachtoberfest,Märzen / Oktoberfest,125,12.0\n1148,0.047,20.0,1235,Love Street Summer Seasonal (2014),Kölsch,125,12.0\n1149,0.066,20.0,1068,Barn Burner Saison,Saison / Farmhouse Ale,125,12.0\n1150,0.095,85.0,666,Rodeo Clown Double IPA,American Double / Imperial IPA,125,12.0\n1151,0.049,45.0,465,Sympathy for the Lager,American Amber / Red Lager,125,12.0\n1152,0.052000000000000005,15.0,464,Weisse Versa,Hefeweizen,125,12.0\n1153,0.066,70.0,463,Hopadillo India Pale Ale,American IPA,125,12.0\n1154,0.057,19.0,1678,KelSo Nut Brown Lager,Euro Dark Lager,342,12.0\n1155,0.06,64.0,1572,KelSo India Pale Ale,American IPA,342,12.0\n1156,0.055,23.0,1348,KelSo Pilsner,Czech Pilsener,342,12.0\n1157,0.057999999999999996,,1193,Skilak Scottish Ale,Scottish Ale,458,12.0\n1158,0.05,15.0,1187,Peninsula Brewers Reserve (PBR),American Blonde Ale,458,12.0\n1159,0.068,,349,Sunken Island IPA,American IPA,458,12.0\n1160,0.057999999999999996,,348,Skilak Scottish Ale (2011),Scottish Ale,458,12.0\n1161,0.065,11.0,760,Cold Smoke Scotch Ale (2007),Scotch Ale / Wee Heavy,510,16.0\n1162,0.065,65.0,759,Double Haul IPA (2009),American IPA,510,16.0\n1163,0.065,65.0,758,Double Haul IPA (2006),American IPA,510,16.0\n1164,0.055,50.0,87,Eddy Out Pale Ale,American Pale Ale (APA),510,16.0\n1165,0.065,65.0,86,Double Haul IPA,American IPA,510,16.0\n1166,0.065,11.0,85,Cold Smoke Scotch Ale,Scotch Ale / Wee Heavy,510,16.0\n1167,,,2472,U. P. Witbier,Witbier,84,12.0\n1168,,,779,November Gale Pale Ale,American Pale Ale (APA),84,12.0\n1169,,,364,Olde Ore Dock Scottish Ale,Scottish Ale,84,12.0\n1170,,,60,Widow Maker Black Ale,American Brown Ale,84,12.0\n1171,,,59,Lift Bridge Brown Ale,American Brown Ale,84,12.0\n1172,,,58,Pick Axe Blonde Ale,American Blonde Ale,84,12.0\n1173,,,57,Red Jacket Amber Ale,American Amber / Red Ale,84,12.0\n1174,0.051,,2436,Amber Ale,American Amber / Red Ale,102,12.0\n1175,0.055,,1706,King Street Pilsner,Czech Pilsener,102,12.0\n1176,0.06,70.0,1667,King Street IPA,American IPA,102,12.0\n1177,0.057,10.0,1666,King Street Hefeweizen,Hefeweizen,102,12.0\n1178,0.049,,1665,King Street Blonde Ale,American Blonde Ale,102,12.0\n1179,0.063,65.0,2460,India Pale Ale,American IPA,87,16.0\n1180,0.048,11.0,2459,Blackberry Wheat,American Pale Wheat Ale,87,16.0\n1181,0.046,18.0,1274,Longboard Island Lager,American Amber / Red Lager,439,24.0\n1182,0.046,18.0,1220,Longboard Island Lager,American Amber / Red Lager,439,16.0\n1183,0.046,18.0,1070,Longboard Island Lager,American Amber / Red Lager,439,12.0\n1184,0.046,18.0,590,Longboard Island Lager,American Amber / Red Lager,439,12.0\n1185,0.04,9.0,781,Choc Beer (2003),American Dark Wheat Ale,505,12.0\n1186,0.08,,1637,Bellingham Beer Week 2013 Collaboration,Belgian Strong Dark Ale,354,16.0\n1187,0.054000000000000006,15.0,1741,A Slice of Hefen,Hefeweizen,332,16.0\n1188,0.07200000000000001,100.0,664,Elevated IPA,American IPA,332,16.0\n1189,0.066,30.0,392,Rumspringa Golden Bock,Maibock / Helles Bock,545,12.0\n1190,0.048,28.0,195,Lancaster German Style Kölsch,Kölsch,545,12.0\n1191,0.045,,2547,Beach Cruiser,Hefeweizen,59,12.0\n1192,0.068,,2493,I.P. Eh!,American IPA,59,12.0\n1193,0.05,,2492,Schoolhouse Honey,American Amber / Red Ale,59,12.0\n1194,0.055,,2491,10 Degrees of Separation,English Brown Ale,59,12.0\n1195,0.05,12.0,2108,Laughing Dog Cream Ale,Cream Ale,218,12.0\n1196,0.048,9.0,1397,Two-One Niner,American Pilsner,218,12.0\n1197,0.064,66.0,1396,Laughing Dog IPA,American IPA,218,12.0\n1198,0.064,95.0,1675,Madra Allta,American IPA,345,12.0\n1199,0.055999999999999994,70.0,1249,Duluchan India Pale Ale,American IPA,345,12.0\n1200,0.05,,1445,Lazy Monk Bohemian Pilsner,Czech Pilsener,406,16.0\n1201,0.051,,475,Yellowstone Golden Ale,Kölsch,537,12.0\n1202,0.057,,474,Tumbleweed IPA,American IPA,537,12.0\n1203,0.05,,473,Lewis & Clark Amber Ale,American Amber / Red Ale,537,12.0\n1204,0.05,,472,Miner's Gold Hefeweizen,Hefeweizen,537,12.0\n1205,0.057,,471,Back Country Scottish Ale,Scottish Ale,537,12.0\n1206,0.052000000000000005,30.0,2036,Getaway,German Pilsener,244,16.0\n1207,0.06,30.0,1168,Farm Girl Saison,Saison / Farmhouse Ale,244,16.0\n1208,0.057999999999999996,40.0,1832,Adam's Stout,American Stout,298,12.0\n1209,0.057,42.0,1688,American Hero,American Amber / Red Ale,298,12.0\n1210,0.052000000000000005,20.0,1687,Schweet Ale,Fruit / Vegetable Beer,298,12.0\n1211,0.065,75.0,1686,Irregardless IPA,American IPA,298,12.0\n1212,0.057,40.0,2434,Peach Pale Ale,American Pale Ale (APA),104,12.0\n1213,0.06,,2332,Deadeye Jack,American Porter,149,12.0\n1214,0.075,,2330,Pistols at Dawn,American Stout,149,16.0\n1215,0.057,47.0,2329,Peacemaker Pale Ale,American Pale Ale (APA),149,12.0\n1216,0.057999999999999996,11.0,2327,Shotgun Betty,Hefeweizen,149,12.0\n1217,0.061,30.0,2326,Sweet Josie,American Brown Ale,149,12.0\n1218,0.059000000000000004,42.0,1926,Long Trail IPA,English India Pale Ale (IPA),268,12.0\n1219,0.046,30.0,1924,Long Trail Ale,American Amber / Red Ale,268,12.0\n1220,0.07200000000000001,33.0,1090,Double Bag,Altbier,268,16.0\n1221,0.04,8.0,574,Blackbeary Wheat,Fruit / Vegetable Beer,268,12.0\n1222,0.046,30.0,573,Long Trail Ale (1),Altbier,268,12.0\n1223,0.046,8.0,2584,Gose,Gose,41,16.0\n1224,0.048,20.0,2583,Vermont Pilsner,German Pilsener,41,16.0\n1225,0.055,,2582,Mosaic Single Hop IPA,American IPA,41,16.0\n1226,0.045,,2581,Lost Galaxy,American IPA,41,16.0\n1227,0.062,65.0,1309,Face Plant IPA,American IPA,430,12.0\n1228,0.055999999999999994,55.0,1308,Rhino Chasers Pilsner,Czech Pilsener,430,12.0\n1229,0.052000000000000005,29.0,1571,Slow Hand Stout,American Stout,377,16.0\n1230,0.062,,1204,Hips Don't Lie,Hefeweizen,456,16.0\n1231,0.052000000000000005,,1122,Ride Again Pale Ale,American Pale Ale (APA),456,16.0\n1232,0.048,,700,The Farmer's Daughter,American Blonde Ale,456,16.0\n1233,0.038,18.0,2033,Pub Ale,English Dark Mild Ale,245,12.0\n1234,0.051,31.0,2032,Ballistic Blonde,Belgian Pale Ale,245,12.0\n1235,0.054000000000000006,,2311,Knotty Pine,American Pale Ale (APA),158,12.0\n1236,0.053,20.0,1153,Lumberyard Pilsner,American Pilsner,158,12.0\n1237,0.061,,355,Lumberyard IPA,American IPA,158,12.0\n1238,0.057999999999999996,,125,Lumberyard Red Ale,American Amber / Red Ale,158,12.0\n1239,0.05,,962,Mac's Highlander Pale Ale (2000),American Pale Ale (APA),485,12.0\n1240,0.051,32.0,961,Mac's Scottish Style Amber Ale (2000),American Amber / Red Ale,485,12.0\n1241,0.05,,1475,Macon Progress Ale,American Pale Ale (APA),400,12.0\n1242,0.055,,1008,Macon History Ale,American Brown Ale,400,12.0\n1243,0.099,,2454,Galaxy High,American Double / Imperial IPA,91,12.0\n1244,0.043,18.0,2209,Sol Drifter,American Blonde Ale,91,12.0\n1245,0.085,,2133,Thunder Snow,Winter Warmer,91,12.0\n1246,0.079,18.0,1994,The Great Pumpcan,Fruit / Vegetable Beer,91,16.0\n1247,0.047,11.0,1816,LIFT,Kölsch,91,12.0\n1248,0.05,40.0,1815,SPRYE,American Pale Ale (APA),91,12.0\n1249,0.069,70.0,1126,Psychopathy,American IPA,91,12.0\n1250,0.07,32.0,1125,Gnarly Brown,American Brown Ale,91,12.0\n1251,0.06,30.0,1124,Happy Amber,American Amber / Red Ale,91,12.0\n1252,0.051,20.0,1813,#9,Fruit / Vegetable Beer,303,16.0\n1253,0.055,13.0,1113,Elder Betty,Hefeweizen,303,12.0\n1254,0.051,20.0,360,#9,Fruit / Vegetable Beer,303,12.0\n1255,0.042,,511,High Country Pilsner (Current),German Pilsener,534,12.0\n1256,0.065,,75,Epic IPA,American IPA,534,12.0\n1257,0.042,,74,Golden Trout Pilsner,German Pilsener,534,12.0\n1258,0.045,,73,Real McCoy Amber Ale (Current),American Amber / Red Ale,534,12.0\n1259,0.07200000000000001,,1628,Festivus (1),Winter Warmer,356,12.0\n1260,0.067,,1626,Manayunk Oktoberfest,Märzen / Oktoberfest,356,12.0\n1261,0.045,21.0,1625,Belgian Style Session Ale,Belgian Pale Ale,356,12.0\n1262,0.055,,1624,Manayunk IPA,American IPA,356,12.0\n1263,0.055,,1600,Yunkin' Punkin',Pumpkin Ale,356,12.0\n1264,0.05,18.0,1484,Summer Paradise,American Pale Wheat Ale,356,12.0\n1265,0.09,30.0,1356,Monk from the 'Yunk,Tripel,356,12.0\n1266,0.06,14.0,1355,Schuylkill Punch,Fruit / Vegetable Beer,356,12.0\n1267,0.085,85.0,1334,Dreamin' Double IPA,American Double / Imperial IPA,356,12.0\n1268,0.099,93.0,1674,Chaotic Double IPA,American Double / Imperial IPA,346,12.0\n1269,0.08,88.0,1673,Manzanita IPA,American IPA,346,12.0\n1270,0.06,25.0,1672,Riverwalk Blonde Ale,American Blonde Ale,346,12.0\n1271,0.095,49.0,1671,Gillespie Brown Ale,American Brown Ale,346,12.0\n1272,0.066,44.0,1670,Manzanita Pale Ale,American Pale Ale (APA),346,12.0\n1273,0.047,,1262,Marble Pilsner,German Pilsener,443,12.0\n1274,0.062,,845,Marble India Pale Ale,American IPA,443,12.0\n1275,0.07200000000000001,,1783,Toughcats IPA,American IPA,317,16.0\n1276,0.05,,1717,Tug Pale Ale,American Pale Ale (APA),317,16.0\n1277,0.099,,1716,Sexy Chaos,Russian Imperial Stout,317,16.0\n1278,0.063,,1516,Ace Hole American Pale Ale,American Pale Ale (APA),317,16.0\n1279,0.09699999999999999,,725,Cant Dog Imperial Pale Ale,American Double / Imperial IPA,317,16.0\n1280,0.05,20.0,2308,River House,Saison / Farmhouse Ale,161,16.0\n1281,0.065,47.0,2268,Pretzel Stout,American Stout,161,16.0\n1282,0.05,35.0,2197,Rubberneck Red,American Amber / Red Ale,161,16.0\n1283,0.08,,2120,The Imperial Texan,American Double / Imperial IPA,161,16.0\n1284,0.08,,1234,The Imperial Texan,American Double / Imperial IPA,161,12.0\n1285,0.05,,1233,Day Break 4-Grain Breakfast Beer,Rye Beer,161,16.0\n1286,0.05,,1232,River House Saison,Saison / Farmhouse Ale,161,12.0\n1287,0.065,,1231,There Will Be Stout,American Stout,161,12.0\n1288,0.065,60.0,1831,Our Legacy IPA,American IPA,299,12.0\n1289,0.042,,1359,Saranac Shandy,Shandy,299,12.0\n1290,0.065,60.0,1135,Our Legacy IPA,American IPA,299,16.0\n1291,0.051,,960,Saranac Golden Pilsener (2003),German Pilsener,299,12.0\n1292,0.045,,959,Saranac Adirondack Light (2002),Light Lager,299,12.0\n1293,0.045,,958,DAX Light (1998),Light Lager,299,12.0\n1294,0.048,,957,Saranac Traditional Lager (2000),American Pale Lager,299,12.0\n1295,0.047,,956,Pomegranate Wheat (2008),Fruit / Vegetable Beer,299,12.0\n1296,0.05,12.0,773,Blueberry Blonde Ale,American Blonde Ale,299,12.0\n1297,0.06,,686,Saranac White IPA,American IPA,299,12.0\n1298,0.047,,453,Saranac Summer Ale (2011),American Pale Wheat Ale,299,12.0\n1299,0.055,,150,Saranac Pale Ale (12 oz.),English Pale Ale,299,12.0\n1300,0.055,,133,Saranac Pale Ale (16 oz.),English Pale Ale,299,16.0\n1301,0.051,20.0,1578,Lahaina Town Brown,American Brown Ale,375,12.0\n1302,0.055,,1429,Pau Hana Pilsner,Czech Pilsener,375,12.0\n1303,0.05,,1271,Lemongrass Saison,Saison / Farmhouse Ale,375,12.0\n1304,0.07,,713,Aloha B’ak’tun,Belgian Strong Dark Ale,375,12.0\n1305,0.08199999999999999,,712,Liquid Breadfruit,Fruit / Vegetable Beer,375,12.0\n1306,0.06,24.0,690,Sobrehumano Palena'ole,American Amber / Red Ale,375,12.0\n1307,0.05,12.0,547,La Perouse White,Witbier,375,12.0\n1308,0.068,68.0,435,Flyin' HI.P.Hay,American IPA,375,12.0\n1309,0.055,15.0,313,Mana Wheat,American Pale Wheat Ale,375,12.0\n1310,0.045,18.0,33,Bikini Blonde Lager,Munich Helles Lager,375,12.0\n1311,0.057,30.0,32,CoCoNut Porter,American Porter,375,12.0\n1312,0.062,65.0,31,Big Swell IPA,American IPA,375,12.0\n1313,0.037000000000000005,34.0,1237,Pit Stop Chocolate Porter,American Porter,448,12.0\n1314,0.037000000000000005,21.0,1236,Pace Setter Belgian Style Wit,Witbier,448,12.0\n1315,0.037000000000000005,53.0,1047,Back in the Saddle Rye Pale Ale,American Pale Ale (APA),448,12.0\n1316,0.069,,1986,Bushwhacker Cider,Cider,254,16.0\n1317,0.069,,1985,Weim-R-Iner,Cider,254,16.0\n1318,0.069,,1984,Cherry Bomb,Cider,254,16.0\n1319,0.07200000000000001,75.0,2186,Tsunami IPA,American IPA,203,19.2\n1320,0.07200000000000001,75.0,2185,Tsunami IPA,American IPA,203,12.0\n1321,0.042,22.0,2184,Humpback Blonde Ale,American Blonde Ale,203,12.0\n1322,0.052000000000000005,27.0,2178,Hawaiian Crow Porter,American Porter,203,12.0\n1323,0.052000000000000005,23.0,2177,Volcano Red Ale,American Amber / Red Ale,203,12.0\n1324,0.054000000000000006,42.0,2176,Mauna Kea Pale Ale,American Pale Ale (APA),203,12.0\n1325,0.053,11.0,1508,Shark Bait,Fruit / Vegetable Beer,393,12.0\n1326,0.053,30.0,1507,Gator Tail Brown Ale,American Brown Ale,393,12.0\n1327,0.071,62.0,1506,Miami Vice IPA,American IPA,393,12.0\n1328,0.053,16.0,1325,Big Rod Coconut Ale,American Blonde Ale,393,12.0\n1329,0.055999999999999994,,174,Mickey Finn's Amber Ale,American Amber / Red Ale,552,12.0\n1330,0.063,61.0,2093,Pleasure Town,American IPA,223,12.0\n1331,0.063,61.0,1814,Pleasure Town IPA,American IPA,223,12.0\n1332,0.048,12.0,587,Snowshoe White Ale,Witbier,223,12.0\n1333,0.05,24.0,586,Kodiak Brown Ale,American Brown Ale,223,12.0\n1334,0.057,70.0,434,Sockeye Red IPA,American IPA,223,12.0\n1335,0.08,100.0,2668,Habitus (2014),American Double / Imperial IPA,3,16.0\n1336,0.075,85.0,2667,Solis,American IPA,3,16.0\n1337,0.06,24.0,2666,Jucundus,Wheat Ale,3,16.0\n1338,0.08,100.0,2664,Habitus,American Double / Imperial IPA,3,16.0\n1339,0.063,30.0,2663,Grazias,Cream Ale,3,16.0\n1340,0.057999999999999996,28.0,2662,Claritas,Kölsch,3,16.0\n1341,0.083,,2535,Vinyl Frontier,American Double / Imperial IPA,65,24.0\n1342,0.08,,2534,Disco Superfly,American IPA,65,24.0\n1343,0.075,,2533,Misty Mountain Hop,American IPA,65,24.0\n1344,0.075,,2532,One-Hit Wonderful,Belgian IPA,65,24.0\n1345,0.065,,2531,En Parfaite Harmonie,Saison / Farmhouse Ale,65,24.0\n1346,0.043,8.0,2530,Daft Funk,Berliner Weissbier,65,24.0\n1347,0.075,,2529,Love In An Ellavator,American IPA,65,24.0\n1348,0.053,,2528,Spin Doctor,American Pale Ale (APA),65,24.0\n1349,0.05,,1612,Keeper (Current),American Pilsner,363,12.0\n1350,0.068,,1611,Better Half,American IPA,363,12.0\n1351,0.048,,1273,SNO White Ale,Witbier,440,16.0\n1352,0.048,,365,BRIK Irish Red Ale,Irish Red Ale,440,16.0\n1353,,,273,AXL Pale Ale,American Pale Ale (APA),440,16.0\n1354,0.087,80.0,1884,Hop Freak,American Double / Imperial IPA,284,16.0\n1355,0.051,24.0,1272,Louie's Demise Amber Ale,American Amber / Red Ale,284,16.0\n1356,0.075,51.0,1080,Hop Happy,American IPA,284,16.0\n1357,0.065,20.0,932,Booyah Farmhouse Ale,Saison / Farmhouse Ale,284,16.0\n1358,0.092,,776,O-Gii,Witbier,284,16.0\n1359,0.048,18.0,172,Flaming Damsel Lager (2010),Vienna Lager,284,16.0\n1360,0.051,24.0,171,Louie’s Demise Immort-Ale (2010),American Amber / Red Ale,284,16.0\n1361,0.099,,2361,Axe Head Malt Liquor,American Malt Liquor,134,24.0\n1362,0.054000000000000006,,2359,Huber Bock (2014),Bock,134,16.0\n1363,0.04,,2358,Minhas Light (2012),Light Lager,134,12.0\n1364,0.05,,2282,Huber,American Pale Lager,134,12.0\n1365,0.062,,2281,Clear Creek Ice,American Pale Lager,134,16.0\n1366,0.062,,2280,Clear Creek Ice,American Pale Lager,134,12.0\n1367,0.055,,2279,Mountain Crest,American Pale Lager,134,16.0\n1368,0.055,,2278,Mountain Crest,American Pale Lager,134,12.0\n1369,0.055,,2277,Mountain Creek (2013),American Pale Lager,134,12.0\n1370,0.05,,2276,Boxer,American Adjunct Lager,134,24.0\n1371,0.042,,2275,Boxer Light,Light Lager,134,12.0\n1372,0.055,,2274,Boxer Ice,American Adjunct Lager,134,12.0\n1373,0.05,,2273,Boxer,American Adjunct Lager,134,12.0\n1374,0.05,,2442,Cortez Gold,Belgian Pale Ale,98,32.0\n1375,0.068,66.0,2441,Mission IPA,American IPA,98,32.0\n1376,0.048,44.0,1460,El Conquistador Extra Pale Ale,American Pale Ale (APA),98,32.0\n1377,0.092,75.0,1459,Shipwrecked Double IPA,American Double / Imperial IPA,98,32.0\n1378,0.04,,1476,Squeaky Bike Nut Brown Ale,American Brown Ale,399,16.0\n1379,0.04,,902,Dead Horse Amber,American Pale Wheat Ale,399,16.0\n1380,0.04,,645,Rocket Bike American Lager,California Common / Steam Beer,399,16.0\n1381,0.04,,644,Johnny's American IPA,American IPA,399,16.0\n1382,0.055,,337,Boneshaker Brown Ale,English Brown Ale,547,24.0\n1383,0.055999999999999994,,336,Iron Mike Pale Ale,American Pale Ale (APA),547,24.0\n1384,0.042,,2236,Monkadelic,American Pale Ale (APA),189,12.0\n1385,0.075,85.0,2159,City of the Sun,American IPA,209,16.0\n1386,0.068,75.0,2157,Booming Rollers,American IPA,209,16.0\n1387,0.052000000000000005,50.0,2156,Oneida,American Pale Ale (APA),209,16.0\n1388,0.067,75.0,2154,Aurora ,American Amber / Red Ale,209,16.0\n1389,0.055,30.0,1495,Lomaland,Saison / Farmhouse Ale,209,16.0\n1390,0.047,46.0,1494,Fortunate Islands,American Pale Wheat Ale,209,16.0\n1391,0.057999999999999996,40.0,1493,Black House,American Stout,209,16.0\n1392,0.065,115.0,1492,Blazing World,American Amber / Red Ale,209,16.0\n1393,0.05,,327,Wapiti Amber Ale,American Amber / Red Ale,549,12.0\n1394,0.054000000000000006,,719,Sweet Georgia Brown,American Brown Ale,514,16.0\n1395,0.087,,718,Rich Man's IIPA,American Double / Imperial IPA,514,16.0\n1396,0.057999999999999996,,717,Monkey Paw Oatmeal Pale Ale,American Pale Ale (APA),514,16.0\n1397,0.055999999999999994,28.0,1907,Montauk Summer Ale,American Blonde Ale,276,12.0\n1398,0.06,49.0,1906,Driftwood Ale,Extra Special / Strong Bitter (ESB),276,12.0\n1399,0.055999999999999994,18.0,1756,When Helles Freezes Over,Munich Helles Lager,326,12.0\n1400,0.049,24.0,1617,Morgan Street Oktoberfest,Märzen / Oktoberfest,326,12.0\n1401,0.047,14.0,1052,Honey Wheat,American Pale Wheat Ale,326,12.0\n1402,0.046,24.0,1051,Black Bear Dark Lager,Schwarzbier,326,12.0\n1403,0.05,35.0,1046,Golden Pilsner,German Pilsener,326,12.0\n1404,0.052000000000000005,21.0,2413,Cali Creamin',Cream Ale,111,12.0\n1405,0.05,,419,Second Wind Pale Ale,American Pale Ale (APA),540,12.0\n1406,0.05,,408,Sunny Haze,Hefeweizen,540,12.0\n1407,0.052000000000000005,21.0,2237,Towhead,American Blonde Ale,188,12.0\n1408,0.07,70.0,2208,Lil' Helper,American IPA,188,12.0\n1409,0.08199999999999999,,1952,Train Wreck,American Amber / Red Ale,260,16.0\n1410,0.085,,768,Full Moon Belgian White Ale,Witbier,507,12.0\n1411,0.07200000000000001,,625,Desert Magic IPA,American IPA,507,12.0\n1412,0.042,,326,Up River Light,Light Lager,507,12.0\n1413,0.085,,132,Full Moon Belgian White Ale (2007),Witbier,507,12.0\n1414,0.055,,131,Dry Heat Hefeweizen (2006),Hefeweizen,507,12.0\n1415,0.05,,1598,Mustang Sixty-Six,American Amber / Red Lager,366,12.0\n1416,0.04,,862,Mustang '33,American Pale Lager,366,12.0\n1417,0.04,,699,Session '33 (2011),American Pale Lager,366,12.0\n1418,0.053,10.0,421,Mustang Golden Ale,American Blonde Ale,366,12.0\n1419,0.053,14.0,420,Washita Wheat,American Pale Wheat Ale,366,12.0\n1420,0.037000000000000005,10.0,2345,Gansett Light,Light Lager,143,16.0\n1421,0.052000000000000005,30.0,2224,Bohemian Pils,American Pilsner,143,16.0\n1422,0.053,30.0,1775,Autocrat Coffee Milk Stout,Milk / Sweet Stout,143,16.0\n1423,0.086,35.0,1291,Narragansett Bohemian Pilsner,German Pilsener,143,16.0\n1424,0.042,24.0,1093,Narragansett Summer Ale,American Pale Wheat Ale,143,12.0\n1425,0.05,22.0,580,Narragansett Cream Ale,Cream Ale,143,16.0\n1426,0.042,24.0,403,Narragansett Summer Ale,American Pale Wheat Ale,143,16.0\n1427,0.07,22.0,316,Narragansett Porter,American Porter,143,16.0\n1428,0.065,32.0,315,Narragansett Bock,Bock,143,16.0\n1429,0.055,15.0,314,Narragansett Fest Lager,Märzen / Oktoberfest,143,16.0\n1430,0.053,,1537,Undun Blonde Ale,American Blonde Ale,387,16.0\n1431,0.07400000000000001,,1536,CuDa Cascadian Dark Ale,American Black Ale,387,16.0\n1432,0.085,86.0,1265,Old Grogham Imperial India Pale Ale,American Double / Imperial IPA,387,16.0\n1433,0.085,86.0,747,Old Grogham Imperial India Pale Ale (2012),American Double / Imperial IPA,387,16.0\n1434,0.07400000000000001,,746,CuDa Cascadian Dark Ale (2012),American Black Ale,387,16.0\n1435,0.053,,654,Undun Blonde Ale (2012),American Blonde Ale,387,16.0\n1436,0.061,11.0,1705,Wick For Brains,Pumpkin Ale,337,12.0\n1437,0.065,65.0,1148,Nebraska India Pale Ale,American IPA,337,12.0\n1438,0.048,10.0,1147,EOS Hefeweizen,Hefeweizen,337,12.0\n1439,0.048,15.0,1146,Brunette Nut Brown Ale,English Brown Ale,337,12.0\n1440,0.057,29.0,1145,Cardinal Pale Ale,American Pale Ale (APA),337,12.0\n1441,0.066,,1758,County Line IPA,American IPA,325,12.0\n1442,0.048,,1757,Trauger Pilsner,German Pilsener,325,12.0\n1443,0.045,40.0,2475,Slow Ride,American IPA,82,12.0\n1444,0.065,70.0,2230,Ranger IPA,American IPA,82,12.0\n1445,0.05,29.0,1987,Shift,American Pale Lager,82,12.0\n1446,0.055999999999999994,21.0,1978,1554 Black Lager,Euro Dark Lager,82,12.0\n1447,0.048,,1975,Blue Paddle,Czech Pilsener,82,12.0\n1448,0.055,,1737,California Route,American Amber / Red Lager,82,12.0\n1449,0.052000000000000005,,1707,Snapshot,American Pale Wheat Ale,82,16.0\n1450,0.048,,1690,Sunshine Wheat Beer,American Pale Wheat Ale,82,12.0\n1451,0.052000000000000005,18.0,1586,Fat Tire Amber Ale,American Amber / Red Ale,82,12.0\n1452,0.05,29.0,952,Shift (1),American Pale Lager,82,12.0\n1453,0.052000000000000005,18.0,748,Fat Tire Amber Ale (2011),American Amber / Red Ale,82,12.0\n1454,0.05,29.0,578,Shift,American Pale Lager,82,16.0\n1455,0.065,70.0,564,Ranger IPA,American IPA,82,16.0\n1456,0.052000000000000005,18.0,563,Fat Tire Amber Ale,American Amber / Red Ale,82,16.0\n1457,0.065,70.0,115,Ranger IPA (Current),American IPA,82,12.0\n1458,0.048,,72,Sunshine Wheat Beer (2009),American Pale Wheat Ale,82,12.0\n1459,0.052000000000000005,18.0,71,Fat Tire Amber Ale (2008),American Amber / Red Ale,82,12.0\n1460,0.034,6.0,1417,Weiss Trash Culture,Berliner Weissbier,410,12.0\n1461,0.062,,885,Sea Hag IPA,American IPA,410,12.0\n1462,0.05,,884,Elm City Pilsner,American Pilsner,410,12.0\n1463,0.05,,757,Atlantic Amber Ale (2004),American Amber / Red Ale,410,12.0\n1464,0.09,,568,668 Neighbor of the Beast12 oz.,Belgian Pale Ale,410,12.0\n1465,0.08800000000000001,85.0,320,Gandhi-Bot Double IPA (12 oz.),American Double / Imperial IPA,410,12.0\n1466,0.09,,43,668 Neighbor of the Beast (16 oz.) (2010),Belgian Pale Ale,410,16.0\n1467,0.08800000000000001,85.0,42,Gandhi-Bot Double IPA (16 oz.) (2010),American Double / Imperial IPA,410,16.0\n1468,0.05,,41,Elm City Lager (2007),American Pilsner,410,12.0\n1469,0.05,,40,Atlantic Amber Ale (2007),American Amber / Red Ale,410,12.0\n1470,0.062,,39,Sea Hag IPA (Current),American IPA,410,12.0\n1471,0.05,,2272,Rebirth Pale Ale,American Pale Ale (APA),174,12.0\n1472,0.068,,1582,Irish Channel Stout,American Stout,174,16.0\n1473,0.08800000000000001,,1114,MechaHopzilla,American Double / Imperial IPA,174,16.0\n1474,0.065,,486,Hopitoulas IPA,American IPA,174,16.0\n1475,0.039,,485,NOLA Brown Ale,English Dark Mild Ale,174,12.0\n1476,0.049,,484,NOLA Blonde Ale,American Blonde Ale,174,12.0\n1477,0.055999999999999994,20.0,2043,Skylight,Dunkelweizen,241,12.0\n1478,0.055999999999999994,30.0,2042,Kadigan,American Blonde Ale,241,12.0\n1479,0.052000000000000005,50.0,2041,Dammit Jim!,American Amber / Red Ale,241,12.0\n1480,0.054000000000000006,,646,Nut Brown Ale,English Brown Ale,518,12.0\n1481,0.046,,165,White Ale,Witbier,518,12.0\n1482,0.042,35.0,2050,Cream Ale,Cream Ale,238,12.0\n1483,0.07200000000000001,,915,Green Head IPA,American IPA,495,12.0\n1484,0.054000000000000006,,914,Plum Island Belgian White,Witbier,495,12.0\n1485,0.055,,913,Newburyport Pale Ale,American Pale Ale (APA),495,12.0\n1486,0.055,,1811,Marblehead,American Amber / Red Ale,305,16.0\n1487,0.051,31.0,1622,Jam Session,American Pale Ale (APA),359,16.0\n1488,0.07200000000000001,80.0,1621,Hop Drop 'N Roll IPA,American IPA,359,16.0\n1489,0.06,,1307,Paleo IPA,English India Pale Ale (IPA),431,12.0\n1490,0.061,,1306,Buck Snort Stout,American Stout,431,12.0\n1491,0.055,,1305,Station 33 Firehouse Red,Irish Red Ale,431,12.0\n1492,0.045,,1304,Slimy Pebble Pils,German Pilsener,431,12.0\n1493,0.045,50.0,2692,Get Together,American IPA,0,16.0\n1494,0.049,26.0,2691,Maggie's Leap,Milk / Sweet Stout,0,16.0\n1495,0.048,19.0,2690,Wall's End,English Brown Ale,0,16.0\n1496,0.06,38.0,2689,Pumpion,Pumpkin Ale,0,16.0\n1497,0.06,25.0,2688,Stronghold,American Porter,0,16.0\n1498,0.055999999999999994,47.0,2687,Parapet ESB,Extra Special / Strong Bitter (ESB),0,16.0\n1499,0.069,,1854,Blue Boots IPA,American IPA,293,16.0\n1500,0.063,,1227,Hoppy Bitch IPA,American IPA,450,16.0\n1501,0.063,42.0,1226,Three Skulls Ale Pale Ale,American Pale Ale (APA),450,16.0\n1502,0.045,,541,Walter's Premium Pilsener Beer,German Pilsener,529,12.0\n1503,0.045,,109,Floppin' Crappie,American Pale Wheat Ale,529,12.0\n1504,0.043,,1917,Left of the Dial IPA,American IPA,271,12.0\n1505,0.04,,1190,Notch Session Pils,Czech Pilsener,271,12.0\n1506,0.055,,1264,O'Fallon Pumpkin Beer,Pumpkin Ale,442,12.0\n1507,0.061,66.0,1258,5 Day IPA,American IPA,442,12.0\n1508,0.051,7.0,128,O'Fallon Wheach,Fruit / Vegetable Beer,442,12.0\n1509,0.067,70.0,2331,Watershed IPA,American IPA,150,12.0\n1510,0.054000000000000006,24.0,1669,Oakshire Amber Ale,American Amber / Red Ale,150,12.0\n1511,0.057999999999999996,27.0,1668,Overcast Espresso Stout,American Stout,150,12.0\n1512,0.067,70.0,999,Watershed IPA (2013),American IPA,150,12.0\n1513,0.08199999999999999,25.0,2247,Lake Monster,Baltic Porter,184,16.0\n1514,0.049,27.0,2071,London Homesick Ale,English Bitter,184,12.0\n1515,0.048,35.0,2070,Luchesa Lager,Keller Bier / Zwickel Bier,184,12.0\n1516,0.048,35.0,2069,Slow Ride,American Pale Ale (APA),184,12.0\n1517,0.047,,2192,Occidental Hefeweizen,American Pale Wheat Ale,200,16.0\n1518,0.051,,1130,Occidental Dunkel,Dunkelweizen,200,16.0\n1519,0.05,,1129,Occidental Altbier,Altbier,200,16.0\n1520,0.045,,1081,Occidental Kölsch,Kölsch,200,16.0\n1521,0.092,72.0,2335,Perpetual Darkness,Belgian Strong Dark Ale,148,12.0\n1522,0.087,29.0,2334,Clan Warrior,Scotch Ale / Wee Heavy,148,12.0\n1523,0.054000000000000006,36.0,2333,Psycho Penguin Vanilla Porter,American Porter,148,12.0\n1524,0.047,,1721,Heliocentric Hefeweizen,Hefeweizen,148,12.0\n1525,0.051,,1720,Ghose Drifter Pale Ale,American Pale Ale (APA),148,12.0\n1526,0.051,,1431,Ghost Rider Pale Ale (2013),American Pale Ale (APA),148,12.0\n1527,0.047,,1430,Helios Hefeweizen (2013),Hefeweizen,148,12.0\n1528,0.095,19.0,1059,The Hole in Hadrian's Wall,Scottish Ale,471,16.0\n1529,0.065,26.0,1058,33 Select Brown Ale,American Brown Ale,471,16.0\n1530,0.06,29.0,603,Midwest Charm Farmhouse Ale,Saison / Farmhouse Ale,471,16.0\n1531,0.05,45.0,602,Boji Blue Pale Ale,American Pale Ale (APA),471,16.0\n1532,0.057,26.0,601,Winter Games Select #32 Stout,American Stout,471,16.0\n1533,0.05,23.0,600,Boji Beach Golden Rye Ale,Rye Beer,471,16.0\n1534,0.06,,1828,Hopsmith Pale Lager,American Pale Lager,301,16.0\n1535,0.065,65.0,1487,Falling Down Brown Ale,American Brown Ale,301,16.0\n1536,0.068,,1486,Resolution Rye Stout,American Stout,301,16.0\n1537,0.055,,1485,Plowshare Porter,American Porter,301,16.0\n1538,0.046,20.0,1394,Old Forge Pumpkin Ale,Pumpkin Ale,301,16.0\n1539,0.045,,1381,Endless Sun Ale,American Pale Wheat Ale,301,16.0\n1540,0.065,,900,Celestial Blonde Ale,American Blonde Ale,301,16.0\n1541,0.075,,891,Overbite IPA,American IPA,301,16.0\n1542,0.055,,509,T-Rail Pale Ale,American Pale Ale (APA),301,16.0\n1543,0.048,,508,Endless Summer Ale (2011),American Pale Wheat Ale,301,16.0\n1544,0.053,,1530,Clem's Gold,American Pale Lager,390,16.0\n1545,0.055,,1529,Lizzy's Red,American Amber / Red Lager,390,16.0\n1546,0.067,,1528,Orlison India Pale Lager,American Pale Lager,390,16.0\n1547,0.042,,1527,Brünette,Euro Dark Lager,390,16.0\n1548,0.040999999999999995,,1526,Havanüther,Light Lager,390,16.0\n1549,0.065,,2113,Lyric Ale,Saison / Farmhouse Ale,216,12.0\n1550,0.053,,2112,Atalanta,Saison / Farmhouse Ale,216,12.0\n1551,0.049,35.0,2302,Pinner Throwback IPA,American IPA,166,12.0\n1552,0.052000000000000005,,1883,Centennial State Pale Ale,American Pale Ale (APA),166,19.2\n1553,0.08,,1859,Old Chub NITRO,Scotch Ale / Wee Heavy,166,16.0\n1554,,,1796,The CROWLER™,,166,32.0\n1555,,,1790,CAN'D AID Foundation,,166,12.0\n1556,,,1752,Icey.P.A.,American IPA,166,16.0\n1557,0.05,,1751,One Nut Brown,English Brown Ale,166,12.0\n1558,,,1750,Birth IPA,American IPA,166,12.0\n1559,0.065,65.0,1444,Dale's Pale Ale,American Pale Ale (APA),166,12.0\n1560,0.065,65.0,1252,Dale's Pale Ale,American Pale Ale (APA),166,12.0\n1561,0.053,35.0,1167,Mama's Little Yella Pils,Czech Pilsener,166,19.2\n1562,0.085,,993,oSKAr the G'Rauch,American IPA,166,19.2\n1563,0.085,,992,oSKAr the G'Rauch,American IPA,166,16.0\n1564,0.065,65.0,955,Dale's Pale Ale,American Pale Ale (APA),166,19.2\n1565,0.07,,933,The Deuce,American Brown Ale,166,16.0\n1566,0.065,65.0,892,Dale's Pale Ale (10 Year Anniversary),American Pale Ale (APA),166,12.0\n1567,0.065,65.0,828,Dale's Pale Ale (2012),American Pale Ale (APA),166,12.0\n1568,0.087,85.0,806,Gordon Imperial Red (2010),American Double / Imperial IPA,166,12.0\n1569,0.065,65.0,755,Dale's Pale Ale (2011),American Pale Ale (APA),166,12.0\n1570,0.065,65.0,754,Dale's Pale Ale (2010),American Pale Ale (APA),166,12.0\n1571,0.087,85.0,726,G'KNIGHT (16 oz.),American Double / Imperial IPA,166,16.0\n1572,0.09,,720,15th Anniversary Abbey Ale (2012),Belgian Dark Ale,166,16.0\n1573,0.08,,661,Chaka,Belgian Strong Pale Ale,166,16.0\n1574,0.08,70.0,585,HGH (Home Grown Hops): Part Duh,American Strong Ale,166,12.0\n1575,0.08,,565,Deviant Dale's IPA,American Double / Imperial IPA,166,16.0\n1576,0.09,60.0,391,One Hit Wonder,American Double / Imperial IPA,166,12.0\n1577,0.087,85.0,388,G'KNIGHT (12 oz.),American Double / Imperial IPA,166,12.0\n1578,0.099,98.0,8,Ten Fidy Imperial Stout,Russian Imperial Stout,166,12.0\n1579,0.053,35.0,7,Mama's Little Yella Pils,Czech Pilsener,166,12.0\n1580,0.099,100.0,6,GUBNA Imperial IPA,American Double / Imperial IPA,166,12.0\n1581,0.08,35.0,5,Old Chub,Scottish Ale,166,12.0\n1582,0.087,85.0,4,Gordon Ale (2009),American Double / Imperial IPA,166,12.0\n1583,0.065,65.0,1,Dale's Pale Ale,American Pale Ale (APA),166,12.0\n1584,0.092,85.0,805,Gordon (2005),American Double / Imperial IPA,503,12.0\n1585,0.095,98.0,804,Ten Fidy Imperial Stout (2008),Russian Imperial Stout,503,12.0\n1586,0.099,98.0,803,Ten Fidy Imperial Stout (2007),Russian Imperial Stout,503,12.0\n1587,0.08,35.0,787,Old Chub (2008),Scottish Ale,503,12.0\n1588,0.08,35.0,786,Old Chub (2004),Scottish Ale,503,12.0\n1589,0.08,35.0,785,Old Chub (2003),Scottish Ale,503,12.0\n1590,0.065,65.0,745,Dale's Pale Ale (2008),American Pale Ale (APA),503,12.0\n1591,0.065,65.0,744,Dale's Pale Ale (2006),American Pale Ale (APA),503,12.0\n1592,0.065,65.0,743,Dale's Pale Ale (2004),American Pale Ale (APA),503,12.0\n1593,0.065,65.0,742,Dale's Pale Ale (2003),American Pale Ale (APA),503,12.0\n1594,0.065,65.0,741,Dale's Pale Ale (2002),American Pale Ale (APA),503,12.0\n1595,0.052000000000000005,,734,Leroy (2005),American Brown Ale,503,12.0\n1596,0.087,60.0,733,Gordon Beer (2006),American Double / Imperial IPA,503,12.0\n1597,0.087,85.0,1533,G'KNIGHT,American Double / Imperial IPA,389,12.0\n1598,0.099,98.0,1532,Ten Fidy,Russian Imperial Stout,389,12.0\n1599,0.08,85.0,1328,Deviant Dale's IPA,American Double / Imperial IPA,389,16.0\n1600,0.08,35.0,1175,Old Chub,Scottish Ale,389,12.0\n1601,0.065,65.0,1166,Dale's Pale Ale,American Pale Ale (APA),389,19.2\n1602,0.065,65.0,1065,Dale's Pale Ale,American Pale Ale (APA),389,12.0\n1603,0.055,45.0,1908,Fresh Slice White IPA,American White IPA,275,12.0\n1604,0.055,55.0,1946,Overgrown American Pale Ale,American Pale Ale (APA),261,12.0\n1605,0.04,39.0,1961,Ozark American Pale Ale,American Pale Ale (APA),259,12.0\n1606,0.048,,1684,Hula Hoppie Session IPA,American IPA,341,12.0\n1607,0.053,,927,Dirty Hippie Dark Wheat,American Dark Wheat Ale,341,12.0\n1608,0.052000000000000005,23.0,1268,Rustic Red,Irish Red Ale,441,16.0\n1609,0.053,48.0,697,Stimulator Pale Ale,American Pale Ale (APA),441,16.0\n1610,0.045,22.0,696,Old Town Ale,Kölsch,441,16.0\n1611,0.044000000000000004,28.0,695,Car 21,English Bitter,441,16.0\n1612,0.05,24.0,694,Cache La Porter,American Porter,441,16.0\n1613,0.042,35.0,1805,Rodeo Rye Pale Ale,American Pale Ale (APA),307,12.0\n1614,0.062,65.0,1048,Outlaw IPA,American IPA,307,12.0\n1615,0.044000000000000004,,1043,North Fork Lager,American Pale Lager,307,12.0\n1616,0.048,35.0,890,Payette Pale Ale,American Pale Ale (APA),307,12.0\n1617,0.055,25.0,775,Mutton Buster,American Brown Ale,307,12.0\n1618,0.05,,1087,Side Kick Kölsch,Kölsch,468,12.0\n1619,0.046,,1931,Fresh Cut Pilsner,American Pilsner,266,12.0\n1620,0.05,61.0,1930,Summer Session Ale,American Pale Wheat Ale,266,12.0\n1621,0.04,12.0,2238,Lobo Lito,Light Lager,187,12.0\n1622,0.05,17.0,2144,Robert Earl Keen Honey Pils,American Pilsner,187,12.0\n1623,0.065,77.0,2175,Mound Builder IPA,American IPA,205,12.0\n1624,0.062,62.0,2168,Amazon Princess IPA,American IPA,205,12.0\n1625,0.042,,1956,Farmer's Daughter Wheat,American Pale Wheat Ale,205,12.0\n1626,0.045,,1794,People's Pilsner,German Pilsener,205,12.0\n1627,0.055,10.0,2633,Hotbox Brown,American Brown Ale,13,12.0\n1628,0.048,15.0,2632,Gold,American Blonde Ale,13,12.0\n1629,0.057999999999999996,,2631,Black,American Black Ale,13,12.0\n1630,0.065,65.0,2630,98 Problems (Cuz A Hop Ain't One),American IPA,13,12.0\n1631,0.05,40.0,2629,Veteran’s Pale Ale (VPA),American Pale Ale (APA),13,12.0\n1632,0.05,35.0,2628,Grapefruit IPA,American IPA,13,12.0\n1633,0.051,,1062,Pete's ESP Lager (1998),American Pale Lager,470,12.0\n1634,0.047,,1061,Pete's Wicked Summer Brew (1995),American Pale Wheat Ale,470,12.0\n1635,0.049,,1060,Pete's Wicked Bohemian Pilsner (1997),Czech Pilsener,470,12.0\n1636,,,1056,Pete's Wicked Pale Ale (1997),American Pale Ale (APA),470,12.0\n1637,0.047,,1055,Pete's Wicked Summer Brew (2002),American Pale Wheat Ale,470,12.0\n1638,0.047,,1054,Pete's Wicked Summer Brew (1997),American Pale Wheat Ale,470,12.0\n1639,0.047,,1053,Pete's Wicked Summer Brew (1996),American Pale Wheat Ale,470,12.0\n1640,0.040999999999999995,12.0,2635,Sparkle,American Pale Lager,11,16.0\n1641,0.059000000000000004,25.0,1404,North 45 Amber Ale,American Amber / Red Ale,11,16.0\n1642,0.069,20.0,1403,Horny Monk,Dubbel,11,16.0\n1643,0.067,74.0,1402,Mind's Eye PA,American IPA,11,16.0\n1644,0.061,60.0,2312,Camelback,American IPA,157,12.0\n1645,0.055999999999999994,,1636,Local 5 Pale Ale,American Pale Ale (APA),355,16.0\n1646,0.073,,1518,Devils Head Red Ale,American Amber / Red Ale,355,16.0\n1647,0.07,75.0,1384,Elephant Rock IPA,American IPA,355,12.0\n1648,0.05,,1797,Black Bay Milk Stout,Milk / Sweet Stout,310,12.0\n1649,0.05,,1437,Atom Splitter Pale Ale,American Pale Ale (APA),310,12.0\n1650,0.06,20.0,1791,Hot Date Ale,Chile Beer,314,16.0\n1651,0.07,,1540,Masked Bandit IPA,American Black Ale,314,16.0\n1652,0.06,24.0,1491,Sweet Potato Ale,Fruit / Vegetable Beer,314,16.0\n1653,0.045,18.0,1335,Float Trip Ale,American Blonde Ale,314,16.0\n1654,0.055,25.0,847,Old Tom Porter,American Porter,314,16.0\n1655,0.045,18.0,846,Black Walnut Wheat,American Dark Wheat Ale,314,16.0\n1656,0.055,20.0,521,McKinney Eddy Amber Ale,American Amber / Red Ale,314,16.0\n1657,0.07,70.0,479,Missouri Mule India Pale Ale,American IPA,314,16.0\n1658,0.065,,2559,Blood of the Unicorn,American Amber / Red Ale,52,16.0\n1659,0.069,51.0,1760,GreyBeard™ IPA,American IPA,324,12.0\n1660,0.057,31.0,1759,Pisgah Pale Ale,American Pale Ale (APA),324,12.0\n1661,0.045,,1589,PONTO S.I.P.A.,American IPA,370,16.0\n1662,0.049,,1457,Chronic Ale,American Amber / Red Ale,370,16.0\n1663,0.068,,1191,Swami's India Pale Ale,American IPA,370,16.0\n1664,0.05,,2336,New Cleveland Palesner,American Pilsner,147,12.0\n1665,0.054000000000000006,45.0,2553,Mazzie,American Pale Ale (APA),55,12.0\n1666,0.099,,1909,Big Chuck Barleywine,American Barleywine,274,12.0\n1667,,,335,Ponderosa IPA,American IPA,548,12.0\n1668,,,64,Liquid Amber Ale,American Amber / Red Ale,548,12.0\n1669,0.059000000000000004,14.0,2360,Morning Wood Wheat (Current),American Pale Wheat Ale,135,12.0\n1670,0.069,17.0,1463,Hideout Helles,Munich Helles Lager,135,12.0\n1671,0.06,15.0,1462,Dead Eye Dunkel,Munich Dunkel Lager,135,12.0\n1672,0.057999999999999996,21.0,1461,Peacemaker Pilsner,Czech Pilsener,135,12.0\n1673,0.057,68.0,711,Over the Rail Pale Ale,American Pale Ale (APA),135,12.0\n1674,0.057999999999999996,21.0,188,Pallavicini Pilsner (2009),Czech Pilsener,135,12.0\n1675,0.059000000000000004,14.0,130,Morning Wood Wheat (Current),American Pale Wheat Ale,135,12.0\n1676,0.052000000000000005,18.0,399,Pyramid Hefeweizen (2011),Hefeweizen,544,12.0\n1677,0.052000000000000005,18.0,82,Haywire Hefeweizen (2010),Hefeweizen,544,16.0\n1678,0.045,35.0,2031,Golden Fleece,Belgian Pale Ale,246,12.0\n1679,0.055,30.0,2030,Smoking Mirror,American Porter,246,12.0\n1680,0.046,,2269,Rahr's Blonde,Munich Helles Lager,176,12.0\n1681,0.057999999999999996,60.0,2229,Pride of Texas Pale Ale,American Pale Ale (APA),176,12.0\n1682,0.044000000000000004,5.0,2370,18th Anniversary Gose,Gose,128,12.0\n1683,0.046,25.0,2211,White (2015),Witbier,128,12.0\n1684,0.099,85.0,1861,BLAKKR,American Black Ale,128,12.0\n1685,0.051,21.0,1718,Firemans #4 Blonde Ale (2013),American Blonde Ale,128,12.0\n1686,0.059000000000000004,,1290,The Sword Iron Swan Ale,English Pale Ale,128,12.0\n1687,0.053,52.0,1091,Hans' Pils (2015),German Pilsener,128,12.0\n1688,0.06,50.0,1086,Four Squared (2015),American Blonde Ale,128,12.0\n1689,0.051,21.0,830,Firemans #4 Blonde Ale (2015),American Blonde Ale,128,12.0\n1690,0.07200000000000001,55.0,1021,Watership Brown Ale,American Brown Ale,475,12.0\n1691,0.062,55.0,938,Gangway IPA,American IPA,475,12.0\n1692,0.049,,715,Long Day Lager,Czech Pilsener,475,12.0\n1693,0.051,17.0,2516,Farmer's Daughter Blonde,American Blonde Ale,68,16.0\n1694,0.055,45.0,2515,Pump House IPA,American IPA,68,16.0\n1695,0.07,,2514,Suicide Blonde IPA,Belgian IPA,68,16.0\n1696,0.047,25.0,2513,Vanilla Porter,American Porter,68,16.0\n1697,0.057999999999999996,18.0,2512,Honey Rye,Rye Beer,68,16.0\n1698,0.055,,1467,Happy Cider,Cider,403,16.0\n1699,0.065,44.0,945,Long Hammer IPA,American IPA,487,16.0\n1700,0.065,44.0,583,Long Hammer IPA,American IPA,487,12.0\n1701,0.057999999999999996,27.0,339,Copper Hook (2011),American Amber / Red Ale,487,12.0\n1702,0.08,,1375,Nectar of the Hops,Mead,421,16.0\n1703,0.08,,1374,Sunshine Nectar,Mead,421,16.0\n1704,0.08,,1373,Black Raspberry Nectar,Mead,421,16.0\n1705,0.05,16.0,2087,Blood Orange Wit,Witbier,225,16.0\n1706,0.05,40.0,2414,Consilium,American Pale Ale (APA),110,12.0\n1707,0.09,60.0,1581,Hammer & Sickle,Russian Imperial Stout,110,12.0\n1708,0.07,100.0,1176,Redacted Rye IPA,American IPA,110,16.0\n1709,0.099,100.0,1006,Elevation Triple India Pale Ale,American Double / Imperial IPA,110,12.0\n1710,0.05,25.0,1005,5:00 O'Clock Afternoon Ale,American Blonde Ale,110,16.0\n1711,0.07,100.0,636,Ryeteous Rye IPA (2012),American IPA,110,16.0\n1712,0.064,,1538,Stout Ol' Friend,American Stout,386,16.0\n1713,0.064,,1075,Stout Ol' Friend (2012),American Stout,386,16.0\n1714,,,710,Rye Porter,American Porter,386,16.0\n1715,0.05,,709,Miner's Gold,American Blonde Ale,386,16.0\n1716,0.046,,708,Vienna Lager,Vienna Lager,386,16.0\n1717,0.055999999999999994,,706,Jessie's Garage,American Pale Ale (APA),386,16.0\n1718,0.062,,220,Colorado Red Ale,American Amber / Red Ale,386,12.0\n1719,,,219,Miner's Gold,American Blonde Ale,386,12.0\n1720,0.055,40.0,2576,Fist City,American Pale Ale (APA),44,12.0\n1721,0.068,,1133,A Little Crazy,Belgian Pale Ale,44,12.0\n1722,0.057999999999999996,15.0,609,Rosa Hibiscus Ale,Herbed / Spiced Beer,44,12.0\n1723,0.061,31.0,418,Fistmas Ale,Herbed / Spiced Beer,44,12.0\n1724,0.057,25.0,417,Oktoberfest Revolution,Märzen / Oktoberfest,44,12.0\n1725,0.068,28.0,416,Eugene Porter,American Porter,44,12.0\n1726,0.065,70.0,415,Anti-Hero IPA,American IPA,44,12.0\n1727,0.05,14.0,414,Bottom Up Belgian Wit,Witbier,44,12.0\n1728,0.057,42.0,2452,Hustle,American Amber / Red Ale,93,12.0\n1729,0.055,42.0,2451,Pure Fury,American Pale Ale (APA),93,12.0\n1730,0.06,60.0,2132,Dad,American Amber / Red Ale,93,12.0\n1731,0.057999999999999996,35.0,1993,Panther,American Porter,93,12.0\n1732,0.052000000000000005,21.0,1992,Franz,Märzen / Oktoberfest,93,12.0\n1733,0.043,45.0,1935,Zen,American Pale Ale (APA),93,12.0\n1734,0.07200000000000001,75.0,1852,Truth,American IPA,93,12.0\n1735,0.048,25.0,1851,Cougar,American Blonde Ale,93,12.0\n1736,0.038,,2307,Smooth Operator,Cream Ale,162,16.0\n1737,0.035,,2580,Gose,Gose,42,16.0\n1738,0.043,,1807,Maine Island Trail Ale,American Pale Ale (APA),42,16.0\n1739,0.05,,1180,River North White Ale,Witbier,459,16.0\n1740,0.05,,1179,River North Ale,American Amber / Red Ale,459,16.0\n1741,0.05,55.0,1771,Lil SIPA,American IPA,321,16.0\n1742,0.055,60.0,1654,Hop Bomber Rye Pale Ale,American Pale Ale (APA),321,16.0\n1743,0.05,100.0,2579,Jah Mon,American IPA,43,12.0\n1744,0.062,,2373,Oktoberfest,Märzen / Oktoberfest,43,12.0\n1745,0.08,,2049,Headless Wylie,Pumpkin Ale,43,12.0\n1746,0.05,,2048,Dayman IPA,American IPA,43,12.0\n1747,0.071,,1880,All Aboard! Anniversary Stout,Oatmeal Stout,43,12.0\n1748,0.062,,1879,Hop Lace,American White IPA,43,12.0\n1749,0.048,,1878,OH-PA Session Pale Ale,American Pale Ale (APA),43,12.0\n1750,0.08,,1877,Patrick's Poison,American Amber / Red Ale,43,12.0\n1751,0.081,,1764,Rudolph's Red,American Amber / Red Ale,43,12.0\n1752,0.053,,1103,Babbling Blonde,American Blonde Ale,43,12.0\n1753,0.051,,1102,Maxwell's Scottish Ale,Scottish Ale,43,12.0\n1754,0.061,,1101,Grateful White,Witbier,43,12.0\n1755,0.055,,1100,RT Lager,American Amber / Red Lager,43,12.0\n1756,0.062,,1099,Old Wylie's IPA,American IPA,43,12.0\n1757,0.048,,1098,Hala Kahiki Pineapple Beer,Fruit / Vegetable Beer,43,12.0\n1758,0.045,,1330,Track 1 Amber Lager,American Amber / Red Lager,427,16.0\n1759,0.053,,2074,Pine Knob Pilsner,Czech Pilsener,229,16.0\n1760,,,1724,Cal and Co. Black Cherry Porter,American Porter,229,16.0\n1761,0.055,,1280,Lazy Daze Lager,American Adjunct Lager,229,16.0\n1762,0.059000000000000004,,899,Rochester Red Ale,American Amber / Red Ale,229,16.0\n1763,0.05,,363,Milkshake Stout,Milk / Sweet Stout,229,16.0\n1764,0.07,,158,Cornerstone IPA,American IPA,229,16.0\n1765,0.055,,97,Lazy Daze Lager,American Adjunct Lager,229,12.0\n1766,0.051,,1860,Rogue American Amber Ale,American Amber / Red Ale,289,16.0\n1767,0.076,78.0,1577,12th Round,American Strong Ale,376,16.0\n1768,0.07,80.0,1576,RoughTail IPA,American IPA,376,16.0\n1769,0.08,,1575,Polar Night Stout,American Stout,376,16.0\n1770,0.071,36.0,2304,Sundown,Saison / Farmhouse Ale,164,12.0\n1771,0.099,,2249,Sanctified,Belgian Strong Pale Ale,164,12.0\n1772,0.051,,2053,Fear of a Brett Planet,American Pale Ale (APA),164,12.0\n1773,0.055999999999999994,40.0,1842,Original Slacker Ale,English Brown Ale,164,12.0\n1774,0.07200000000000001,,1841,Alpha Blackback,American Black Ale,164,12.0\n1775,0.063,,1782,Kiss Off IPA,American IPA,164,12.0\n1776,0.045,28.0,1552,Dog Days Summer Ale,Kölsch,164,12.0\n1777,0.055999999999999994,35.0,1479,1881 California Red,American Amber / Red Ale,397,12.0\n1778,0.073,55.0,1478,CAPT Black IPA,American Black Ale,397,12.0\n1779,0.048,42.0,1370,Ruhstaller's Gilt Edge Lager Beer,American Amber / Red Lager,397,12.0\n1780,0.073,55.0,883,CAPT Black IPA,American Black Ale,397,16.0\n1781,0.055999999999999994,35.0,882,1881 California Red Ale,American Amber / Red Ale,397,16.0\n1782,0.05,15.0,1868,Saint Archer White Ale,Witbier,288,12.0\n1783,0.068,66.0,1867,Saint Archer IPA,American IPA,288,12.0\n1784,0.052000000000000005,40.0,1865,Saint Archer Pale Ale,American Pale Ale (APA),288,12.0\n1785,0.048,22.0,1864,Saint Archer Blonde,Kölsch,288,12.0\n1786,0.069,20.0,2599,Sex Panther,American Porter,30,12.0\n1787,0.095,25.0,2073,Winter Warmer (Vault Series),Winter Warmer,30,16.0\n1788,0.091,99.0,2063,Count Hopula (Vault Series),American Double / Imperial IPA,30,16.0\n1789,0.055,,1995,Oktoberfest,Märzen / Oktoberfest,30,12.0\n1790,0.05,15.0,1934,SunSpot Golden Ale,American Blonde Ale,30,12.0\n1791,0.06,,1329,I.W.A. (2011),American Pale Wheat Ale,30,12.0\n1792,0.065,,1299,Supermonk I.P.A.,Belgian IPA,30,12.0\n1793,0.055,20.0,1073,Epicenter Amber Ale,American Amber / Red Ale,30,12.0\n1794,0.05,15.0,1072,SanTan HefeWeizen,Hefeweizen,30,12.0\n1795,0.07,85.0,1071,Hop Shock IPA,American IPA,30,12.0\n1796,0.069,20.0,852,Sex Panther (2014),American Porter,30,12.0\n1797,0.055,45.0,850,Devil’s Ale,American Pale Ale (APA),30,12.0\n1798,0.081,,839,Rail Slide Imperial Spiced Ale,Herbed / Spiced Beer,30,12.0\n1799,0.05,20.0,777,Mr. Pineapple,Fruit / Vegetable Beer,30,12.0\n1800,0.055,45.0,764,American Idiot Ale (2012),American Pale Ale (APA),30,12.0\n1801,0.07,85.0,317,Hop Shock IPA (2010),American IPA,30,12.0\n1802,0.05,15.0,286,SanTan HefeWeizen (2010),Hefeweizen,30,12.0\n1803,0.055,45.0,285,Devil’s Ale (2010),American Pale Ale (APA),30,12.0\n1804,0.055,20.0,124,Epicenter Amber Ale (2010),American Amber / Red Ale,30,12.0\n1805,0.057999999999999996,20.0,1392,Sanitas Saison Ale,Saison / Farmhouse Ale,419,12.0\n1806,0.068,65.0,1391,Sanitas Black IPA,American Black Ale,419,12.0\n1807,0.08900000000000001,88.0,2002,Giant DIPA,American Double / Imperial IPA,252,16.0\n1808,0.054000000000000006,,1683,Dread Brown Ale,American Brown Ale,252,12.0\n1809,0.07,,1362,Casinos IPA,English India Pale Ale (IPA),252,16.0\n1810,0.055,30.0,1519,Saison 88,Saison / Farmhouse Ale,392,12.0\n1811,0.071,95.0,967,Black IPA,American Black Ale,392,12.0\n1812,0.045,,599,Santa Fe Irish Red Ale,Irish Red Ale,392,12.0\n1813,,,307,Santa Fe Oktoberfest,Märzen / Oktoberfest,392,12.0\n1814,0.08,,305,Imperial Java Stout,Russian Imperial Stout,392,12.0\n1815,0.055,,304,Freestyle Pilsner,German Pilsener,392,12.0\n1816,0.066,,217,Happy Camper IPA,American IPA,392,12.0\n1817,0.05,11.0,1477,Oval Beach Blonde Ale,American Blonde Ale,398,16.0\n1818,0.065,,1503,Oak Aged Cider,Cider,394,12.0\n1819,0.065,,1466,Ginger Cider,Cider,394,12.0\n1820,0.065,,1245,Schilling Hard Cider,Cider,394,12.0\n1821,0.05,45.0,1324,Schlafly Yakima Wheat Ale,American Pale Wheat Ale,428,12.0\n1822,0.05,,1323,Schlafly Black Lager,Schwarzbier,428,12.0\n1823,0.045,30.0,1078,Schlafly IPA,American IPA,428,12.0\n1824,0.05,30.0,1077,Schlafly American Brown Ale,American Brown Ale,428,12.0\n1825,0.040999999999999995,16.0,588,Schlafly Hefeweizen,Hefeweizen,428,12.0\n1826,0.045,17.0,53,Schlafly Summer Lager,Munich Helles Lager,428,12.0\n1827,0.047,,815,Sea Dog Wild Blueberry Wheat Ale,Fruit / Vegetable Beer,502,12.0\n1828,0.07400000000000001,60.0,1302,Blur India Pale Ale,American IPA,432,12.0\n1829,0.065,,1416,Dry Cider,Cider,411,16.0\n1830,0.065,,1415,Dry Hard Cider,Cider,411,16.0\n1831,0.07,105.0,918,Frankenlou's IPA,American IPA,494,16.0\n1832,0.07,55.0,917,Becky's Black Cat Porter,American Porter,494,16.0\n1833,0.077,40.0,2250,Seventh Son of a Seventh Son,American Strong Ale,183,16.0\n1834,0.053,20.0,1768,Stone Fort Brown Ale,English Brown Ale,183,16.0\n1835,0.077,40.0,1767,Seventh Son Hopped Red Ale,American Amber / Red Ale,183,16.0\n1836,0.06,53.0,1766,Humulus Nimbus Super Pale Ale,American Pale Ale (APA),183,16.0\n1837,0.07,68.0,1765,Golden Ratio IPA,American IPA,183,16.0\n1838,0.068,,2368,Black Hop IPA,American Black Ale,130,12.0\n1839,0.05,,738,Archer's Ale (2004),English Pale Ale,511,12.0\n1840,0.069,65.0,1539,Monkey Fist IPA,American IPA,385,12.0\n1841,0.051,,975,Shipyard Summer Ale,American Pale Wheat Ale,385,12.0\n1842,0.047,,814,Pumpkinhead Ale,Pumpkin Ale,385,12.0\n1843,0.051,,727,Shipyard Export,American Blonde Ale,385,12.0\n1844,0.052000000000000005,,2474,Nooner,German Pilsener,83,12.0\n1845,0.07200000000000001,65.0,2239,Torpedo,American IPA,83,12.0\n1846,0.06,,1919,Yonder Bock,Maibock / Helles Bock,83,12.0\n1847,0.06,,1918,CANfusion Rye Bock,Rye Beer,83,12.0\n1848,0.055999999999999994,37.0,1905,Sierra Nevada Pale Ale,American Pale Ale (APA),83,16.0\n1849,0.048,26.0,1338,Old Chico Crystal Wheat,American Pale Wheat Ale,83,12.0\n1850,0.05,28.0,1295,Summerfest,Czech Pilsener,83,12.0\n1851,0.07200000000000001,65.0,426,Torpedo,American IPA,83,16.0\n1852,0.055999999999999994,37.0,400,Sierra Nevada Pale Ale,American Pale Ale (APA),83,12.0\n1853,0.069,,2353,Sietsema Red Label,Cider,137,16.0\n1854,0.042,,212,Bear Ass Brown,American Brown Ale,551,12.0\n1855,0.06,,161,Red Mountain Ale,American Amber / Red Ale,551,12.0\n1856,0.068,,160,Ice Pick Ale,American IPA,551,12.0\n1857,0.1,52.0,2574,4Beans,Baltic Porter,46,12.0\n1858,0.042,16.0,2479,Jammer,Gose,46,12.0\n1859,0.08,,2443,Abigale,Belgian Pale Ale,46,12.0\n1860,0.032,7.0,2266,Rad,Fruit / Vegetable Beer,46,16.0\n1861,0.065,62.0,2090,Bengali,American IPA,46,24.0\n1862,0.047,50.0,1962,Sensi Harvest,American Pale Ale (APA),46,12.0\n1863,0.099,111.0,1696,Hi-Res,American Double / Imperial IPA,46,12.0\n1864,0.07,70.0,1608,Global Warmer,American Strong Ale,46,12.0\n1865,0.067,74.0,1591,Autumnation (2013),American IPA,46,16.0\n1866,0.054000000000000006,42.0,1388,The Crisp,German Pilsener,46,16.0\n1867,0.052000000000000005,34.0,1387,Sweet Action,Cream Ale,46,16.0\n1868,0.063,57.0,1386,Righteous Ale,Rye Beer,46,16.0\n1869,0.064,62.0,1385,Bengali Tiger,American IPA,46,16.0\n1870,0.099,85.0,1020,3Beans,Baltic Porter,46,12.0\n1871,0.059000000000000004,47.0,778,Brownstone,American Brown Ale,46,16.0\n1872,0.052000000000000005,11.0,630,Apollo,American Pale Wheat Ale,46,16.0\n1873,0.049,35.0,629,Harbinger,Saison / Farmhouse Ale,46,16.0\n1874,0.091,103.0,628,Resin,American Double / Imperial IPA,46,12.0\n1875,0.063,69.0,525,Diesel,American Stout,46,16.0\n1876,0.06,48.0,512,Autumnation (2011-12) (2011),Pumpkin Ale,46,16.0\n1877,0.054000000000000006,42.0,425,The Crisp (2011),German Pilsener,46,16.0\n1878,0.052000000000000005,34.0,424,Sweet Action (2011),Cream Ale,46,16.0\n1879,0.063,57.0,423,Righteous Ale (2011),Rye Beer,46,16.0\n1880,0.064,62.0,422,Bengali Tiger (2011),American IPA,46,16.0\n1881,0.045,,1942,Rudie Session IPA,American IPA,264,12.0\n1882,0.07400000000000001,,1708,Taster's Choice,Doppelbock,264,12.0\n1883,0.068,65.0,1521,Modus Hoperandi,American IPA,264,12.0\n1884,0.057999999999999996,15.0,1297,Estival Cream Stout,American Stout,264,12.0\n1885,0.057999999999999996,,1192,Vernal Minthe Stout,American Stout,264,12.0\n1886,0.08,,1013,Hibernal Vinifera Stout,Foreign / Export Stout,264,12.0\n1887,,,774,Autumnal Molé Stout,American Stout,264,12.0\n1888,0.042,18.0,386,Mexican Logger,American Pale Lager,264,12.0\n1889,0.053,,70,True Blonde Ale,American Blonde Ale,264,12.0\n1890,0.061,,69,Euphoria Pale Ale,American Pale Ale (APA),264,12.0\n1891,0.057,58.0,68,ESB Special Ale,Extra Special / Strong Bitter (ESB),264,12.0\n1892,0.068,65.0,67,Modus Hoperandi,American IPA,264,12.0\n1893,0.057999999999999996,39.0,1792,Iron Butt Red Ale,American Amber / Red Ale,313,12.0\n1894,0.071,92.0,1609,Initial Point India Pale Ale,American IPA,313,12.0\n1895,0.085,,2537,Monkey Dancing On A Razor Blade,Belgian IPA,64,24.0\n1896,0.08199999999999999,,2536,Tripel Deke,Tripel,64,24.0\n1897,0.049,,30,Urban Wilderness Pale Ale,English Pale Ale,557,12.0\n1898,0.06,70.0,2305,Homefront IPA,American IPA,163,12.0\n1899,0.055,16.0,1588,Sly Fox Christmas Ale 2013,Winter Warmer,371,12.0\n1900,0.055999999999999994,25.0,1363,Grisette,Grisette,371,12.0\n1901,0.062,,1211,360° India Pale Ale,American IPA,371,12.0\n1902,0.049,18.0,1123,Helles Golden Lager,Munich Helles Lager,371,12.0\n1903,0.055,16.0,926,Sly Fox Christmas Ale 2012 (2012),Winter Warmer,371,12.0\n1904,0.084,90.0,894,Odyssey Imperial IPA,American Double / Imperial IPA,371,12.0\n1905,0.057999999999999996,25.0,166,Oktoberfest Lager,Märzen / Oktoberfest,371,12.0\n1906,0.07,113.0,24,113 IPA,American IPA,371,12.0\n1907,0.053,21.0,23,Dunkel Lager,Munich Dunkel Lager,371,12.0\n1908,0.055999999999999994,11.0,22,Royal Weisse Ale,Hefeweizen,371,12.0\n1909,0.049,44.0,21,Pikeland Pils,German Pilsener,371,12.0\n1910,0.051,40.0,20,Phoenix Pale Ale,American Pale Ale (APA),371,12.0\n1911,0.07,88.0,2407,Rule G IPA,American IPA,115,12.0\n1912,0.057999999999999996,35.0,2406,Murphy's Law,American Amber / Red Ale,115,12.0\n1913,0.062,33.0,2405,Alter Ego ,Saison / Farmhouse Ale,115,12.0\n1914,0.05,,2234,Monarch Pilsner,American Pilsner,191,12.0\n1915,0.06,55.0,1606,Snow King Pale Ale,American Pale Ale (APA),191,12.0\n1916,0.054000000000000006,36.0,617,Zonker Stout,Foreign / Export Stout,191,12.0\n1917,0.05,22.0,407,OB-1 Organic Ale,English Brown Ale,191,12.0\n1918,0.05,18.0,406,Snake River Lager,Vienna Lager,191,12.0\n1919,0.052000000000000005,32.0,402,Snake River Pale Ale,American Pale Ale (APA),191,12.0\n1920,0.068,60.0,393,Pako’s EyePA,American IPA,191,12.0\n1921,0.05,,1798,Thanksgiving Ale,Kölsch,309,12.0\n1922,0.092,,1655,Double Dagger Imperial IPA,American Double / Imperial IPA,309,12.0\n1923,0.063,100.0,1596,Dagger Falls IPA,American IPA,309,12.0\n1924,0.063,100.0,1595,Dagger Falls IPA,American IPA,309,12.0\n1925,0.06,,1482,Socktoberfest,Märzen / Oktoberfest,309,16.0\n1926,0.079,,1447,Hopnoxious Imperial IPA,American Double / Imperial IPA,309,12.0\n1927,0.099,,1425,Barrel Aged Seven Devils Imperial Stout,American Double / Imperial Stout,309,12.0\n1928,0.055,,1424,Boise Co-Op Two Score Ale,Saison / Farmhouse Ale,309,16.0\n1929,0.05,,1298,Sockeye Belgian Style Summer Ale,Witbier,309,16.0\n1930,0.064,,1181,Sockeye Maibock,Maibock / Helles Bock,309,12.0\n1931,0.099,100.0,1160,Old Devil's Tooth,American Barleywine,309,12.0\n1932,0.043,,1152,Galena Golden,American Blonde Ale,309,12.0\n1933,0.052000000000000005,32.0,1151,Hell-Diver Pale Ale,American Pale Ale (APA),309,12.0\n1934,0.046,12.0,1150,Woolybugger Wheat,American Pale Wheat Ale,309,12.0\n1935,0.057,,1076,Power House Porter,American Porter,309,12.0\n1936,0.084,90.0,995,Winterfest,American Strong Ale,309,16.0\n1937,0.063,100.0,879,Dagger Falls IPA,American IPA,309,12.0\n1938,0.07,18.0,1972,LuckenBock,Bock,257,16.0\n1939,0.055,40.0,1971,Texas Pale Ale (TPA),American IPA,257,16.0\n1940,0.08,,1970,6 String Saison,Saison / Farmhouse Ale,257,16.0\n1941,0.05,22.0,1969,Kol' Beer,Kölsch,257,16.0\n1942,0.035,,2024,Montauk Light,Light Lager,249,12.0\n1943,0.048,32.0,1283,Na Zdraví Pilsner,Czech Pilsener,436,16.0\n1944,0.055,65.0,1282,Nice Rack IPA,American IPA,436,16.0\n1945,0.075,72.0,2362,2014 IPA Cicada Series,American IPA,133,16.0\n1946,0.077,65.0,2346,Sinister Minister Black IPA,American IPA,133,16.0\n1947,0.053,45.0,2320,Jack the Sipper,Extra Special / Strong Bitter (ESB),133,12.0\n1948,0.057999999999999996,60.0,2297,Devil's Harvest Extra Pale Ale,American Pale Ale (APA),133,12.0\n1949,0.05,20.0,2296,Suzy B Dirty Blonde Ale,American Blonde Ale,133,12.0\n1950,0.08,80.0,1745,Mississippi Fire Ant,American Amber / Red Ale,133,16.0\n1951,0.057999999999999996,40.0,1120,Hipster Breakfast,Oatmeal Stout,133,16.0\n1952,0.05,20.0,1118,Suzy B Dirty Blonde Ale,American Blonde Ale,133,16.0\n1953,0.057999999999999996,60.0,1117,Devil's Harvest Extra Pale Ale,American Pale Ale (APA),133,16.0\n1954,0.065,45.0,2387,Pine Belt Pale Ale,American Pale Ale (APA),118,12.0\n1955,0.055,,2267,Walloon,Saison / Farmhouse Ale,118,12.0\n1956,0.069,23.0,1740,Le Mort Vivant,Bière de Garde,118,12.0\n1957,0.085,110.0,1728,Red Cockaded Ale,American Double / Imperial IPA,118,12.0\n1958,0.092,100.0,1497,Valkyrie Double IPA,American Double / Imperial IPA,118,12.0\n1959,0.085,110.0,1011,Red Cockaded Ale (2013),American Double / Imperial IPA,118,12.0\n1960,0.07200000000000001,40.0,1010,Old Potentate,Old Ale,118,12.0\n1961,0.05,20.0,856,Bombshell Blonde,American Blonde Ale,118,16.0\n1962,0.099,100.0,853,PRO-AM (2012) (2012),American Double / Imperial IPA,118,12.0\n1963,0.055,,691,Walloon (2014),Saison / Farmhouse Ale,118,12.0\n1964,0.069,23.0,555,Le Mort Vivant (2011),Bière de Garde,118,12.0\n1965,0.083,50.0,46,Buried Hatchet Stout,Foreign / Export Stout,118,12.0\n1966,0.065,45.0,45,Pine Belt Pale Ale,American Pale Ale (APA),118,16.0\n1967,0.05,20.0,44,Bombshell Blonde,American Blonde Ale,118,12.0\n1968,0.047,35.0,2486,Baby Daddy Session IPA,American IPA,78,12.0\n1969,,,763,Hopluia (2004),English India Pale Ale (IPA),508,16.0\n1970,0.057999999999999996,,2271,Ball & Chain (2014),American Pale Ale (APA),175,16.0\n1971,0.096,,2206,Bitter Biker Double IPA,American Double / Imperial IPA,175,16.0\n1972,0.08199999999999999,,2136,God Damn Pigeon Porter,American Porter,175,16.0\n1973,0.079,,2135,Working for the Weekend,American Double / Imperial IPA,175,16.0\n1974,0.06,,2134,Angry Adam,American Amber / Red Ale,175,16.0\n1975,0.055,,2109,Freedom Fries,American Stout,175,16.0\n1976,0.096,,1821,Bitter Biker Double IPA,American Double / Imperial IPA,175,12.0\n1977,0.073,,1820,Ghost Bike Pale Ale,American Pale Ale (APA),175,16.0\n1978,0.062,,1819,Spiteful IPA,American IPA,175,12.0\n1979,0.06,,1634,Alley Time,American Pale Ale (APA),175,12.0\n1980,0.057999999999999996,,1633,Fat Badger,Irish Red Ale,175,12.0\n1981,0.055,,1632,In the Weeds,American Pale Wheat Ale,175,12.0\n1982,0.05,22.0,855,Special Amber,Vienna Lager,498,12.0\n1983,0.05,22.0,445,Special Amber,Vienna Lager,498,12.0\n1984,0.055999999999999994,,1587,Seven Gates Pale Ale,American Pale Ale (APA),372,12.0\n1985,0.052000000000000005,,2242,Gunga Din,Cider,186,16.0\n1986,0.042,20.0,1544,Starr Pils,German Pilsener,383,12.0\n1987,0.065,52.0,1205,Northern Lights India Pale Ale,American IPA,383,16.0\n1988,0.048,12.0,369,Festie,Märzen / Oktoberfest,383,12.0\n1989,0.065,52.0,368,Northern Lights India Pale Ale,American IPA,383,12.0\n1990,0.065,65.0,2386,Third Eye Enlightened Pale Ale,American Pale Ale (APA),119,12.0\n1991,0.049,17.0,92,Colorado Kölsch,Kölsch,119,12.0\n1992,0.057,25.0,91,Steam Engine Lager,American Amber / Red Lager,119,12.0\n1993,0.065,65.0,90,Third Eye Pale Ale,American IPA,119,12.0\n1994,0.047,9.0,2366,Point Special (Current),American Adjunct Lager,131,12.0\n1995,0.047,9.0,2365,Point Special,American Adjunct Lager,131,12.0\n1996,0.054000000000000006,33.0,2270,Point Cascade Pale Ale (2013),American Pale Ale (APA),131,12.0\n1997,0.047,9.0,2228,Point Special,American Adjunct Lager,131,12.0\n1998,0.052000000000000005,9.0,2151,Onyx Black Ale,American Black Ale,131,12.0\n1999,0.063,64.0,2150,Beyond The Pale IPA,American IPA,131,12.0\n"
  },
  {
    "path": "plugins/riot/src/test/resources/files/beers2.csv",
    "content": ",abv,ibu,id,name,style,brewery_id,ounces\n2000,0.047,9.0,2122,Point Special (2013),American Adjunct Lager,131,12.0\n2001,0.047,9.0,2121,Point Special (2012),American Adjunct Lager,131,12.0\n2002,0.047,9.0,2115,Point Special Lager,American Adjunct Lager,131,16.0\n2003,0.062,,1450,St. Benedict's Winter Ale,Winter Warmer,131,12.0\n2004,0.057,15.0,1357,Point Oktoberfest,Märzen / Oktoberfest,131,16.0\n2005,0.052000000000000005,7.0,1225,Point Nude Beach Summer Wheat,American Pale Wheat Ale,131,16.0\n2006,0.05,7.0,816,Point Nude Beach Summer Wheat,American Pale Wheat Ale,131,12.0\n2007,0.05,7.0,772,Point Nude Beach Summer Wheat (2011),American Pale Wheat Ale,131,12.0\n2008,0.035,,684,Drop Dead Blonde,American Blonde Ale,131,12.0\n2009,0.049,13.0,650,Three Kings Ale,Kölsch,131,12.0\n2010,0.057,15.0,456,Point Oktoberfest,Märzen / Oktoberfest,131,12.0\n2011,0.054000000000000006,32.0,357,2012 Black Ale,American Brown Ale,131,12.0\n2012,0.05,7.0,141,Point Nude Beach Summer Wheat (2010),American Pale Wheat Ale,131,12.0\n2013,0.054000000000000006,33.0,140,Point Cascade Pale Ale,American Pale Ale (APA),131,12.0\n2014,0.047,14.0,139,Point Amber Classic,American Amber / Red Lager,131,12.0\n2015,0.047,9.0,138,Point Special Lager,American Adjunct Lager,131,12.0\n2016,0.051,31.0,953,Wisco Disco,American Amber / Red Ale,486,16.0\n2017,0.05,,1983,Brontide,American Black Ale,255,12.0\n2018,0.05,,1631,Brontide,American Black Ale,255,12.0\n2019,0.045,,1344,Classique,Saison / Farmhouse Ale,255,12.0\n2020,0.045,,922,Sunsplash Golden Ale (2004),American Blonde Ale,492,12.0\n2021,0.051,25.0,1410,Sand Island Lighthouse,Kölsch,412,12.0\n2022,0.05,30.0,925,Lily Flagg Milk Stout,Milk / Sweet Stout,412,12.0\n2023,0.07200000000000001,70.0,637,Monkeynaut IPA,American IPA,412,12.0\n2024,0.05,,2369,Straub Beer (Current),American Adjunct Lager,129,12.0\n2025,0.040999999999999995,8.0,2233,American Lager,American Adjunct Lager,129,12.0\n2026,0.040999999999999995,8.0,2232,American Amber,American Amber / Red Lager,129,12.0\n2027,0.032,13.0,2231,American Light,Light Lager,129,12.0\n2028,0.053,49.0,2352,Extra Pale Ale,American Pale Ale (APA),138,12.0\n2029,0.053,40.0,2549,Make It So,Extra Special / Strong Bitter (ESB),58,12.0\n2030,0.047,55.0,2473,Hopvale Organic Ale,American Pale Ale (APA),58,16.0\n2031,0.083,100.0,2415,Unchained #18 Hop Silo,American Double / Imperial IPA,58,16.0\n2032,0.052000000000000005,29.0,2605,Tip Off,Altbier,25,16.0\n2033,0.054000000000000006,,2215,Java Mac,Scottish Ale,25,16.0\n2034,0.054000000000000006,23.0,2164,Cowbell,American Porter,25,16.0\n2035,0.057999999999999996,20.0,2085,Hop Up Offa That Brett (2014),Belgian Pale Ale,25,16.0\n2036,0.083,23.0,2084,PV Muckle (2013),Scotch Ale / Wee Heavy,25,16.0\n2037,0.099,36.0,2083,Bourbon Barrel Batch 666: Sympathy for the Devil,Belgian Dark Ale,25,16.0\n2038,0.09,30.0,2082,Whip Fight,Scotch Ale / Wee Heavy,25,16.0\n2039,0.053,23.0,2081,Port Barrel Wee Mac ,Scotch Ale / Wee Heavy,25,16.0\n2040,0.064,75.0,2001,Fistful Of Hops Red,American IPA,25,16.0\n2041,0.063,75.0,2000,Fistful of Hops Orange,American IPA,25,16.0\n2042,0.064,75.0,1999,Fistful Of Hops Blue,American IPA,25,16.0\n2043,0.064,75.0,1996,Fistful of Hops Green,American IPA,25,16.0\n2044,,,1948,30 Min Coma,Belgian IPA,25,16.0\n2045,0.09,30.0,1656,Wee Muckle,Scotch Ale / Wee Heavy,25,16.0\n2046,0.065,55.0,1599,Royal Brat,Extra Special / Strong Bitter (ESB),25,16.0\n2047,0.075,77.0,1420,Grapefruit Jungle (GFJ),American IPA,25,16.0\n2048,0.055999999999999994,50.0,1389,Osiris Pale Ale,American Pale Ale (APA),25,16.0\n2049,0.099,75.0,1367,Bourbon Barrel Aged Timmie,Russian Imperial Stout,25,16.0\n2050,0.063,23.0,1366,Stupid Sexy Flanders,Flanders Oud Bruin,25,16.0\n2051,,,1347,Bourbon Barrel Cowbell,American Porter,25,16.0\n2052,0.054000000000000006,,1314,Popcorn Pilsner,German Pilsener,25,16.0\n2053,0.071,27.0,1128,Ring of Dingle,Irish Dry Stout,25,16.0\n2054,0.054000000000000006,23.0,1127,Bourbon Barrel Wee Mac,Scottish Ale,25,16.0\n2055,0.099,60.0,1049,Bourbon Barrel Johan,English Barleywine,25,16.0\n2056,0.07,,934,The Deuce,American Brown Ale,25,16.0\n2057,0.09,24.0,923,The Velvet Fog,Quadrupel (Quad),25,16.0\n2058,0.055,23.0,874,Sun King Oktoberfest,Märzen / Oktoberfest,25,16.0\n2059,0.052000000000000005,24.0,739,Indianapolis Indians Lager,Dortmunder / Export Lager,25,16.0\n2060,0.052000000000000005,24.0,698,Indians Victory Lager (2012),Dortmunder / Export Lager,25,16.0\n2061,0.08,,660,Chaka,Belgian Strong Pale Ale,25,16.0\n2062,0.091,91.0,651,Isis,American Double / Imperial IPA,25,16.0\n2063,0.09,30.0,584,Wee Muckle (2011),Scotch Ale / Wee Heavy,25,16.0\n2064,0.075,77.0,532,Grapefruit Jungle (GFJ) (2011),American IPA,25,16.0\n2065,0.055,23.0,526,Sun King Oktoberfest (2011),Märzen / Oktoberfest,25,16.0\n2066,0.099,60.0,394,Johan the Barleywine,English Barleywine,25,16.0\n2067,0.054000000000000006,23.0,213,Wee Mac Scottish-Style Ale,Scottish Ale,25,16.0\n2068,0.053,20.0,55,Sunlight Cream Ale,Cream Ale,25,16.0\n2069,0.055999999999999994,50.0,54,Osiris Pale Ale (2010),American Pale Ale (APA),25,16.0\n2070,0.045,,1207,Dam Lager,American Amber / Red Lager,455,12.0\n2071,0.07,,1206,Red Clay IPA,American IPA,455,12.0\n2072,0.07200000000000001,,2543,Todd the Axe Man,American IPA,61,16.0\n2073,0.057,,2409,Doomtree,Extra Special / Strong Bitter (ESB),61,16.0\n2074,0.099,85.0,1739,BLAKKR,American Black Ale,61,16.0\n2075,0.073,69.0,1112,Overrated! West Coast Style IPA,American IPA,61,16.0\n2076,0.075,90.0,329,WET,American IPA,61,16.0\n2077,0.04,37.0,19,Bitter Brewer,English Bitter,61,16.0\n2078,0.055,34.0,18,SurlyFest,Rye Beer,61,16.0\n2079,0.051,45.0,17,Coffee Bender,American Brown Ale,61,16.0\n2080,0.051,45.0,16,Bender,American Brown Ale,61,16.0\n2081,0.09699999999999999,120.0,15,Abrasive Ale,American Double / Imperial IPA,61,16.0\n2082,0.051,20.0,14,Hell,Keller Bier / Zwickel Bier,61,16.0\n2083,0.067,33.0,13,CynicAle,Saison / Farmhouse Ale,61,16.0\n2084,0.062,99.0,12,Furious,American IPA,61,16.0\n2085,0.073,50.0,1242,Big Nose,American IPA,447,12.0\n2086,0.05,10.0,1241,Cotton Mouth,Witbier,447,12.0\n2087,0.055999999999999994,35.0,1240,Stump Knocker Pale Ale,American Pale Ale (APA),447,12.0\n2088,0.05,38.0,1239,Midnight Oil,Oatmeal Stout,447,12.0\n2089,0.059000000000000004,18.0,1238,Wild Night,Cream Ale,447,12.0\n2090,0.045,,1554,Bermuda Triangle Ginger Beer,Herbed / Spiced Beer,381,12.0\n2091,0.055,35.0,2568,Take Two Pils,German Pilsener,49,12.0\n2092,0.057,,2551,Waterkeeper,Hefeweizen,49,12.0\n2093,0.064,,1710,SweetWater IPA,American IPA,49,12.0\n2094,0.054000000000000006,,1709,420 Extra Pale Ale,American Pale Ale (APA),49,12.0\n2095,0.08,95.0,1229,Dodgy Knight Imperial IPA,American Double / Imperial IPA,449,12.0\n2096,0.05,,1164,TailGate Saison,Saison / Farmhouse Ale,449,12.0\n2097,0.05,44.0,663,TailGate IPA,American IPA,449,24.0\n2098,0.05,44.0,662,TailGate IPA,American IPA,449,12.0\n2099,0.049,28.0,623,TailGate Hefeweizen,Hefeweizen,449,24.0\n2100,0.05,19.0,622,Blacktop Blonde,American Blonde Ale,449,24.0\n2101,0.05,19.0,362,Blacktop Blonde,American Blonde Ale,449,12.0\n2102,0.049,28.0,361,TailGate Hefeweizen,Hefeweizen,449,12.0\n2103,0.085,34.0,2575,Wooden Rooster,Tripel,45,16.9\n2104,0.048,20.0,2555,Ginger Peach Saison,Saison / Farmhouse Ale,45,16.0\n2105,0.062,35.0,1736,Zombie Monkie,American Porter,45,16.0\n2106,0.055999999999999994,20.0,1196,Wild Plum Farmhouse Ale,Saison / Farmhouse Ale,45,16.0\n2107,0.05,20.0,1063,Vanilla Bean Buffalo Sweat,Oatmeal Stout,45,16.0\n2108,0.068,110.0,1017,Ethos IPA,American IPA,45,16.0\n2109,0.044000000000000004,12.0,1009,Tallgrass Pub Ale,American Brown Ale,45,16.0\n2110,0.07200000000000001,93.0,912,Oasis,Extra Special / Strong Bitter (ESB),45,16.0\n2111,0.05,20.0,765,Buffalo Sweat,Milk / Sweet Stout,45,16.0\n2112,0.05,20.0,676,Halcyon Unfiltered Wheat,American Pale Wheat Ale,45,16.0\n2113,0.052000000000000005,,595,8-Bit Pale Ale,American Pale Ale (APA),45,16.0\n2114,0.085,,537,Velvet Rooster,Tripel,45,16.0\n2115,0.05,20.0,412,Halcyon Unfiltered Wheat,American Pale Wheat Ale,45,12.0\n2116,0.05,16.0,105,Köld Lager (2010),German Pilsener,45,16.0\n2117,0.07200000000000001,93.0,104,Oasis (2010),American Double / Imperial IPA,45,16.0\n2118,0.044000000000000004,22.0,103,Tallgrass Ale,American Brown Ale,45,16.0\n2119,0.05,20.0,102,Buffalo Sweat (2010),Milk / Sweet Stout,45,16.0\n2120,0.063,60.0,101,Tallgrass IPA,American IPA,45,16.0\n2121,0.068,,1433,Hat Trick Hop IPA,American IPA,409,16.0\n2122,0.055999999999999994,,1432,Yard Sale Amber Ale,American Amber / Red Ale,409,16.0\n2123,0.055,,936,Loafin Bräu,Altbier,490,16.0\n2124,0.07,80.0,544,Old Elephant Foot IPA,American IPA,490,16.0\n2125,0.065,35.0,2640,Peck's Porter,American Porter,7,16.0\n2126,0.07,,2448,Reactor,American IPA,7,16.0\n2127,0.057,,2447,Mr. Orange,Witbier,7,16.0\n2128,0.08,22.0,2601,Deduction,Dubbel,28,12.0\n2129,0.057,,973,Face Down Brown Ale,American Brown Ale,480,12.0\n2130,0.064,,827,Tempter IPA,American IPA,480,12.0\n2131,0.055,,589,Bridal Veil Rye Pale Ale,American Pale Ale (APA),480,12.0\n2132,0.048,,2155,Smittytown,Extra Special / Strong Bitter (ESB),210,12.0\n2133,0.04,,1982,Greenwood Beach,Fruit / Vegetable Beer,210,12.0\n2134,0.066,,1939,Gatecrasher,English India Pale Ale (IPA),210,12.0\n2135,0.047,42.0,1082,RecreationAle,American Pale Ale (APA),469,12.0\n2136,0.055,35.0,2119,First Stand,Saison / Farmhouse Ale,215,12.0\n2137,0.063,23.0,2118,Battle LIne,American Brown Ale,215,12.0\n2138,0.055999999999999994,12.0,2117,Broken Bridge,Dunkelweizen,215,12.0\n2139,0.071,69.0,2116,Brutus,English India Pale Ale (IPA),215,12.0\n2140,0.06,,1916,Petit Mutant,American Wild Ale,272,16.0\n2141,0.096,,1915,The Crusher,American Double / Imperial IPA,272,16.0\n2142,0.08,,1914,Beelzebub,American Double / Imperial Stout,272,16.0\n2143,0.07,,1810,Focal Banger,American IPA,272,16.0\n2144,0.08,120.0,1111,Heady Topper,American Double / Imperial IPA,272,16.0\n2145,0.08,120.0,379,Heady Topper,American Double / Imperial IPA,272,16.0\n2146,0.046,20.0,1200,Bomber Mountain Amber Ale (2013),American Amber / Red Ale,457,12.0\n2147,0.07,75.0,1199,Indian Paintbrush IPA,American IPA,457,12.0\n2148,0.048,16.0,1198,Saddle Bronc Brown Ale (2013),English Brown Ale,457,12.0\n2149,0.059000000000000004,15.0,1197,Wagon Box Wheat Beer,American Pale Wheat Ale,457,12.0\n2150,0.05,,1945,Birdhouse Pale Ale,Belgian Pale Ale,262,12.0\n2151,0.073,,1079,Ozzy,Belgian Pale Ale,262,12.0\n2152,0.07,,94,Resurrection,Dubbel,262,12.0\n2153,0.052000000000000005,16.0,1748,Bronx Summer Pale Ale,American Pale Ale (APA),329,16.0\n2154,0.057,46.0,1747,Bronx Black Pale Ale,American Black Ale,329,16.0\n2155,0.063,50.0,1037,Bronx Pale Ale,American Pale Ale (APA),329,16.0\n2156,0.052000000000000005,35.0,2594,Surfrider,American Pale Ale (APA),33,16.0\n2157,0.055,,2035,Kolschtal Eddy,Kölsch,33,16.0\n2158,0.05,,2034,South Bay Session IPA,American IPA,33,16.0\n2159,0.069,34.0,1562,Grandma's Pecan,English Brown Ale,33,16.0\n2160,0.099,101.0,1561,Double Trunk,American Double / Imperial IPA,33,16.0\n2161,0.046,45.0,1749,Just IPA,American IPA,328,12.0\n2162,0.045,,2455,Lionshead,American Pilsner,90,12.0\n2163,,,963,Manhattan Gold Lager (1990),American Amber / Red Lager,484,12.0\n2164,0.052000000000000005,,2638,G. B. Russo’s Italian Pistachio Pale Ale,American Pale Ale (APA),9,16.0\n2165,0.057999999999999996,,1278,Northern Hawk Owl Amber,American Amber / Red Ale,438,12.0\n2166,0.059000000000000004,,1277,CEO Stout,American Stout,438,16.0\n2167,0.047,,1276,Will Power Pale Ale,American Pale Ale (APA),438,16.0\n2168,0.044000000000000004,,1732,Curious Traveler Shandy,Shandy,334,12.0\n2169,0.048,18.0,2347,Hunny Do Wheat,American Pale Wheat Ale,142,12.0\n2170,0.052000000000000005,,1781,Three Way Pale Ale,American Pale Ale (APA),142,12.0\n2171,0.040999999999999995,,1780,Rise to the Top,Cream Ale,142,12.0\n2172,0.049,,1779,Lost Trout Brown Ale,American Brown Ale,142,12.0\n2173,0.051,11.0,2421,Watermelon Ale,Fruit / Vegetable Beer,108,12.0\n2174,0.04,18.0,2319,Knotty Blonde Ale,American Blonde Ale,153,12.0\n2175,0.062,40.0,2317,Fivepine Chocolate Porter,American Porter,153,12.0\n2176,0.062,82.0,2316,Hoodoo Voodoo IPA,American IPA,153,12.0\n2177,0.053,22.0,1913,Hydraulion Red,Irish Red Ale,273,12.0\n2178,0.06,50.0,1912,40 Mile IPA,American IPA,273,12.0\n2179,0.055,64.0,2617,Citra Faced,American Pale Wheat Ale,21,16.0\n2180,0.055,31.0,2616,Pole Barn Stout,Oatmeal Stout,21,16.0\n2181,0.054000000000000006,37.0,2615,Pale,American Pale Ale (APA),21,16.0\n2182,0.053,27.0,2614,Yoshi's Nectar,California Common / Steam Beer,21,16.0\n2183,0.052000000000000005,,1889,Leatherhead Red,American Amber / Red Ale,282,12.0\n2184,0.065,,1222,Cropduster Mid-American IPA,American IPA,282,12.0\n2185,0.075,,122,Golden Frau Honey Wheat,Braggot,282,12.0\n2186,,,121,Cornstalker Dark Wheat,American Dark Wheat Ale,282,12.0\n2187,0.057999999999999996,20.0,2623,Cafe Leche,American Porter,17,16.0\n2188,0.052000000000000005,12.0,2622,Damascene Apricot Sour,Fruit / Vegetable Beer,17,16.0\n2189,0.12,90.0,2621,Csar,Russian Imperial Stout,17,16.0\n2190,0.055,,1817,Klingon Warnog Roggen Dunkel,Roggenbier,17,16.0\n2191,0.085,115.0,1449,Overlord Imperial IPA,American Double / Imperial IPA,17,16.0\n2192,0.057999999999999996,36.0,951,Alloy,American IPA,17,16.0\n2193,0.051,22.0,950,Rivet Irish Red Ale,Irish Red Ale,17,16.0\n2194,0.052000000000000005,50.0,949,3 Gear Robust Porter,American Porter,17,16.0\n2195,0.045,35.0,948,Circuit Bohemian Pilsner,Czech Pilsener,17,16.0\n2196,0.055,,2321,Turnrow Harvest Ale,American Blonde Ale,152,12.0\n2197,0.07,60.0,1755,Juke Joint IPA,American IPA,152,12.0\n2198,0.07,35.0,1754,Parade Ground Coffee Porter,American Porter,152,12.0\n2199,0.05,21.0,1428,Tin Roof Watermelon Wheat,Fruit / Vegetable Beer,152,12.0\n2200,0.045,18.0,529,Tin Roof Blonde Ale,American Blonde Ale,152,12.0\n2201,0.055,37.0,495,Voodoo Bengal Pale Ale,American Pale Ale (APA),152,12.0\n2202,0.045,28.0,494,Perfect Tin Amber,American Amber / Red Ale,152,12.0\n2203,0.073,87.0,1856,IPA & a Half,American IPA,291,12.0\n2204,0.055,33.0,736,Ornery Amber Lager (2003),Vienna Lager,291,12.0\n2205,0.05,,1027,Big Island Shandy,Shandy,474,16.0\n2206,0.068,,1026,Preservation IPA,American IPA,474,16.0\n2207,0.062,72.0,1938,Almanac IPA,American IPA,265,12.0\n2208,0.065,,1937,Milk Mustachio Stout,Milk / Sweet Stout,265,12.0\n2209,0.06,30.0,1936,Farmer's Tan Red Ale,American Amber / Red Ale,265,12.0\n2210,0.057,,594,Triangle India Pale Ale,American IPA,524,12.0\n2211,0.05,,114,Triangle White Ale,Witbier,524,12.0\n2212,0.08,,113,Triangle Belgian Golden Ale,Belgian Strong Pale Ale,524,12.0\n2213,0.08199999999999999,,2445,Troegenator,Doppelbock,97,16.0\n2214,0.075,93.0,2444,Nugget Nectar,American Amber / Red Ale,97,16.0\n2215,0.045,45.0,2203,Sunshine Pils,American Pilsner,97,12.0\n2216,0.08199999999999999,25.0,1510,Troegenator Doublebock,Doppelbock,97,16.0\n2217,0.075,85.0,1509,Perpetual IPA,American IPA,97,12.0\n2218,0.055,52.0,433,Greenville Pale Ale,American Pale Ale (APA),539,12.0\n2219,0.062,65.0,641,Hoppy Boy,American IPA,520,16.0\n2220,0.054000000000000006,26.0,2588,Cow Creek,American Amber / Red Lager,38,12.0\n2221,0.075,63.0,2458,Chupahopra,American IPA,38,12.0\n2222,0.051,19.0,2212,Twisted X,American Adjunct Lager,38,12.0\n2223,0.040999999999999995,41.0,2235,Day Hike Session,American IPA,190,12.0\n2224,0.048,48.0,1661,Trailhead ISA,American IPA,190,12.0\n2225,0.052000000000000005,27.0,1660,Immersion Amber,American Amber / Red Ale,190,12.0\n2226,0.062,70.0,1659,Evo IPA,American IPA,190,12.0\n2227,0.048,,1438,Presidential Pils,Czech Pilsener,190,12.0\n2228,0.062,70.0,1173,Evolutionary IPA (2012),American IPA,190,12.0\n2229,0.057,36.0,560,Persnickety Pale,American Pale Ale (APA),190,12.0\n2230,0.054000000000000006,20.0,519,SoDo Brown Ale,American Brown Ale,190,12.0\n2231,0.052000000000000005,27.0,518,Immersion Amber Ale (2011),American Amber / Red Ale,190,12.0\n2232,0.062,70.0,505,Evolutionary IPA (2011),American IPA,190,12.0\n2233,0.048,48.0,482,Trailhead India Style Session Ale (2011),American IPA,190,12.0\n2234,0.046,,451,Panorama Wheat Ale,American Pale Wheat Ale,190,12.0\n2235,0.063,69.0,2497,Wobble,American IPA,74,16.0\n2236,0.057999999999999996,43.0,2246,Night Cat,American Dark Wheat Ale,74,12.0\n2237,0.057999999999999996,43.0,1630,Night Cat (2014),American Dark Wheat Ale,74,12.0\n2238,0.051,17.0,1284,Dog Days Lager,Dortmunder / Export Lager,74,12.0\n2239,0.051,36.0,1121,Sidekick Extra Pale Ale,American Pale Ale (APA),74,12.0\n2240,0.077,23.0,1042,Atom Smasher,Märzen / Oktoberfest,74,12.0\n2241,0.045,,1041,Testudo,Bière de Garde,74,12.0\n2242,0.065,,1040,Hobnob B & B Pale Ale,American Pale Ale (APA),74,12.0\n2243,0.07,68.0,861,Cane and Ebel,American Strong Ale,74,12.0\n2244,0.065,,642,Outlaw IPA (2015),American IPA,74,12.0\n2245,0.045,,2037,The Gilded Age,Munich Helles Lager,243,12.0\n2246,0.05,,1285,No Limits Hefeweizen,Hefeweizen,435,16.0\n2247,0.06,,1189,Honeyspot Road White IPA,American White IPA,435,12.0\n2248,0.07200000000000001,,1171,Road 2 Ruin Double IPA,American Double / Imperial IPA,435,12.0\n2249,0.048,,1170,Workers Comp Saison,Saison / Farmhouse Ale,435,12.0\n2250,0.05,,1169,Ol' Factory Pils,German Pilsener,435,12.0\n2251,0.05,10.0,2310,PUNK'N,Pumpkin Ale,159,12.0\n2252,0.04,22.0,2100,Yard Sale Winter Lager,American Amber / Red Lager,159,12.0\n2253,0.04,42.0,1925,Trader Session IPA,American IPA,159,12.0\n2254,0.073,83.0,1723,Hop Nosh IPA,American IPA,159,12.0\n2255,0.04,17.0,1212,SUM'R,American Blonde Ale,159,12.0\n2256,0.04,32.0,1097,Organic Baba Black Lager,Schwarzbier,159,12.0\n2257,0.073,82.0,1089,Hop Notch IPA (2013),American IPA,159,12.0\n2258,0.04,34.0,1088,Cutthroat Pale Ale,American Pale Ale (APA),159,12.0\n2259,0.04,29.0,974,WYLD Extra Pale Ale,American Pale Ale (APA),159,12.0\n2260,0.055,,98,Pilsner Ukiah,German Pilsener,555,12.0\n2261,0.06,75.0,2372,The Green Room,American IPA,126,16.0\n2262,0.047,25.0,2367,Humbucker Helles,Maibock / Helles Bock,126,16.0\n2263,0.065,,1704,Uncle John's Apple Cherry Cider,Cider,338,16.0\n2264,0.065,,1703,Uncle John's Apricot Apple Cider,Cider,338,16.0\n2265,0.065,,877,Draught Hard Apple Cider,Cider,338,16.0\n2266,0.001,,606,Scotty K NA,Low Alcohol Beer,522,16.0\n2267,0.068,,543,Bacon Brown Ale,American Brown Ale,522,16.0\n2268,0.064,,347,Golden State Ale,Belgian Pale Ale,522,16.0\n2269,0.078,,346,Baltic Porter,Baltic Porter,522,16.0\n2270,0.085,,25,Siamese twin,Dubbel,522,16.0\n2271,0.085,90.0,2507,Double Duckpin,American Double / Imperial IPA,71,12.0\n2272,0.042,10.0,2506,Old Pro,Gose,71,12.0\n2273,0.055,,829,Duckpin Pale Ale,American Pale Ale (APA),71,12.0\n2274,0.06,,582,Balt Altbier,Altbier,71,12.0\n2275,0.045,50.0,2190,Campside Session IPA,American IPA,202,16.0\n2276,0.045,15.0,1951,Upland Wheat Ale,Witbier,202,16.0\n2277,0.06,,1950,Dragonfly IPA,American IPA,202,16.0\n2278,0.128,,2565,Lee Hill Series Vol. 5 - Belgian Style Quadrupel Ale,Quadrupel (Quad),51,19.2\n2279,0.10400000000000001,,2564,Lee Hill Series Vol. 4 - Manhattan Style Rye Ale,Rye Beer,51,19.2\n2280,0.068,24.0,2563,Lee Hill Series Vol. 2 - Wild Saison,American Wild Ale,51,19.2\n2281,0.099,51.0,2562,Lee Hill Series Vol. 3 - Barrel Aged Imperial Stout,American Double / Imperial Stout,51,19.2\n2282,0.076,,2561,Lee Hill Series Vol. 1 - Barrel Aged Brown Ale,American Brown Ale,51,19.2\n2283,0.06,,2560,Blood Orange Saison,Saison / Farmhouse Ale,51,12.0\n2284,0.065,33.0,1932,Thai Style White IPA,American White IPA,51,12.0\n2285,0.075,30.0,1853,Ferus Fluxus Wild Belgian Pale Ale,American Wild Ale,51,19.2\n2286,0.099,90.0,1315,Upslope Imperial India Pale Ale,American Double / Imperial IPA,51,19.2\n2287,0.08199999999999999,,907,Upslope Christmas Ale,Winter Warmer,51,16.0\n2288,0.077,,906,Upslope Pumpkin Ale,Pumpkin Ale,51,16.0\n2289,0.075,30.0,683,Upslope Belgian Style Pale Ale,Belgian Pale Ale,51,12.0\n2290,0.069,,614,Upslope Foreign Style Stout,Foreign / Export Stout,51,12.0\n2291,0.048,15.0,466,Top Rope Mexican-style Craft Lager,Vienna Lager,51,12.0\n2292,0.048,22.0,444,Upslope Craft Lager,Vienna Lager,51,12.0\n2293,0.067,,345,Upslope Brown Ale,English Brown Ale,51,12.0\n2294,0.057999999999999996,,80,Upslope Pale Ale,American Pale Ale (APA),51,12.0\n2295,0.07200000000000001,,79,Upslope India Pale Ale,American IPA,51,12.0\n2296,0.053,22.0,382,Common Sense Kentucky Common Ale,American Brown Ale,546,16.0\n2297,0.065,70.0,381,Upstate I.P.W.,American IPA,546,12.0\n2298,0.04,,1826,Squatters Full Suspension Pale Ale,American Pale Ale (APA),302,12.0\n2299,0.09,75.0,1825,Squatters Hop Rising Double IPA,American Double / Imperial IPA,302,12.0\n2300,0.08,,1824,Devastator Double Bock,Doppelbock,302,12.0\n2301,0.06,,1823,Wasatch Ghostrider White IPA,American White IPA,302,12.0\n2302,0.06,,1682,Wasatch Ghostrider White IPA (2014),American White IPA,302,12.0\n2303,0.04,,1681,Wasatch Apricot Hefeweizen,Fruit / Vegetable Beer,302,12.0\n2304,0.09,75.0,1680,Squatters Hop Rising Double IPA (2014),American Double / Imperial IPA,302,12.0\n2305,0.04,,1679,Squatters Full Suspension Pale Ale,American Pale Ale (APA),302,12.0\n2306,0.068,,2245,Nunica Pine,Cider,185,16.0\n2307,0.069,,2244,Ginger Peach,Cider,185,16.0\n2308,0.068,,1378,Totally Roasted,Cider,185,16.0\n2309,0.068,,1377,Blue Gold,Cider,185,16.0\n2310,0.068,,1376,Hard Apple,Cider,185,16.0\n2311,0.052000000000000005,,2411,Nitro Can Coffee Stout,American Stout,113,12.0\n2312,0.092,25.0,1770,Voodoo Love Child,Tripel,322,12.0\n2313,0.079,23.0,1769,White Magick of the Sun,Witbier,322,12.0\n2314,0.075,31.0,1730,Wynona's Big Brown Ale,American Brown Ale,322,12.0\n2315,0.092,25.0,1729,Gran Met,Belgian Strong Pale Ale,322,12.0\n2316,0.073,85.0,1603,Good Vibes IPA,American IPA,322,12.0\n2317,0.075,85.0,1488,Pilzilla,American Double / Imperial Pilsner,322,12.0\n2318,0.04,37.0,1846,Wachusett Light IPA,American IPA,295,12.0\n2319,0.06,55.0,1845,Green Monsta IPA,American IPA,295,12.0\n2320,0.055999999999999994,50.0,1844,Wachusett IPA,American IPA,295,12.0\n2321,0.047,,1843,Strawberry White,Witbier,295,12.0\n2322,0.085,85.0,1418,Larry Imperial IPA,American Double / Imperial IPA,295,12.0\n2323,0.047,,1038,Wachusett Summer,American Pale Wheat Ale,295,12.0\n2324,0.051,17.0,1030,Country Pale Ale,English Pale Ale,295,12.0\n2325,0.04,37.0,1029,Wachusett Light IPA (2013),American IPA,295,12.0\n2326,0.052000000000000005,20.0,908,Pumpkan,Pumpkin Ale,295,12.0\n2327,0.045,10.0,619,Wachusett Blueberry Ale,Fruit / Vegetable Beer,295,12.0\n2328,0.06,55.0,618,Green Monsta IPA,American IPA,295,12.0\n2329,0.047,,780,T-6 Red Ale (2004),American Amber / Red Ale,506,12.0\n2330,0.052000000000000005,67.0,2450,Self Starter,American IPA,94,16.0\n2331,0.054000000000000006,20.0,2223,Ermal's,Cream Ale,94,16.0\n2332,0.07,,2222,10 Ton,Oatmeal Stout,94,16.0\n2333,0.07,,2221,Flyin' Rye,American IPA,94,16.0\n2334,0.09,,2439,Christmas Ale,Herbed / Spiced Beer,100,12.0\n2335,0.07,,2356,Pay It Forward Cocoa Porter,American Porter,100,12.0\n2336,0.055,,1069,West Sixth Amber Ale,American Amber / Red Ale,100,12.0\n2337,,,652,West Sixth IPA,American IPA,100,12.0\n2338,0.055,,1542,One Claw,American Pale Ale (APA),384,12.0\n2339,0.04,5.0,1312,Westbrook Gose,Gose,384,12.0\n2340,0.05,16.0,576,White Thai,Witbier,384,12.0\n2341,0.068,65.0,575,Westbrook IPA,American IPA,384,12.0\n2342,0.057,22.0,1645,Westfield Octoberfest,Märzen / Oktoberfest,351,12.0\n2343,0.052000000000000005,,1551,Pop's Old Fashioned Lager,American Amber / Red Lager,351,12.0\n2344,0.057999999999999996,55.0,1550,Charlie in the Rye,American IPA,351,12.0\n2345,,,2364,Royal Lager,American Pale Lager,132,16.0\n2346,0.08,,2348,Rip Van Winkle (Current),Bock,132,12.0\n2347,,,2344,O’Malley’s Stout,English Stout,132,12.0\n2348,0.075,89.0,2343,O’Malley’s IPA,American IPA,132,12.0\n2349,,,2342,O’Malley’s Irish Style Cream Ale,Cream Ale,132,12.0\n2350,0.049,28.0,2341,L'il Lucy's Hot Pepper Ale,Chile Beer,132,12.0\n2351,0.052000000000000005,,2340,Drop Kick Ale,American Amber / Red Ale,132,12.0\n2352,0.055,,2573,Raspberry Berliner Weisse,Berliner Weissbier,47,12.0\n2353,0.05,,2572,Hop Session,American IPA,47,12.0\n2354,0.055,,2571,Blueberry Berliner Weisse,Berliner Weissbier,47,12.0\n2355,0.055,,2570,Berliner Weisse,Berliner Weissbier,47,12.0\n2356,0.06,,1498,Super G IPA,American IPA,396,16.0\n2357,0.049,30.0,1838,Hefe Lemon,Radler,296,12.0\n2358,0.049,30.0,1837,Hefe Black,Hefeweizen,296,12.0\n2359,0.049,30.0,1836,Widmer Brothers Hefeweizen,Hefeweizen,296,12.0\n2360,0.08199999999999999,100.0,1619,Hop Slayer Double IPA,American Double / Imperial IPA,361,12.0\n2361,0.045,,1618,Pumpkin Ale,Pumpkin Ale,361,12.0\n2362,0.05,,1364,Big Bowl Blonde Ale,American Brown Ale,361,12.0\n2363,0.052000000000000005,27.0,971,Phat Chance,American Blonde Ale,361,12.0\n2364,0.08199999999999999,100.0,740,Hop Slayer Double IPA (2011),American Double / Imperial IPA,361,12.0\n2365,0.08199999999999999,100.0,430,Hop Slayer Double IPA (2011),American Double / Imperial IPA,361,12.0\n2366,0.042,13.0,398,Wild Onion Summer Wit,Witbier,361,12.0\n2367,0.06,23.0,366,Jack Stout,Oatmeal Stout,361,12.0\n2368,0.045,,334,Wild Onion Pumpkin Ale (2010),Pumpkin Ale,361,12.0\n2369,0.055999999999999994,41.0,162,Paddy Pale Ale,American Pale Ale (APA),361,12.0\n2370,0.068,21.0,2253,Blonde Hunny,Belgian Pale Ale,181,12.0\n2371,0.057,20.0,1318,Wild Wolf Wee Heavy Scottish Style Ale,Scotch Ale / Wee Heavy,181,12.0\n2372,0.045,25.0,1195,Wild Wolf American Pilsner,American Pilsner,181,12.0\n2373,0.051,45.0,1194,Alpha Ale,American Pale Ale (APA),181,12.0\n2374,0.054000000000000006,,826,Mystical Stout,Irish Dry Stout,499,16.0\n2375,0.075,,825,Bodacious Bock,Bock,499,16.0\n2376,0.05,,813,Ambitious Lager,Munich Helles Lager,499,16.0\n2377,0.07200000000000001,,324,Wyoming Pale Ale,American Pale Ale (APA),550,16.0\n2378,0.05,,323,Wind River Blonde Ale,American Blonde Ale,550,16.0\n2379,0.07400000000000001,83.0,762,Ace IPA,American IPA,509,16.0\n2380,0.08,31.0,761,P-51 Porter,American Porter,509,16.0\n2381,0.055,,2149,#001 Golden Amber Lager,American Amber / Red Lager,211,12.0\n2382,0.071,60.0,2148,#002 American I.P.A.,American IPA,211,12.0\n2383,0.052000000000000005,,2147,#003 Brown & Robust Porter,American Porter,211,12.0\n2384,0.048,38.0,2146,#004 Session I.P.A.,American IPA,211,12.0\n2385,0.059000000000000004,,2047,Tarasque,Saison / Farmhouse Ale,239,12.0\n2386,0.062,61.0,1470,Ananda India Pale Ale,American IPA,239,12.0\n2387,0.045,23.0,1469,Tiny Bomb,American Pilsner,239,12.0\n2388,0.057999999999999996,72.0,2627,Train Hopper,American IPA,14,12.0\n2389,0.045,,2626,Edward’s Portly Brown,American Brown Ale,14,12.0\n2390,0.059000000000000004,135.0,1676,Troopers Alley IPA,American IPA,344,12.0\n2391,0.047,15.0,1468,Wolverine Premium Lager,American Pale Lager,402,12.0\n2392,0.05,,822,Woodchuck Amber Hard Cider,Cider,501,12.0\n2393,0.065,82.0,2417,4000 Footer IPA,American IPA,109,12.0\n2394,0.027999999999999997,15.0,2306,Summer Brew,American Pilsner,109,12.0\n2395,0.065,69.0,1697,Be Hoppy IPA,American IPA,339,16.0\n2396,0.069,69.0,2194,Worthy IPA,American IPA,199,12.0\n2397,0.045,25.0,1514,Easy Day Kolsch,Kölsch,199,12.0\n2398,0.077,30.0,1513,Lights Out Vanilla Cream Extra Stout,American Double / Imperial IPA,199,12.0\n2399,0.069,69.0,1512,Worthy IPA (2013),American IPA,199,12.0\n2400,0.06,50.0,1511,Worthy Pale,American Pale Ale (APA),199,12.0\n2401,0.042,,1345,Patty's Chile Beer,Chile Beer,424,12.0\n2402,0.08199999999999999,,1316,Colorojo Imperial Red Ale,American Strong Ale,424,12.0\n2403,0.055,,1045,Wynkoop Pumpkin Ale,Pumpkin Ale,424,12.0\n2404,0.075,,1035,Rocky Mountain Oyster Stout,American Stout,424,12.0\n2405,0.067,45.0,928,Belgorado,Belgian IPA,424,12.0\n2406,0.052000000000000005,,807,Rail Yard Ale,American Amber / Red Ale,424,12.0\n2407,0.055,,620,B3K Black Lager,Schwarzbier,424,12.0\n2408,0.055,40.0,145,Silverback Pale Ale,American Pale Ale (APA),424,12.0\n2409,0.052000000000000005,,84,Rail Yard Ale (2009),American Amber / Red Ale,424,12.0\n"
  },
  {
    "path": "plugins/riot/src/test/resources/files/es_test-index.json",
    "content": "[\n\t{\n\t\t\"_index\": \"test-index\",\n\t\t\"_type\": \"docs\",\n\t\t\"_id\": \"doc1\",\n\t\t\"_score\": 1,\n\t\t\"_source\": {\n\t\t\t\"name\": \"ruan\",\n\t\t\t\"age\": 30,\n\t\t\t\"articles\": [\n\t\t\t\t\"1\",\n\t\t\t\t\"3\"\n\t\t\t]\n\t\t}\n\t},\n\t{\n\t\t\"_index\": \"test-index\",\n\t\t\"_type\": \"docs\",\n\t\t\"_id\": \"doc2\",\n\t\t\"_score\": 1,\n\t\t\"_source\": {\n\t\t\t\"name\": \"stefan\",\n\t\t\t\"age\": 29,\n\t\t\t\"articles\": [\n\t\t\t\t\"2\"\n\t\t\t]\n\t\t}\n\t}\n]"
  },
  {
    "path": "plugins/riot/src/test/resources/files/lacity.csv",
    "content": "Id,Title,Event Start Date,Event End Date,Event type,Event Department,Information Website,Event Location Name,Event Location,Event Reference URL,Contact Name,Contact Phone,Contact E-mail,Description,tags,Fee Required,Event Cost,Event Main Image,Ages,Event Audience,Event File\n303256,Board of Public Works Agenda,04/20/2018 10:00:00 AM,04/20/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86120409_04202018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-403,,,,,,false,,,,,\n281301,Board of Public Works Agenda,03/07/2018 10:00:00 AM,03/07/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86119079_03072018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-359,,,,,,false,,,,,\n358141,Office of Community Beautification - LAFH Community Clean-Up (Day St),08/17/2018 10:00:00 AM,08/17/2018 11:00:00 AM,Culture & Community,Office of Community Beautification,OCB (http://dpw.lacity.org/office-community-beautification),LA Family Housing,\"7639 7653 Day St\nLos Angeles, CA 91042\n(34.254574, -118.299489)\",https://calendar.lacity.org/event/office-community-beautification-lafh-community-clean-day-st,Leslie Shim,213-978-0227,leslie.shim@lacity.org,,,false,,,All,,\n343491,Board of Public Works Agenda,07/16/2018 10:00:00 AM,07/16/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86122881_07162018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-488,,,,,,false,,,,,\n239091,44th Annual Dia De Los Muertos Celebration,11/04/2017 05:00:00 PM,11/04/2017 11:00:00 PM,Arts,Cultural Affairs,http://culturela.org/event/self-help-graphics-arts-44th-annual-dia-de-los-muertos-celebration-2/,Felicitas and Gonzalo Mendez High School,\"1200 Plaza\nDel Sol Los Angeles, CA 90033\",https://calendar.lacity.org/event/44th-annual-dia-de-los-muertos-celebration,Self-Help Graphics,323-881-6444,INFO@SELFHELPGRAPHICS.COM,\"<p>This year's Dia De Los Muertos celebration marks the 44th Anniversary of Self Help Graphics and Art's production ine of the most popular cultural events in Los Angeles; which we believe is the oldest DayoftheDead commemoration in the country!</p><p>Featured Local Food, Arts & Crafts Vendors.Come dressed in your best Calaca attire!</p>\",,false,,https://calendar.lacity.org/sites/g/files/wph721/f/2017DiadelosmuertosPromo01.jpg,\"Adult, Young Adult\",,\n236021,Los Angeles Convention Center - Ski Dazzle 2017,11/18/2017 11:00:00 AM,11/18/2017 10:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,Ski Dazzle (http://www.skidazzle.com/show-buy-tickets.htm),Los Angeles Convention Center,\"1201 S Figueroa St\nKentia Hall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-ski-dazzle-2017-0,,,,\"<p>54th Annual presentation of North America’s Largest Consumer Ski & Snowboard Show & Sale</p><p>The Los Angeles Ski Show & Snowboard Expo® features 4 Football Fields of Resorts, Lodging, Accessories and Retail bargains up to 70% off.  Ski Dazzle® has informative seminars, prizes, entertainment, lessons and more!  The Show truly is “A World of Skiing & Snowboarding Under One Roof™”</p>\",,true,,,,,\n336016,Los Angeles Convention Center - 2018 ASCA Annual Conference,07/15/2018 08:00:00 AM,07/15/2018 05:00:00 PM,General Events,Convention Center,ASCA (https://www.ascaconferences.org/),Los Angeles Convention Center,\"1201 S Figueroa St West\nHall A & Concourse EF Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-2018-asca-annual-conference-0,,,,,,true,Registration: $250 - $619 / Paid parking available on site.,,,,\n264596,LAPD Hollywood's Battle of the Badges Blood Drive,01/23/2018 09:00:00 AM,01/23/2018 03:00:00 PM,\"General Events, Family Activity\",\"Council District 13, Police\",American Red Cross/ LAPD Blood Drive (http://redcrossblood.org),LAPD Hollywood Division/ American Red Cross,\"6501 Fountain Avenue\nLos Angeles, CA 90028\n(34.094335, -118.33091)\",https://calendar.lacity.org/event/lapd-hollywoods-battle-badges-blood-drive,Sgt. Darrell Davis,323-871-4068,32256@lapd.lacity.org,\"<p>Be a HERO! Donate and Save UP to 3 Lives! Join LAPD Hollywood Division in their Battle of the Badges Blood Drive on Tuesday, January 23, 2018 from 9:00 am-3:00pm located in their community room at 6502 Fountain Avenue. </p>\",,false,,https://calendar.lacity.org/sites/g/files/wph721/f/LAPD%20Hollywood%20Blood%20Drive%202018_0.JPG,,,https://calendar.lacity.org/sites/g/files/wph721/f/LAPD%20Hollywood%20Blood%20Drive%202018.JPG\n308261,Board of Public Works Agenda,05/04/2018 10:00:00 AM,05/04/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86120801_05042018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-415,,,,,,false,,,,,\n299571,Office of Community Beautification - Castle Heights Elementary,04/14/2018 08:00:00 AM,04/14/2018 10:00:00 AM,Culture & Community,Office of Community Beautification,,Castle Heights Elementary,\"9755 Cattaraugus Avenue\nLos Angeles, CA 90034\n(34.037407, -118.398599)\",https://calendar.lacity.org/event/office-community-beautification-castle-heights-elementary-3,Anna Ruiz,213-978-0231,Anna.Ruiz@lacity.org,,,false,,,,,\n301021,Office of Community Beautification - Kiwanis One Day of Service Clean-Up,04/14/2018 09:00:00 AM,04/14/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,OCB (http://dpw.lacity.org/office-community-beautification),Highland Park Kiwanis,,http://calendar.lacity.org/event/office-community-beautification-kiwanis-one-day-service-clean,Leslie Shim,,leslie.shim@lacity.org,,Culture and Community,false,,,All,,\n366981,Office of Community Beautification - Crenshaw Valley YMCA,09/15/2018 10:00:00 AM,09/15/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://www.laocb.org),Crenshaw Family YMCA,\"3820 Santa Rosalia Drive\nLos Angeles, CA 90008\n(34.010767, -118.340108)\",https://calendar.lacity.org/event/office-community-beautification-crenshaw-valley-ymca,Anna Ruiz,,Anna.Ruiz@lacity.org,,,false,,,,,\n1,Initial test event to showcase dataset.,05/28/2016 08:00:00 AM,05/28/2016 09:30:00 AM,,,https://www.lacitysan.org/san/sandocview?docname=CNT010646,,,,,,,<p>Free bulky item drop off for City of Los Angeles residents.</p>,,,,,,,\n274941,Craft in America: The Concert,02/11/2018 11:00:00 AM,02/11/2018 05:00:00 PM,\"Culture & Community, Family Activity\",El Pueblo,,Plaza Kiosko at El Pueblo Historical Monument,\"125 Paseo de la Plaza\nLos Angeles, CA 90012\n(34.055708, -118.239458)\",http://calendar.lacity.org/event/craft-america-concert,,,,\"<p>Enjoy a free, co-sponsored festival of music celebrating Craft in America’s 10th Anniversary on PBS. For more information, please see the attached flyers for each event.</p>\",,false,,,All,Residents,http://calendar.lacity.org/sites/g/files/wph721/f/Craft%20in%20America%20The%20Concert.jpg\n358786,Board of Public Works Agenda,08/20/2018 10:00:00 AM,08/20/2018 10:00:00 AM,City Government,Board of Public Works,,,,http://calendar.lacity.org/event/board-public-works-agenda-526,,,,,,false,,,,,\n303286,Office of Community Beautification - IDEPSCA: Earth Day Clean-Up,04/20/2018 09:00:00 AM,04/20/2018 10:30:00 AM,Culture & Community,Office of Community Beautification,OCB (http://dpw.lacity.org/office-community-beautification),IDEPSCA,,https://calendar.lacity.org/event/office-community-beautification-idepsca-earth-day-clean,Leslie Shim,213-842-0149,leslie.shim@lacity.org,,,false,,,All,,\n271121,Office of Community Beautification ~ Gratts Garden ,01/20/2018 08:00:00 AM,01/20/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),,\"309 S Lucas Ave\nLos Angeles, CA 90031\n(34.057929, -118.261863)\",https://calendar.lacity.org/event/office-community-beautification-gratts-garden,Ana Huizar,213-978-0224,ana.huizar@lacity.org,,Culture and Community,false,,,All,,\n283076,Board of Public Works Agenda,03/12/2018 10:00:00 AM,03/12/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86119265_03122018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-365,,,,,,false,,,,,\n265351,Los Angeles Convention Center - LA Art Show,01/11/2018 11:00:00 AM,01/11/2018 07:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,LA Art Show (https://www.laartshow.com/),Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-la-art-show-2,,,,,,true,\"$25 - $250, plus on-line service fees. See LA Art Show website for details. / Paid on-site parking available.\",,,,\n277631,Los Angeles Convention Center - The Legendary Unlimited Break Talent Show,02/25/2018 12:00:00 PM,02/25/2018 05:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,The Legendary Unlimited Break Talent Show (http://www.roweentertainment.com/event/the-legendary-unlimited-break-talent-show-4/),Los Angeles Convention Center,\"1201 S Figueroa St Theater\nLos Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-legendary-unlimited-break-talent-show,,,,,,true,$15 admission for advance purchase / $20 admission at the door / Paid parking available on site.,,,,\n237101,Board of Public Works Agenda,11/01/2017 10:00:00 AM,11/01/2017 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86116056_11012017.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-233,,,,,,false,,,,,\n248186,Los Angeles Convention Center - LA Auto Show 2017,12/05/2017 09:00:00 AM,12/05/2017 09:00:00 PM,Shows & Conventions,Convention Center,LA Auto Show Tickets (https://laautoshow.com/tickets/#general-admission),Los Angeles Convention Center,\"1201 S Figueroa St\nLos Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-la-auto-show-2017-3,,,,\"<p>Whether you’re in-market for a new vehicle or planning for the future, the LA Auto Show is your one-stop-shop for comparison shopping cars, trucks, SUVs, electric vehicles and concepts. Hassle-free, stress-free, and about 1,000 vehicles to choose from.  Outside the LA Convention Center, attendees can enjoy pressure-free test drives of nearly 100 of the latest models.  ”The Garage\"\" - accessible via South Hall Atrium’s escalators - is one of the world's largest and most eclectic collections of renowned tuners, customizers, aftermarket goods and exotics.  While the adults shop, there is plenty for the kids to experience. From video games, virtual reality demos, and kids’ play zones, there is plenty to keep them entertained. Tickets for children ages 6-12 are $5 and children under 6 are free with a paying adult.</p>\",,true,Child (6-12): $5; Adult (13-64): $15; Senior (65+): $10 / Paid parking available.,,,,\n314131,Build Your Cat a Castle!,06/25/2018 03:30:00 PM,06/25/2018 05:00:00 PM,Family Activity,\"Library, Los Angeles Public\",http://www.lapl.org/whats-on/events/build-your-cat-castle,Palms - Rancho Park Branch Library,\"2920 Overland Avenue\nLos Angeles, CA 90064\n(34.033697, -118.418555)\",http://calendar.lacity.org/event/build-your-cat-castle,,,,\"<p>Have you ever wanted to make a castle for your cat?  Using recycled materials such as cardboard boxes, you can create a unique luxury cat castle for your furry friend. Program is based on the book, \"\"Cat Castles\"\" by Carin Oliver. </p><p>This a family activity and requires adult help in constructing and building the castles.  Program is for children (ages 7 and older), teens and adults.  Program is limited to 20 participants and advanced registration is required.  Please email Michele Robinson at <a href=\"\"mailto:mrobins@lapl.org\"\">mrobins@lapl.org</a> to reserve your spot.</p>\",,false,,,\"Adult, Child, Teenager\",,\n273876,Office of Community Beautification ~ Mt. Washington Cleanup,01/27/2018 08:00:00 AM,01/27/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),,\"234 Museum Dr\nLos Angeles, CA 90065\n(34.099582, -118.206496)\",https://calendar.lacity.org/event/office-community-beautification-mt-washington-cleanup,Ana Huizar,213-978-0224,ana.huizar@lacity.org,,Culture and Community,false,,,All,,\n353411,Board of Public Works Agenda,08/06/2018 10:00:00 AM,08/06/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86123365_08062018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-512,,,,,,false,,,,,\n294726,Los Angeles Convention Center - Boutique Design West,04/04/2018 10:00:00 AM,04/04/2018 05:00:00 PM,General Events,Convention Center,Boutique Design West (https://www.boutiquedesignwest.com/),Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-boutique-design-west,,,,\"<p>The BDwest trade fair and conference serves the hospitality design industry with two days of exhibits, educational sessions and social events in the development hotspot of Downtown L.A. In addition to 300+ manufacturers/marketers of exceptional design elements for hospitality interiors, the program features accredited seminars, intimate Q&As and interactive discussions with industry vanguards, along with unique, design-focused social events.</p>\",,true,$75 - $475 (go to www.boutiquedesignwest.com for details) / paid parking available (South Hall parking garage),,,,\n359866,Board of Public Works Agenda,08/24/2018 10:00:00 AM,08/24/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86123896_08242018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-528,,,,,,false,,,,,\n250176,Board of Public Works Agenda,11/29/2017 10:00:00 AM,11/29/2017 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86116755_11292017.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-264,,,,,,false,,,,,\n276851,Los Angeles Convention Center - Perform Better's Learn-by-Doing Seminar,02/10/2018 08:00:00 AM,02/10/2018 04:00:00 PM,General Events,Convention Center,Perform Better's Learn-by-Doing Seminar (http://www.performbetter.com/One-Day-Learn-By-Doing-in-Los-Angeles-CA),Los Angeles Convention Center,\"403 404\nLos Angeles, CA 90015\",https://calendar.lacity.org/event/los-angeles-convention-center-perform-betters-learn-doing-seminar,,,,,,true,$179 at the door / Paid parking available on site.,,,,\n292751,Office of Community Beautification ~ Farm LA,03/24/2018 10:00:00 AM,03/24/2018 02:00:00 PM,Culture & Community,Office of Community Beautification,,Farm LA,\"2833 Rosanna Street\nLos Angeles, CA 90039\n(34.105408, -118.248696)\",https://calendar.lacity.org/event/office-community-beautification-farm-la,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,\n281376,Los Angeles Convention Center - Classic Auto Show,03/04/2018 10:00:00 AM,03/04/2018 06:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,Classic Auto Show (https://www.theclassicautoshow.com/tickets),Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-classic-auto-show-3,,,,\"<p>The Classic Auto Show, March 2-4, 2018 is the largest 3-day indoor classic car show in the U.S.  It’s where the entire classic car community comes together for a celebration of all things on wheels.  Whether you are a collector, or, working on your project car, or, simply share a passion for the classics – this event is for you.  You’ll see the cars you love, rub shoulders with your favorite auto celebrities, view LIVE restoration and auto detailing demos, and shop a vendor marketplace showcasing memorabilia, and the parts, products, and services you need to restore and care for your cars.</p><p>The show will exhibit over 1,000 classics on TWO floors of the LA Convention Center including the rarely seen, museum quality classics displayed on the prominent Grand Boulevard, celebrity builds, and hundreds of classics from local car clubs representing all the Domestic and Foreign marques you love.   NEW! exhibit areas for 2018 will include:  Hot Rods, Lowriders, Japanese Classics, Vintage Off Roaders, Porsche, Women Builds, and Motorcycles.</p>\",,true,$25 - $200 See Classic Auto website for details. / Paid parking available on site.,,,,\n253411,Board of Public Works Agenda,12/04/2017 10:00:00 AM,12/04/2017 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86116902_12042017.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-272,,,,,,false,,,,,\n247746,Victorian Christmas House Tour,12/03/2017 01:00:00 PM,12/03/2017 04:00:00 PM,\"Tours, Holiday & Seasonal, Family Activity\",Cultural Affairs,http://griermussermuseum.org,Grier Musser Museum,\"403 South Bonnie Brae St\nLos Angeles, CA 90057\n(34.060869, -118.270839)\",https://calendar.lacity.org/event/victorian-christmas-house-tour,,213-413-1814,,\"<p>The Grier Musser Museum will host its annual Christmas party in a festive Victorian, turn-of-the-century restored setting. There will be guided tours and refreshments.</p><p>Please call 213-413-1814 for reservation.</p>\",,true,\"Cost $12.00 per person, $6.00 per child\",https://calendar.lacity.org/sites/g/files/wph721/f/tree_ani.gif,All,,\n306396,Office of Community Beautification ~ Valley Glen Clean Team Cleanup,04/28/2018 08:00:00 AM,04/28/2018 11:00:00 AM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),,\"Delano Street Valley Glen, CA 91401\n(34.1775, -118.432777)\",https://calendar.lacity.org/event/office-community-beautification-valley-glen-clean-team-cleanup-4,Ana Huizar,213-978-0224,ana.huizar@lacity.org,,Culture and Community,false,,,All,,\n279346,Office of Community Beautification ~ The New 9th Community Clean-Up,02/24/2018 09:00:00 AM,02/24/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Dolores Huerta Elementary School,\"260 East 31st Street\nLos Angeles, CA 90011\n(34.019999, -118.268833)\",https://calendar.lacity.org/event/office-community-beautification-new-9th-community-clean,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,https://calendar.lacity.org/sites/g/files/wph721/f/2-24-18-%20Coucil%20District%209%20Community%20Clean%20UP%20-February%2024th.pdf\n279201,Board of Public Works Agenda,02/23/2018 10:00:00 AM,02/23/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86118830_02232018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-346,,,,,,false,,,,,\n230361,Office of Community Beautification - WLASNC - University High School,11/18/2017 08:00:00 AM,11/18/2017 12:00:00 PM,Culture & Community,Office of Community Beautification,,University High School,\"11800 Texas Avenue\nLos Angeles, CA 90025\n(34.046468, -118.460175)\",https://calendar.lacity.org/event/office-community-beautification-wlasnc-university-high-school,Anna Ruiz,213-978-0231,Anna.Ruiz@lacity.org,,,false,,,,,\n281371,Los Angeles Convention Center - Classic Auto Show,03/03/2018 10:00:00 AM,03/03/2018 08:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,Classic Auto Show (https://www.theclassicautoshow.com/tickets),Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-classic-auto-show-2,,,,\"<p>The Classic Auto Show, March 2-4, 2018 is the largest 3-day indoor classic car show in the U.S.  It’s where the entire classic car community comes together for a celebration of all things on wheels.  Whether you are a collector, or, working on your project car, or, simply share a passion for the classics – this event is for you.  You’ll see the cars you love, rub shoulders with your favorite auto celebrities, view LIVE restoration and auto detailing demos, and shop a vendor marketplace showcasing memorabilia, and the parts, products, and services you need to restore and care for your cars.</p><p>The show will exhibit over 1,000 classics on TWO floors of the LA Convention Center including the rarely seen, museum quality classics displayed on the prominent Grand Boulevard, celebrity builds, and hundreds of classics from local car clubs representing all the Domestic and Foreign marques you love.   NEW! exhibit areas for 2018 will include:  Hot Rods, Lowriders, Japanese Classics, Vintage Off Roaders, Porsche, Women Builds, and Motorcycles.</p>\",,true,$25 - $200 See Classic Auto website for details. / Paid parking available on site.,,,,\n326721,Board of Public Works Agenda,06/22/2018 10:00:00 AM,06/22/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86122296_06222018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-468,,,,,,false,,,,,\n274016,Office of Community Beautification - Nora Sterry Elementary School,01/27/2018 08:00:00 AM,01/27/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,,Nora Sterry Elementary School,\"1730 Corinth Avenue\nLos Angeles, CA 90025\n(34.044057, -118.44777)\",https://calendar.lacity.org/event/office-community-beautification-nora-sterry-elementary-school,Anna Ruiz,213-978-0231,Anna.Ruiz@lacity.org,,,false,,,,,\n361291,Office of Community Beautification ~ Collins & Katz Family YMCA ~ University High School ,09/15/2018 08:30:00 AM,09/15/2018 11:30:00 AM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Collins & Katz Family YMCA,\"1466 South Westgate Avenue\nLos Angeles, CA 90025\n(34.043363, -118.460043)\",https://calendar.lacity.org/event/office-community-beautification-collins-katz-family-ymca-university-high-school,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,https://calendar.lacity.org/sites/g/files/wph721/f/2018_Volunteerism_NationalCleanUpDay_EditableFlyer_English%20%281%29%20%28003%29.pdf\n275871,\"Office of Community Beautification ~ The New 9th Councilmember Curren D. Price, JR.\",04/21/2018 09:00:00 AM,04/21/2018 01:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Pueblo Rio Housing Development,\"1801 East 53rd Street\nLos Angeles, CA 90058\n(33.994633, -118.241127)\",https://calendar.lacity.org/event/office-community-beautification-new-9th-councilmember-curren-d-price-jr,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,\n302881,Board of Public Works Official Notice,04/16/2018 10:00:00 AM,04/16/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86120261_04162018.htm,,,http://calendar.lacity.org/event/board-public-works-official-notice-41,,,,,,false,,,,,\n266366,Councilmember in Your Corner Atwater Village,01/27/2018 09:30:00 AM,01/27/2018 12:00:00 PM,General Events,Council District 13,,Fosters Freeze,\"2760 Fletcher Drive\nLos Angeles, CA 90039\n(34.111205, -118.250382)\",https://calendar.lacity.org/event/councilmember-your-corner-atwater-village,Sylvan De La Cruz,213-207-3015,sylvan.delacruz@lacity.org,\"<p>My next Councilmember in Your Corner event will take place on Saturday, January 27, 9:30 a.m. to 12 p.m.,  at Fosters Freeze, 2760 Fletcher Dr, Los Angeles, 90039.  The Council District 13 Clean Team will be on hand, as well as neighborhood volunteers, who will help spruce up the area near Carillon Street and Casitas Avenue. Please join us!</p>\",\"Mitch O'Farrell, Community Walk, Atwater Village\",false,,https://calendar.lacity.org/sites/g/files/wph721/f/CYC%20-%20Atwater%20Village%20Jan%202018_0.jpg,,,https://calendar.lacity.org/sites/g/files/wph721/f/CYC%20-%20Atwater%20Village%20Jan%202018.jpg\n324216,Los Angeles Convention Center - Summer Fashion Show Presented by The Model Experience,06/30/2018 11:00:00 AM,06/30/2018 09:30:00 PM,\"General Events, Shows & Conventions\",Convention Center,The Model Experience (https://www.themodelexperience.net/),Los Angeles Convention Center,\"1201 S Figueroa St\nLos Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-summer-fashion-show-presented-model-experience,,,,\"<p>Come and enjoy back to back Fashion Shows. This event will showcase some of the hottest emerging brands, designers, and models. This is an all ages event. This pass gives you access to all 5 shows we are hosting this day. The pass includes front row seating and 1 drink voucher. This is a Red Carpet Event so let&#39;s dress to impress. </p>\",,true,\"$39.50, plus processing fee / Paid parking available in West Hall parking garage.\",,,,\n240731,11/13/17 Army Corps Flood Awareness Public Meeting,11/13/2017 06:00:00 PM,11/13/2017 08:00:00 PM,\"City Government, Environment\",Council District 13,11/13/17 Army Corps Flood Awareness Public Meeting (http://www.lariver.org),Friendship Auditorium,\"3201 Riverside Dr\nLos Angeles, CA 90027\n(34.113664, -118.268957)\",https://calendar.lacity.org/event/111317-army-corps-flood-awareness-public-meeting,\"Asset Management Division, Operation and Maintenance Branch\",(213) 452-3294,AMoperations.Branch@usace.army.mil,\"The U.S. Army Corps of Engineers, Los Angeles District, will hold a public workshop on November 13th, 2017 to discuss the Corps’ flood risk management activities, existing flood risk, access and use and other topics that are relevant to the Los Angeles River within the area referred to as “Glendale Narrows.” The Corps will host several stations with displays where the public can ask questions and receive information from subject matter experts.Station Topics:• Flood risk management strategies specific to the Los Angeles River• Non-native vegetation removal activities and processes• Hydraulic conditions in the river, including barrier function• General Los Angeles County Drainage Area Operations and Maintenance program, budgeting, and schedule• River access• Trash and debris removal volunteer opportunities• Corps 101\",,false,,https://calendar.lacity.org/sites/g/files/wph721/f/US%20Army%20Corps%20Public%20Workshop%202017-page-001_0.jpg,,,https://calendar.lacity.org/sites/g/files/wph721/f/US%20Army%20Corps%20Public%20Workshop%202017.pdf\n363456,Los Angeles Convention Center - Cannabis World Congress & Business Expo,09/28/2018 08:00:00 AM,09/28/2018 06:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,Cannabis World Congress & Business Expo (https://www.cwcbexpo.com/los-angeles/2018/attend),Los Angeles Convention Center,\"1201 S Figueroa St\nLos Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-cannabis-world-congress-business-expo-4,,,,,,true,\"Registration fees range from $85 - $1,000. See website for details. Paid parking available on site.\",,,,\n282976,Los Angeles Convention Center - LA Marathon Health & Fitness Expo,03/17/2018 09:00:00 AM,03/17/2018 05:00:00 PM,General Events,Convention Center,,Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-la-marathon-health-fitness-expo-0,,,,\"<p>The Health & Fitness Expo hosts over 120 exhibitors featuring brand-new running gear and shoes, as well as the latest developments in sports, fitness, and nutrition.  In addition, the Expo is the home of Participant Packet Pick-Up for all marathon runners.</p>\",,true,free admission / paid parking available on site,,,,\n253421,Office of Community Beautification - Ballona Creek Fall Cleanup,12/09/2017 09:00:00 AM,12/09/2017 12:00:00 PM,Culture & Community,Office of Community Beautification,Ballona Creek Renaissance (http://www.ballonacreek.org),Ballona Creek Renaissance,\"90 Marina Fwy\nLos Angeles, CA 90066\",https://calendar.lacity.org/event/office-community-beautification-ballona-creek-fall-cleanup,Anna Ruiz,213-978-0231,Anna.Ruiz@lacity.org,,,false,,,,,\n365071,Office of Community Beautification - Hillcrest Drive Elementary School,09/15/2018 10:00:00 AM,09/15/2018 02:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://www.laocb.org),Hillcrest Drive Elementary,\"4041 Hillcrest Drive\nLos Angeles, CA 90008\n(34.013195, -118.347182)\",https://calendar.lacity.org/event/office-community-beautification-hillcrest-drive-elementary-school,Anna Ruiz,,Anna.Ruiz@lacity.org,,,false,,,,,\n229876,\"Los Angeles Convention Center - American Cancer Society, Making Strides Breast Cancer Walk\",10/21/2017 08:00:00 AM,10/21/2017 08:00:00 AM,General Events,Convention Center,Making Strides Against Breast Cancer (http://makingstrides.acsevents.org/site/TR/MakingStridesAgainstBreastCancer/MSABCCY17CA?fr_id=84622&pg=entry),Los Angeles Convention Center,\"1201 S Figueroa St West\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-american-cancer-society-making-strides-breast-cancer-walk,,,,,,false,,,,,\n285206,Office of Community Beautification - Pacoima Clean Up,03/24/2018 08:00:00 AM,03/24/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://www.laocb.org),,\"13150 Judd Street\nPacoima, CA 91331\n(34.271809, -118.419775)\",https://calendar.lacity.org/event/office-community-beautification-pacoima-clean,Leslie Shim,213-978-0227,Leslie.Shim@lacity.org,,,false,,,,,\n306676,Los Angeles Convention Center - RuPaul's DragCon,05/12/2018 10:00:00 AM,05/12/2018 06:00:00 PM,Shows & Conventions,Convention Center,RuPaul's DragCon (http://rupaulsdragcon.com/),Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-rupauls-dragcon-0,,,,\"<p>Three days celebrating art, pop culture, and all things Drag! </p><p>RuPaul’s DragCon is the only place to kiki with your favorite drag queens and stars all under one roof! Come through and meet your faves, snap a selfie, and get your life! Here at DragCon it is RuPaul’s Best Friends Race!</p>\",,true,Ticket Prices: $40-$250 / Paid parking available on site at the South Hall parking garage.,,,,\n254596,Board of Public Works Agenda,12/08/2017 10:00:00 AM,12/08/2017 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86116997_12082017.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-276,,,,,,false,,,,,\n316546,Board of Public Works Agenda,05/30/2018 10:00:00 AM,05/30/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86121643_05302018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-440,,,,,,false,,,,,\n324206,Los Angeles Convention Center - GTSM Sports Card & Autograph Experience,06/30/2018 10:00:00 AM,06/30/2018 05:00:00 PM,General Events,Convention Center,GTSM (http://www.gtsportsmarketing.com/),Los Angeles Convention Center,\"1201 S Figueroa St\nPetree Hall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-gtsm-sports-card-autograph-experience-0,,,,,,false,,,,,\n336031,Los Angeles Convention Center - Bride World Expo,07/21/2018 10:00:00 AM,07/21/2018 04:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,Bride World (http://www.brideworld.com/bridal-show-los-angeles-county-los-angeles-convention-center/),Los Angeles Convention Center,\"1201 S Figueroa St\nConcourse Hall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-bride-world-expo-6,,,,<h1>Bride World Expo</h1><div><div><div><p>DIY Seminar • Great bargains • Connect with vendors • Free magazines •Staged fashion show • Gather vendor literature • Compete for prizes</p></div></div></div>,,true,\"$6 advance ticket price, $12 on site / Paid parking available on site.\",,,,\n336021,Los Angeles Convention Center - 2018 ASCA Annual Conference,07/16/2018 08:00:00 AM,07/16/2018 05:00:00 PM,General Events,Convention Center,ASCA (https://www.ascaconferences.org/),Los Angeles Convention Center,\"1201 S Figueroa St West\nHall A & Concourse EF Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-2018-asca-annual-conference-1,,,,,,true,Registration: $250 - $619 / Paid parking available on site.,,,,\n229761,Los Angeles Convention Center - Naturalization Ceremony,10/17/2017 01:30:00 PM,10/17/2017 02:30:00 PM,General Events,Convention Center,,Los Angeles Convention Center,\"1201 S Figueroa St West\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-naturalization-ceremony-0,,,,,,false,,,,,\n306671,Los Angeles Convention Center - RuPaul's DragCon,05/11/2018 10:00:00 AM,05/11/2018 08:00:00 PM,Shows & Conventions,Convention Center,RuPaul's DragCon (http://rupaulsdragcon.com/),Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-rupauls-dragcon,,,,\"<p>Three days celebrating art, pop culture, and all things Drag! </p><p>RuPaul’s DragCon is the only place to kiki with your favorite drag queens and stars all under one roof! Come through and meet your faves, snap a selfie, and get your life! Here at DragCon it is RuPaul’s Best Friends Race!</p>\",,true,Ticket Prices: $40-$250 / Paid parking available on site at the South Hall parking garage.,,,,\n251666,Board of Public Works Agenda,12/01/2017 10:00:00 AM,12/01/2017 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86116832_12012017.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-270,,,,,,false,,,,,\n279611,Board of Public Works Agenda,02/26/2018 10:00:00 AM,02/26/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86118908_02262018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-348,,,,,,false,,,,,\n230076,Office of Community Beautification ~ I love Noble Cleanup,10/14/2017 08:30:00 AM,10/14/2017 10:30:00 AM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),,\"8329 Noble Ave\nLos Angeles, CA 91352\n(34.223055, -118.461131)\",https://calendar.lacity.org/event/office-community-beautification-i-love-noble-cleanup,Ana Huizar,213-978-0224,ana.huizar@lacity.org,,Culture and Community,false,,,All,,\n306626,Los Angeles Convention Center - Crypto Invest Summit,05/01/2018 09:00:00 AM,05/01/2018 05:30:00 PM,General Events,Convention Center,Crypto Invest Summit (https://cryptoinvestsummit.io/),Los Angeles Convention Center,\"1201 S Figueroa St\nConcourse EF Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-crypto-invest-summit,,,,\"<p>Crypto Invest Summit brings to you the who-is-who in the cryptocurrency and blockchain space on 2 stages and the largest crypto expo space in the world. Join us for two days of presentations, pitches, educational panels and insightful fireside chats with industry leaders.</p>\",,true,\"Registration: $449 - $5,000 / Paid parking available on site at West Hall parking garage.\",,,,\n364891,Board of Public Works Agenda,09/05/2018 10:00:00 AM,09/05/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86124084_09052018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-539,,,,,,false,,,,,\n347021,Board of Public Works Agenda,07/20/2018 10:00:00 AM,07/20/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86123023_07202018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-496,,,,,,false,,,,,\n342166,Office of Community Beautification ~ Accelerated School,07/16/2018 09:30:00 AM,07/16/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Accelerated School,\"4000 South Main Street\nLos Angeles, CA 90033\n(34.010421, -118.273999)\",https://calendar.lacity.org/event/office-community-beautification-accelerated-school-0,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,\n265346,Los Angeles Convention Center - LA Art Show,01/10/2018 07:00:00 PM,01/10/2018 11:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,LA Art Show (https://www.laartshow.com/),Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-la-art-show-1,,,,,,true,\"$25 - $250, plus on-line service fees. See LA Art Show website for details. / Paid on-site parking available.\",,,,\n360076,LA Phil CicLAvia Community Meeting,08/29/2018 06:30:00 PM,08/29/2018 07:30:00 PM,\"Fairs & Festivals, General Events, Arts, City Government, Environment, Family Activity\",\"Council District 13, Transportation\",CicLAvia Hollywood (http://info.ciclavia.org),Hollywood Neighborhood City Hall,\"6501 Fountain Avenue\nLos Angeles, CA 90028\n(34.094335, -118.33091)\",https://calendar.lacity.org/event/la-phil-ciclavia-community-meeting,CicLAvia,213-355-8500,info@ciclavia.org,\"<p>On Sunday, Sept 30, the LA Phil is partnering with CicLAvia to produce a temporary car-free day that transforms streets into safe spaces for thousands of people to explore the city by foot, bike, and other forms of non-motorized transport. </p><p> </p><p>Join us for a community meeting to learn about street closures, business opportuniteis, family activies, volunteer positions and more.</p><p> </p><p>Hollywood Neighborhood City Hall</p><p>6501 Fountain Avenue Los Angeles, CA 90028</p><p> </p><p><strong>RVSP to Attend: Call 213-355-8500 or email info@ciclavia.org</strong></p>\",,false,,https://calendar.lacity.org/sites/g/files/wph721/f/ciclavia_093018_community_mtg_2_HOLLYWOOD-page-001.jpg,All,,https://calendar.lacity.org/sites/g/files/wph721/f/ciclavia_093018_community_mtg_2_HOLLYWOOD.pdf\n267231,Town Hall! with LAPD Hollywood,01/30/2018 06:00:00 PM,01/30/2018 07:00:00 PM,City Government,\"Attorney, Office of the City, Council District 13, Police\",,LAPD Hollywood Division/City Attorney,\"7300 Hollywood Blvd\nLos Angeles, CA 90046\n(34.101626, -118.349554)\",https://calendar.lacity.org/event/town-hall-lapd-hollywood,Meighbor Prosecutor Steve Houchin,213-978-7904,steve.houchin@lacity.org,<p>Come to the upcoming Town Hall with LAPD Hollywood Division and City Attorney Office.</p>,,false,,https://calendar.lacity.org/sites/g/files/wph721/f/TOWN%20HALL%20%20HOLLYWOOD_0.jpg,,,https://calendar.lacity.org/sites/g/files/wph721/f/TOWN%20HALL%20%20HOLLYWOOD.jpg\n340026,Office of Community Beautification - Community Clean-Up  ,07/28/2018 09:00:00 AM,07/28/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,OCB (http://dpw.lacity.org/office-community-beautification),Assemblymember Adrin Nazarian,\"between Nordhoff\nPanorama City, CA 91402\",https://calendar.lacity.org/event/office-community-beautification-community-clean-0,Leslie Shim,,leslie.shim@lacity.org,,,false,,,All,,\n247431,Las Posadas,12/16/2017 06:00:00 PM,12/24/2017 08:30:00 PM,\"Culture & Community, Holiday & Seasonal, Family Activity\",Cultural Affairs,https://www.olveraevents.com/las-posadas-olvera-street,El Pueblo Historical Monument,\"125 Paseo de la Plaza\nLos Angeles, CA 90012\n(34.055708, -118.239458)\",https://calendar.lacity.org/event/las-posadas-1,,213-628-1274,osmaf.info@gmail.com,\"<p>This presentation of the 9-day journey of Mary and Joseph to Bethlehem is depicted with singing, a candlelight procession, and the breaking of a pinata each night.</p><p>Each night the crowd gathers as the pastores, or shepherds, are led by the angel to ask for shelter at one of the shops on Olvera Street. The procession starts and ends at the Avila Adobe, the oldest house in Los Angeles.  At the end, each visitor is given a cup of hot champurrado and a piece of delicious pan dulce, or sweet bread.</p><p>Both the Olvera Street event website  and the city event website provide detailed information on the event.</p><p> </p>\",,false,,https://calendar.lacity.org/sites/g/files/wph721/f/895752_e756a203320c4051a136b0e6bdb7e255.jpg,All,,\n277616,Los Angeles Convention Center - El Sembrador Ministries,02/25/2018 08:00:00 AM,02/25/2018 06:00:00 PM,General Events,Convention Center,El Sembrador Ministries (https://elsembradorministries.com/eventos/product/metanoia-de-mujeres-2018/),Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-el-sembrador-ministries-3,,,,\"<p>Catholic event for women.</p>Evento Católico esperado por miles de mujeres que desean vivir 2 días maravillosos alabando y bendiciendo a Dios, para entregar sus cargas y salir con nuevas fuerzas a cumplir su misión como mujeres renovadas en una sociedad tan necesitada de Dios.\",,true,$35 Admission Fee + $6 shipping & handling. / Paid parking available on-site. Park in South Hall parking garage.,,,,\n285201,Office of Community Beautification - CD 1 Earth Day Clean Up,04/14/2018 09:00:00 AM,04/14/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://www.laocb.org),,\"929 Academy Road\nLos Angeles, CA 90012\n(34.080273, -118.238061)\",https://calendar.lacity.org/event/office-community-beautification-cd-1-earth-day-clean,Leslie Shim,213-978-0227,Leslie.Shim@lacity.org,,,false,,,,,\n314111,Heart Berries: A Memoir,06/28/2018 07:30:00 PM,06/28/2018 09:00:00 PM,Arts,\"Library, Los Angeles Public\",http://www.lapl.org/whats-on/events/heart-berries-memoir,Central Library,\"630 W 5th Street\nLos Angeles, CA 90071\n(34.050931, -118.254965)\",http://calendar.lacity.org/event/heart-berries-memoir,,,,\"<p><a href=\"\"http://lfla.org/event/heart-berries-a-memoir/\"\">Heart Berries: A Memoir</a></p><p>Terese Mailhot</p><p>In conversation with Roxane Gay</p><p> </p><p>The New York Times bestselling memoir Heart Berries is the powerful, poetic meditation of a woman’s coming-of-age on the Seabird Island Indian Reservation in the Pacific Northwest. Having survived a profoundly dysfunctional upbringing only to find herself hospitalized and facing a dual diagnosis of post traumatic stress disorder and bipolar II disorder, Terese Marie Mailhot is given a notebook and begins to write her way out of trauma. The triumphant result is Heart Berries, a memorial for Mailhot’s mother, a social worker and activist who had a thing for prisoners; a story of reconciliation with her father―an abusive drunk and a brilliant artist―who was murdered under mysterious circumstances; and an elegy on how difficult it is to love someone while dragging the long shadows of shame. “Here is a wound. Here is need, naked and unapologetic. Here is a mountain woman, towering in words great and small,” writes the bestselling and award-winning author Roxane Gay on Heart Berries. Gay will join Mailhot on the ALOUD stage to discuss the journey of discovering one’s true voice to seize control of your story.</p>\",,false,,http://calendar.lacity.org/sites/g/files/wph721/f/eventmailhot.jpg,\"Adult, Senior\",,\n240886,Board of Public Works Agenda,11/13/2017 10:00:00 AM,11/13/2017 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86116378_11132017.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-250,,,,,,false,,,,,\n294746,Los Angeles Convention Center - Dwell on Design,04/07/2018 10:00:00 AM,04/07/2018 05:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,Dwell on Design (https://www.dwellondesign.com/en/home.html),Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-dwell-design-4,,,,\"<p>Dwell on Design aims to have participating brands that collectively represent what it means to be modern. Interiors, exteriors, and everything in between... each Dwell on Design brand encompasses a certain uniqueness. A uniqueness that strives to answer the question of where modern will take us tomorrow.</p>\",,true,$25 - $695 (go to www.dwellondesign.com for details) / paid parking available on site (South Hall parking garage),,,,\n365421,Board of Public Works Supplemental Agenda,09/07/2018 10:15:00 AM,09/07/2018 10:15:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86124350_09072018.htm,,,http://calendar.lacity.org/event/board-public-works-supplemental-agenda-9,,,,,,false,,,,,\n306656,Los Angeles Convention Center - AdultCon,05/13/2018 01:00:00 PM,05/13/2018 06:00:00 PM,Shows & Conventions,Convention Center,,Los Angeles Convention Center,\"1201 S Figueroa St West\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-adultcon-1,,,,,,true,Ticket Prices: $40-$150 / Paid parking available on site at the West Hall parking garage.,,Adult,,\n349696,Los Angeles Convention Center - KCON 2018,08/10/2018 11:00:00 AM,08/10/2018 06:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,KCON 2018 (http://www.kconusa.com/),Los Angeles Convention Center,\"1201 S Figueroa St\nLos Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-kcon-2018,,,,,,true,Convention Tickets: $30 + processing fee / See KCON website for concert ticket information. / Paid parking available on site.,,,,\n229931,Los Angeles Convention Center - Stan Lee's Comic Con 2017,10/27/2017 01:00:00 PM,10/27/2017 06:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,Stan Lee's Comic Con 2017 (https://www.showclix.com/event/StanLeesLAComicCon2017/listing),Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-stan-lees-comic-con-2017,,,,\"<p>Stan Lee’s L.A. Comic Con is Los Angeles’ first multi-media pop culture convention, held annually at the Los Angeles Convention Center. L.A. Comic Con assembles the most exciting and innovative in comics, video games, sci-fi, fantasy, horror and all things pop-culture, making Stan Lee's L.A. Comic Con Los Angeles' ultimate pop-culture convention.</p>\",,true,Paid registration.  See Stan Lee Comic Con website for details.  Paid on-site parking available.,,,,\n235731,Office of Community Beautification ~ West Adams Prep High School,04/07/2018 08:30:00 AM,04/07/2018 12:30:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),West Adams High School,\"1500 West Washington Boulevard\nLos Angeles, CA\n(34.04001, -118.289685)\",https://calendar.lacity.org/event/office-community-beautification-west-adams-prep-high-school-5,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,\n314351,Office of Community Beautification ~ Boyle Heights Neighborhood Council,05/19/2018 09:00:00 AM,05/19/2018 01:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),1st Street & Soto,\"170 South Gless Street\nLos Angeles, CA 90033\n(34.045422, -118.223054)\",https://calendar.lacity.org/event/office-community-beautification-boyle-heights-neighborhood-council-0,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,\n285211,Board of Public Works Offsite Agenda,03/19/2018 05:30:00 PM,03/19/2018 05:30:00 PM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86119511_03192018.htm,,,http://calendar.lacity.org/event/board-public-works-offsite-agenda,,,,,,false,,,,,\n237311,Office of Community Beautification / T.R.U.S.T. South LA / LACC,10/28/2017 08:30:00 AM,10/28/2017 12:30:00 PM,Culture & Community,Office of Community Beautification,,T.R.U.S.T. South LA,\"4331 S Main Street\nLos Angeles, CA 90037\n(34.004568, -118.273982)\",https://calendar.lacity.org/event/office-community-beautification-trust-south-la-lacc,Thomas Corrales,213-978-0230,thomas.corrales@lacity.org,<p>Tree Planting and Cleanup - Fall Festival</p>,,false,,,,,https://calendar.lacity.org/sites/g/files/wph721/f/T.R.U.S.T%20South%20LA%20Event%20Flyer%2010-28-17.pdf\n324831,Los Angeles Convention Center - Anime Expo 2018 Pre-Show Night,07/04/2018 06:00:00 PM,07/04/2018 06:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,Anime Expo (http://www.anime-expo.org/),Los Angeles Convention Center,\"1201 S Figueroa St\nLos Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-anime-expo-2018-pre-show-night,,,,\"<p>Anime Expo (AX) brings together fans and industry from Japan, the US, and all over the world for the largest celebration of Japanese pop culture in North America. Taking place every year since 1992, Anime Expo features the best in Japanese entertainment, music, fashion and video games. For more information, visit <a href=\"\"http://www.anime-expo.org/\"\">www.anime-expo.org</a>.</p><p>*Doors open at 10:00am everyday.</p>\",,false,,,,,\n240746,27th Annual Mariachi Festival,11/19/2017 10:00:00 AM,11/19/2017 07:30:00 PM,\"Holiday & Seasonal, Family Activity\",Cultural Affairs,http://culturela.org/event/27th-annual-mariachi-festival/,Mariachi Plaza,\"1817 E 1st St Boyle Heights\nCA 90033\",https://calendar.lacity.org/event/27th-annual-mariachi-festival,,,,\"<p>The 27th Annual Mariachi Festival will celebrate the diversity of the Los Angeles mariachicommunity with a stellar line-up of musical ensembles that truly reflect the rainbowkaleidoscope of cultures, histories, and ethnicities. The festival is the oldest and the onlyfree mariachi extravaganza in Los Angeles. There will be arts activities, photo opportunities,art exhibitions, delicious food, and information booths.</p>\",,false,,https://calendar.lacity.org/sites/g/files/wph721/f/mariachi-plaza-festival.jpg,All,,\n248631,Office of Community Beautification ~ Aliso Pico Park Community Clean-Up,12/09/2017 07:30:00 AM,12/09/2017 11:30:00 AM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Aliso Pico Park,\"370 South Clarence St\nLos Angeles, CA 90033\n(34.0434, -118.223807)\",https://calendar.lacity.org/event/office-community-beautification-aliso-pico-park-community-clean,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,\n267631,Board of Public Works Agenda,01/12/2018 10:00:00 AM,01/12/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86117749_01122018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-302,,,,,,false,,,,,\n294731,Los Angeles Convention Center - Boutique Design West,04/05/2018 10:00:00 AM,04/05/2018 05:00:00 PM,General Events,Convention Center,Boutique Design West (https://www.boutiquedesignwest.com/),Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-boutique-design-west-0,,,,\"<p>The BDwest trade fair and conference serves the hospitality design industry with two days of exhibits, educational sessions and social events in the development hotspot of Downtown L.A. In addition to 300+ manufacturers/marketers of exceptional design elements for hospitality interiors, the program features accredited seminars, intimate Q&As and interactive discussions with industry vanguards, along with unique, design-focused social events.</p>\",,true,$75 - $475 (go to www.boutiquedesignwest.com for details) / paid parking available (South Hall parking garage),,,,\n230356,Office of Community Beautification - WLASNC - Nora Sterry Elementary,11/04/2017 08:30:00 AM,11/04/2017 12:00:00 PM,Culture & Community,Office of Community Beautification,,Nora Sterry Elementary,\"1730 Corinth Avenue\nLos Angeles, CA 90025\n(34.043984, -118.447708)\",https://calendar.lacity.org/event/office-community-beautification-wlasnc-nora-sterry-elementary,Anna Ruiz,213-978-0231,Anna.Ruiz@lacity.org,,,false,,,,,\n322676,Board of Public Works Agenda,06/13/2018 10:00:00 AM,06/13/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86121969_06132018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-459,,,,,,false,,,,,\n234321,Office of Community Beautification ~ Pecan Park Community Clean-Up,10/28/2017 08:00:00 AM,10/28/2017 01:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Pecan Park,\"145 South Pecan Street\nLos Angeles, CA\n(34.046058, -118.221804)\",https://calendar.lacity.org/event/office-community-beautification-pecan-park-community-clean,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,\n311196,Board of Public Works Agenda,05/09/2018 10:00:00 AM,05/09/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86120908_05092018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-425,,,,,,false,,,,,\n306691,Los Angeles Convention Center - Ultimate Women's Expo,05/19/2018 10:00:00 AM,05/19/2018 05:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,,Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-ultimate-womens-expo-9,,,,\"<p>You've been balancing a busy life and it's time to grab your girlfriends and enjoy free manicures, facials, exciting makeovers, high fashion runway shows, hair makeover stage, amazing spa treatments and massages. Indulge in lots of free samples, gourmet tastings and delicacies. Discover the season's best from luxury boutiques to emerging designers. We scour the world searching for the very best products and services, and to bring hundreds of these amazing companies together.</p><p>We've gathered the very best leading companies, boutiques and brands together to bring a new level of women's expo to Los Angeles. Never before have there been so many great reasons to visit a Women's Expo - The Ultimate Women's Expo.</p>\",,true,Ticket Price: $10 / Paid parking available on site at the South Hall parking garage.,,,,\n276636,Office of Community Beautification ~ Foundation for Second Chances,02/17/2018 10:00:00 AM,02/17/2018 01:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Foundation for Second Chances,\"1513 East 103rd Street\nLos Angeles, CA 90002\n(33.943265, -118.247906)\",https://calendar.lacity.org/event/office-community-beautification-foundation-second-chances-0,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,\n363421,Los Angeles Convention Center - Naturalization Ceremony,09/18/2018 07:00:00 AM,09/18/2018 10:00:00 AM,General Events,Convention Center,,Los Angeles Convention Center,\"1201 S Figueroa St\nLos Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-naturalization-ceremony-15,,,,,,false,,,,,\n248176,Los Angeles Convention Center - LA Auto Show 2017,12/03/2017 09:00:00 AM,12/03/2017 09:00:00 PM,Shows & Conventions,Convention Center,LA Auto Show Tickets (https://laautoshow.com/tickets/#general-admission),Los Angeles Convention Center,\"1201 S Figueroa St\nLos Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-la-auto-show-2017-1,,,,\"<p>Whether you’re in-market for a new vehicle or planning for the future, the LA Auto Show is your one-stop-shop for comparison shopping cars, trucks, SUVs, electric vehicles and concepts. Hassle-free, stress-free, and about 1,000 vehicles to choose from.  Outside the LA Convention Center, attendees can enjoy pressure-free test drives of nearly 100 of the latest models.  ”The Garage\"\" - accessible via South Hall Atrium’s escalators - is one of the world's largest and most eclectic collections of renowned tuners, customizers, aftermarket goods and exotics.  While the adults shop, there is plenty for the kids to experience. From video games, virtual reality demos, and kids’ play zones, there is plenty to keep them entertained. Tickets for children ages 6-12 are $5 and children under 6 are free with a paying adult.</p>\",,true,Child (6-12): $5; Adult (13-64): $15; Senior (65+): $10 / Paid parking available.,,,,\n303046,Office of Community Beautification - Sycamore Grove Park Cleanup,04/22/2018 08:30:00 AM,04/22/2018 11:30:00 AM,Culture & Community,Office of Community Beautification,OCB (http://dpw.lacity.org/office-community-beautification),Iglesia Ni Cristo,,https://calendar.lacity.org/event/office-community-beautification-sycamore-grove-park-cleanup-0,Leslie Shim,213-842-0149,leslie.shim@lacity.org,,,false,,,All,,\n314146,Build-A-Bot Workshop,06/25/2018 03:30:00 PM,06/25/2018 03:30:00 PM,Family Activity,\"Library, Los Angeles Public\",http://www.lapl.org/whats-on/events/build-bot-workshop,Robertson Branch Library,\"1719 S Robertson Boulevard\nLos Angeles, CA 90035\n(34.048277, -118.385666)\",http://calendar.lacity.org/event/build-bot-workshop,,,,\"<p> </p><p>Beginning with a simple circuit, grow your robotics abilities to create autonomous bots using sensors!</p><p> </p><p><a href=\"\"https://lamakerspace.org/\"\">LA Makerspace</a> leads this STEAM program.</p><p> </p><p>Advance RSVP required. Sign up at the branch's Reference Desk, or call 310-840-2147. Attendance at all 4 sessions is recommended. Ages 10 and up.</p>\",,false,,http://calendar.lacity.org/sites/g/files/wph721/f/wall-color-paint-colorful-graffiti-painting-street-art-art-illustration-mural-robot-modern-art_3.jpeg,Teenager,,\n363136,Office of Community Beautification - Van Nuys Community Clean-Up,09/15/2018 09:00:00 AM,09/15/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,OCB (http://dpw.lacity.org/office-community-beautification),,\"Van Nuys Blvd Between Sherman Way - Vanowen\nLos Angeles, CA 91405\",https://calendar.lacity.org/event/office-community-beautification-van-nuys-community-clean,Leslie Shim,213-978-0227,leslie.shim@lacity.org,,,false,,,All,,\n363426,Los Angeles Convention Center - Naturalization Ceremony,09/18/2018 11:45:00 AM,09/18/2018 02:30:00 PM,General Events,Convention Center,,Los Angeles Convention Center,\"1201 S Figueroa St\nLos Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-naturalization-ceremony-16,,,,,,false,,,,,\n294151,Board of Public Works Agenda,03/28/2018 10:00:00 AM,03/28/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86119707_03282018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-378,,,,,,false,,,,,\n324201,Los Angeles Convention Center - GTSM Sports Card & Autograph Experience,06/29/2018 05:00:00 PM,06/29/2018 09:00:00 PM,General Events,Convention Center,GTSM (http://www.gtsportsmarketing.com/),Los Angeles Convention Center,\"1201 S Figueroa St\nPetree Hall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-gtsm-sports-card-autograph-experience,,,,,,false,,,,,\n276466,Board of Public Works Agenda,02/12/2018 10:00:00 AM,02/12/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86118481_02122018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-335,,,,,,false,,,,,\n366541,Board of Public Works Agenda,09/12/2018 10:00:00 AM,09/12/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86124415_09122018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-542,,,,,,false,,,,,\n309536,Office of Community Beautification ~ Aspire Tate Academy,05/12/2018 09:00:00 AM,05/12/2018 01:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Sapire Tate Academy,\"170 South Gless Street 123 West 59th Street\nLos Angeles, CA 90003\",https://calendar.lacity.org/event/office-community-beautification-aspire-tate-academy,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,\n314151,Build-A-Bot Workshop,06/26/2018 03:30:00 PM,06/26/2018 03:30:00 PM,Family Activity,\"Library, Los Angeles Public\",http://www.lapl.org/whats-on/events/build-bot-workshop,Robertson Branch Library,\"1719 S Robertson Boulevard\nLos Angeles, CA 90035\n(34.048277, -118.385666)\",http://calendar.lacity.org/event/build-bot-workshop-0,,,,\"<p> </p><p>Beginning with a simple circuit, grow your robotics abilities to create autonomous bots using sensors!</p><p> </p><p><a href=\"\"https://lamakerspace.org/\"\">LA Makerspace</a> leads this STEAM program.</p><p> </p><p>Advance RSVP required. Sign up at the branch's Reference Desk, or call 310-840-2147. Attendance at all 4 sessions is recommended. Ages 10 and up.</p>\",,false,,http://calendar.lacity.org/sites/g/files/wph721/f/wall-color-paint-colorful-graffiti-painting-street-art-art-illustration-mural-robot-modern-art.jpeg,Teenager,,\n236416,Board of Public Works Agenda,10/27/2017 10:00:00 AM,10/27/2017 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86115991_10272017.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-229,,,,,,false,,,,,\n265726,Board of Public Works Agenda,01/05/2018 10:00:00 AM,01/05/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86117540_01052018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-296,,,,,,false,,,,,\n316171,Board of Public Works Agenda,05/23/2018 10:00:00 AM,05/23/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86121501_05232018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-439,,,,,,false,,,,,\n294916,Los Angeles Convention Center - Brain Health Fair,04/20/2018 10:00:00 AM,04/20/2018 04:00:00 PM,General Events,Convention Center,AAN: Brain Health Fair 2018 (http://patients.aan.com/go/activities/brainhealthfair),Los Angeles Convention Center,\"1201 S Figueroa St West\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-brain-health-fair,,,,\"<p>The Brain Health Fair is a free one-time-only event connecting neurology patients, families, and caregivers affected by a brain disease, as well as students interested in brain science and the general public interested in brain health.</p><p>The program is designed and executed by neurologists, with local and national experts, who are on hand to answer questions about the wonders of the brain. Attendees find out about the latest research advances in multiple sclerosis, Alzheimer's and dementia, epilepsy, stroke, Parkinson's and movement disorders, pain and headache, concussion, the latest advances in child neurology, and other brain diseases.</p><p>The Brain Health Fair is presented by the American Academy of Neurology, the world's largest association of neurologists and neuroscience professionals, with 32,000 members.</p>\",,false,,,,,\n336046,Los Angeles Convention Center - Torres Empire LA Supershow,07/22/2018 10:00:00 AM,07/22/2018 06:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,Torres Empire (http://torresempire.com/),Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-torres-empire-la-supershow,,,,\"<p>The Torres Empire Family is BACK in 2018 for an AMAZING lowrider event and car show at the LA Convention Center!</p><p>Online ticket sales will end July, 16th. Tickets will be available at the door of the event.</p>\",,true,\"$36.50 advance ticket sale on-line, $45 on site. /  Paid parking available on site.\",,,,\n234536,Office of Community Beautification ~ Cloud and Fire Cleanup,11/01/2017 09:00:00 AM,11/01/2017 12:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),,\"6850 Van Nuys Blvd\nLos Angeles, CA 91405\n(34.195392, -118.448727)\",https://calendar.lacity.org/event/office-community-beautification-cloud-and-fire-cleanup,Ana Huizar,213-978-0224,ana.huizar@lacity.org,,Culture and Community,false,,,All,,\n271216,Los Angeles Convention Center - Jurassic Tour,01/28/2018 10:00:00 AM,01/28/2018 07:00:00 PM,\"General Events, Family Activity\",Convention Center,Jurassic Tour (https://jurassictour.ticketleap.com/los-angeles-convention-center/dates),Los Angeles Convention Center,\"1201 S Figueroa St West\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-jurassic-tour-0,,,,\"<p>This fun-filled, family event will have a wide variety of fun and educational activities designed to engage all members of the entire family. Embark on a prehistoric journey from the Jurassic, Triassic, and Cretaceous periods and discover the dinosaurs that ruled the earth for more than 150 million years ago! The main exhibit features over 50 life size ultra-realistic dinosaurs in their natural habitat. Other exhibits include hands on interaction with these enormous Dinosaurs, ride a cute little baby Dinosaur, be courageous and ride a 12 foot animatronic T-Rex & Triceratops. Tracey, a friendly young T-Rex greets guests once every 3 hours and can be found walking and playing with the kids. There's a fossil dig where young paleontologists can dig up ancient bones, a Virtual Reality Zone designed to stimulate your child’s imagination, a Jurassic Themed Bounce area with dinosaur inflatable bounce houses, scale a Jungle Wall. Test your skills at basketball and darts, face painting, and much more.</p>\",,true,\"Adult $24 / Child $29 (Ages 2-12), plus on-line service fees / Paid parking available on site.\",,,,\n303231,Office of Community Beautification ~ Harbor Gateway North Neighborhood Council,04/28/2018 08:00:00 AM,04/28/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Harbor Gateway North Neighborhood Council,\"219 East 116 Place\nLos Angeles, CA\n(33.928274, -118.271044)\",https://calendar.lacity.org/event/office-community-beautification-harbor-gateway-north-neighborhood-council-3,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,\n239841,Office of Community Beautification ~ Harbor Gateway North Neighborhood Council,11/15/2017 01:30:00 PM,11/15/2017 03:30:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Skirball Middle School,\"630 E 115th Street\nLos Angeles, CA 90059\n(33.930108, -118.263947)\",https://calendar.lacity.org/event/office-community-beautification-harbor-gateway-north-neighborhood-council-2,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,\n281296,Board of Public Works Agenda,03/07/2018 10:00:00 AM,03/07/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86119079_03072018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-358,,,,,,false,,,,,\n314176,Office of Community Beautification - Palms Neighborhood Council/Overland Avenue Cleanup Day,05/19/2018 10:00:00 AM,05/19/2018 01:00:00 PM,Culture & Community,Office of Community Beautification,,C & M Cafe,\"10640 Woodbine Street\nLos Angeles, CA 90034\n(34.026174, -118.412345)\",https://calendar.lacity.org/event/office-community-beautification-palms-neighborhood-counciloverland-avenue-cleanup-day,Anna Ruiz,213-978-0231,Anna.Ruiz@lacity.org,,,false,,,,,\n356491,Board of Public Works Agenda,08/15/2018 10:00:00 AM,08/15/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86123580_08152018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-522,,,,,,false,,,,,\n281121,\"Office of Community Beautification ~ Unidas Por NELA, Community Cleanup \",03/08/2018 08:00:00 AM,03/08/2018 10:00:00 AM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),,\"929 Cypress Ave\nLos Angeles, CA 90065\n(34.092982, -118.225117)\",https://calendar.lacity.org/event/office-community-beautification-unidas-por-nela-community-cleanup,Ana Huizar,213-978-0224,ana.huizar@lacity.org,,Culture and Community,false,,,All,,\n358146,Office of Community Beautification - LAFH Community Clean-Up (Simpson),08/17/2018 10:00:00 AM,08/17/2018 11:00:00 AM,Culture & Community,Office of Community Beautification,OCB (http://dpw.lacity.org/office-community-beautification),LA Family Housing,\"7860 Simpson Ave\nLos Angeles, CA 91605\n(34.213183, -118.388874)\",https://calendar.lacity.org/event/office-community-beautification-lafh-community-clean-simpson,Leslie Shim,213-978-0227,leslie.shim@lacity.org,,,false,,,All,,\n248206,Los Angeles Convention Center - LA Auto Show 2017,12/09/2017 09:00:00 AM,12/09/2017 10:00:00 PM,Shows & Conventions,Convention Center,LA Auto Show Tickets (https://laautoshow.com/tickets/#general-admission),Los Angeles Convention Center,\"1201 S Figueroa St\nLos Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-la-auto-show-2017-7,,,,\"<p>Whether you’re in-market for a new vehicle or planning for the future, the LA Auto Show is your one-stop-shop for comparison shopping cars, trucks, SUVs, electric vehicles and concepts. Hassle-free, stress-free, and about 1,000 vehicles to choose from.  Outside the LA Convention Center, attendees can enjoy pressure-free test drives of nearly 100 of the latest models.  ”The Garage\"\" - accessible via South Hall Atrium’s escalators - is one of the world's largest and most eclectic collections of renowned tuners, customizers, aftermarket goods and exotics.  While the adults shop, there is plenty for the kids to experience. From video games, virtual reality demos, and kids’ play zones, there is plenty to keep them entertained. Tickets for children ages 6-12 are $5 and children under 6 are free with a paying adult.</p>\",,true,Child (6-12): $5; Adult (13-64): $15; Senior (65+): $10 / Paid parking available.,,,,\n255216,Board of Public Works Agenda,12/11/2017 10:00:00 AM,12/11/2017 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86117070_12112017.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-280,,,,,,false,,,,,\n294901,Los Angeles Convention Center - West Coast Gaming Yu Gi Oh! Championship Tournament,04/15/2018 08:00:00 AM,04/15/2018 11:00:00 PM,General Events,Convention Center,,Los Angeles Convention Center,\"1201 S Figueroa St\nConcourse Hall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-west-coast-gaming-yu-gi-oh-championship-tournament,,,,,,true,$20 Admission Fee for Main Event / Paid parking available on site (South Hall parking garage),,,,\n238821,Office of Community Beautification ~ C5LA Service Day Cleanup,11/04/2017 09:00:00 AM,11/04/2017 12:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),C5LA & Friends of LA River,\"3100 N Broadway\nLos Angeles, CA 90031\n(34.073738, -118.208877)\",https://calendar.lacity.org/event/office-community-beautification-c5la-service-day-cleanup,Ana Huizar,2139780224,ana.huizar@lacity.org,,Culture and Community,false,,,All,,\n281126,Board of Public Works Agenda,03/05/2018 10:00:00 AM,03/05/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86119061_03052018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-354,,,,,,false,,,,,\n358791,Board of Public Works Agenda (Offsite) ,08/22/2018 05:00:00 PM,08/22/2018 05:00:00 PM,City Government,Board of Public Works,,,,http://calendar.lacity.org/event/board-public-works-agenda-offsite,,,,,,false,,,,,\n238881,Office of Community Beautification - Los Angeles Elementary School,11/04/2017 08:00:00 AM,11/04/2017 12:00:00 PM,Culture & Community,Office of Community Beautification,,Los Angeles Elementary School,\"1211 S Hobart\nBl Los Angeles, CA 90006\n(34.04862, -118.305229)\",https://calendar.lacity.org/event/office-community-beautification-los-angeles-elementary-school,Anna Ruiz,213-978-0231,Anna.Ruiz@lacity.org,,,false,,,,,\n284936,Board of Public Works Agenda,03/16/2018 10:00:00 AM,03/16/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86119433_03162018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-369,,,,,,false,,,,,\n237106,Office of Community Beautification ~ VGNA Clean Team Cleanup,10/28/2017 07:30:00 AM,10/28/2017 10:30:00 AM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),,\"Delano St Van Nuys, CA 91401\n(34.1775, -118.432777)\",https://calendar.lacity.org/event/office-community-beautification-vgna-clean-team-cleanup,Ana Huizar,2139780224,ana.huizar@lacity.org,,Culture and Community,false,,,All,,\n367601,Office of Community Beautification ~ KIPP Vida Preparatory Academy,09/15/2018 09:00:00 AM,09/15/2018 01:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),KIPP Vida Preparatory Academy,\"4401 S Budlong Avenue\nLos Angeles, CA\n(34.003686, -118.295888)\",https://calendar.lacity.org/event/office-community-beautification-kipp-vida-preparatory-academy,Thomas Corrales,213-978-0230,thomas.corrales@lacity.org,,,false,,,All,,https://calendar.lacity.org/sites/g/files/wph721/f/Kipp%20vida%20%281%29%20%281%29.pdf\n349721,Los Angeles Convention Center - Trending Home Expo,08/25/2018 09:00:00 AM,08/25/2018 04:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,Trending Home Expo (http://www.trendinghomeexpo.com/details/#),Los Angeles Convention Center,\"1201 S Figueroa St\nPetree Hall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-trending-home-expo,,,,\"<p>The TrendingHome Expo is a new home and rental extravaganza.  This expo is designed for those interested in new homeownership and rentals.  We will feature new home and rental developments, the latest in design trends, technology and panelists educating the public on the purchase and rental process and more.   Featuring Kids Innovation Space, featuring STEAM projects, face painting, games and more.  </p>\",,true,\"Paid parking on site. / Admission free, but registration is required.\",,,,\n234046,Board of Public Works Agenda,10/20/2017 10:00:00 AM,10/20/2017 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86115851_10202017.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-222,,,,,,false,,,,,\n252306,Office of Community Beautification ~ North East Trees,12/01/2017 08:00:00 AM,12/01/2017 03:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Ascot Hills Park,\"4371 Multnomah Street\nLos Angeles, CA 90032\n(34.069564, -118.189678)\",https://calendar.lacity.org/event/office-community-beautification-north-east-trees,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,\n249501,Board of Public Works Official Notice,11/24/2017 10:00:00 AM,11/24/2017 10:00:00 AM,City Government,Board of Public Works,,,,http://calendar.lacity.org/event/board-public-works-official-notice-23,,,,,,false,,,,,\n259541,\"Los Angeles Convention Center,     Above & Beyond - Common Ground Tour\",12/29/2017 07:00:00 PM,12/30/2017 12:00:00 AM,General Events,Convention Center,Above & Beyond Tour Tickets (http://www.aboveandbeyond.nu/tour),Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-above-beyond-common-ground-tour,,,,,,true,\"Ticket prices range from $66 - $219, plus processing fees / Paid on site parking available\",,,,\n358181,Los Angeles Convention Center - Naturalization Ceremony,08/24/2018 11:45:00 AM,08/24/2018 02:30:00 PM,General Events,Convention Center,,Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-naturalization-ceremony-14,,,,,,false,,,,,\n247781,Office of Community Beautification ~ Nightingale's campus and community cleanup ,12/09/2017 08:30:00 AM,12/09/2017 11:00:00 AM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),,\"3311 Figueroa St\nLos Angeles, CA 90065\n(34.086865, -118.21846)\",https://calendar.lacity.org/event/office-community-beautification-nightingales-campus-and-community-cleanup,Ana Huizar,213-978-0224,ana.huizar@lacity.org,,,false,,,All,,\n258061,Board of Public Works Agenda,12/18/2017 10:00:00 AM,12/18/2017 10:00:00 AM,City Government,Board of Public Works,,,,http://calendar.lacity.org/event/board-public-works-agenda-288,,,,,,false,,,,,\n254971,Office of Community Beautification ~ Year End Cleanup ,12/16/2017 08:00:00 AM,12/16/2017 11:00:00 AM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),,\"Dorrington\nLos Angeles, CA 91331\",https://calendar.lacity.org/event/office-community-beautification-year-end-cleanup,Ana Huizar,213-978-0224,ana.huizar@lacity.org,,Culture and Community,false,,,All,,\n359036,Office of Community Beautification - Koreatown Community Cleanup,09/15/2018 08:00:00 AM,09/15/2018 01:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://www.laocb.org),Hoover Street Elementary School,\"2726 Francis Avenue\nLos Angeles, CA 90005\n(34.056826, -118.284968)\",https://calendar.lacity.org/event/office-community-beautification-koreatown-community-cleanup,Anna Ruiz,,Anna.Ruiz@lacity.org,,,false,,,,,https://calendar.lacity.org/sites/g/files/wph721/f/KYCC%20-%20Hoover%20St%20ES.jpg\n294911,Los Angeles Convention Center - Naturalization Ceremony,04/17/2018 11:45:00 AM,04/17/2018 02:30:00 PM,General Events,Convention Center,,Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-naturalization-ceremony-8,,,,,,false,,,,,\n306061,Office of Community Beautification - Children's Day / Dia del Nino,04/29/2018 11:30:00 AM,04/29/2018 05:00:00 PM,Culture & Community,Office of Community Beautification,OCB (http://dpw.lacity.org/office-community-beautification),,\"1900 N San Fernando Rd\nLos Angeles, CA 90065\n(34.100279, -118.23551)\",https://calendar.lacity.org/event/office-community-beautification-childrens-day-dia-del-nino,Leslie Shim,213-842-0149,leslie.shim@lacity.org,,,false,,,All,,\n273871,Office of Community Beautification ~ Highland Park Gum Cleanup ,02/03/2018 08:00:00 AM,02/03/2018 11:00:00 AM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),,\"5558 N Figueroa St Highland Park\nCA 90042\",https://calendar.lacity.org/event/office-community-beautification-highland-park-gum-cleanup,Ana Huizar,213-978-0224,ana.huizar@lacity.org,,Culture and Community,false,,,All,,\n356471,Office of Community Beautification - Magnolia Ave. Elementary School,08/13/2018 08:30:00 AM,08/13/2018 11:30:00 AM,,Office of Community Beautification,,Magnolia Avenue Elementary School,\"1626 Orchard Avenue\nLos Angeles, CA 90006\n(34.043722, -118.288522)\",https://calendar.lacity.org/event/office-community-beautification-magnolia-ave-elementary-school,Anna Ruiz,,Anna.Ruiz@lacity.org,<p>Back to School Clean Up</p>,,false,,,,,https://calendar.lacity.org/sites/g/files/wph721/f/Magnolia%20ES.jpg\n276866,Los Angeles Convention Center - Bride World,02/11/2018 10:00:00 AM,02/11/2018 04:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,Bride World (https://www.brideworld.com/),Los Angeles Convention Center,\"1201 S Figueroa St\nConcourse Hall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-bride-world-2,,,,\"<p>Don't miss California's Bridal Super Show with over 150 wedding venues, photographers, entertainers, florists, bridal salons, invitations, photo booths, tuxedos, disc jockeys, event lighting, vintage decor, and honeymoon destinations. Find unique bargains and inspiration at your own pace. Enjoy fashion shows. Gather complimentary literature and magazines. Ask questions at the DIY Seminar. Shop the giant Gown Sale with hundreds of new gowns at drastically reduced prices. Register (RSVP) now to reserve free correspondence labels and an expo shopping bag. Advance tickets are 50% off now and $12 per person at the expo. Online at <a href=\"\"http://www.brideworld.com/\"\" target=\"\"_blank\"\">http://www.brideworld.com/</a></p>\",,true,$12 Admission Fee / Paid parking available on site.,,,,\n237126,Office of Community Beautification ~ Skidrow Community Cleanup ,10/28/2017 09:00:00 AM,10/28/2017 11:00:00 AM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),,\"Los Angeles, CA 90021\n(34.029411, -118.240375)\",https://calendar.lacity.org/event/office-community-beautification-skidrow-community-cleanup,Thomas Corrales,213-978-0230,Thomas.Corrales@lacity.org,,,false,,,All,,\n282956,Los Angeles Convention Center - Build Expo 2018,03/14/2018 10:00:00 AM,03/14/2018 03:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,Build Expo 2018 (http://buildexpousa.com/LosAngeles_Education.html),Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Meeting Rooms Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-build-expo-2018,,,,<p>Attendees must register on-line. Go to http://buildexpousa.com/LosAngeles_Education.html</p>,,true,\"free admission, must register on-line / paid parking available on site\",,,,\n292491,Board of Public Works Agenda,03/23/2018 10:15:00 AM,03/23/2018 10:15:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86119640_03232018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-374,,,,,,false,,,,,\n282941,\"Los Angeles Convention Center - Telemundo Health Fair 2018, La Feria de la Salud\",03/11/2018 10:00:00 AM,03/11/2018 05:00:00 PM,General Events,Convention Center,Telemundo Health Fair - La Feria de la Salud (https://www.telemundo52.com/noticias/local/La-Feria-de-la-Salud-405266986.html),Los Angeles Convention Center,\"1201 S Figueroa St West\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-telemundo-health-fair-2018-la-feria-de-la-salud,,,,\"<p>The Fifth Annual Health Fair. Medical consultations, classes, workouts, seminars, and more! Free entry. </p><p>Telemundo 52 te invita a la Feria de la Salud el domingo, 11 de marzo 2018. Habrán muchas actividades gratis y chequeos de salud para toda la familia. Entrada Gratis. </p>\",,true,Free admission and open to the public. / Paid parking available on site.,,,,\n276856,Los Angeles Convention Center - Black College Expo,02/10/2018 09:00:00 AM,02/10/2018 05:00:00 PM,General Events,Convention Center,Black College Expo (https://www.eventbrite.com/e/los-angeles-black-college-expo-tickets-34810700743),Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Kentia Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-black-college-expo-0,,,,\"<p>Get a jump start on your future by being the first Seniors and Juniors to interview with a variety of colleges and universities and start planning where you want to be when you graduate. College Transfer Students this is a great opportunity for you to get accepted on the spot!</p><p>Students come prepared with your transcripts, ACT or SAT scores and reach out to all the schools present. You can get accepted on the spot and maybe earn a scholarship to your dream school. Also, do not forget to submit your essay to “Win DOLLARS for college” scholarship powered by National College Resources Foundation. Deadline January 17th 2018.</p><p>Join the Black College Expo from 9am to 3pm and the After Show from 3pm to 5pm. ALL STUDENTS Welcome.</p>\",,true,$7 - $8  / Paid parking available on site.,,,,\n234771,Office of Community Beautification ~ Hollenbeck Park Community Clean-Up,10/21/2017 10:00:00 AM,10/21/2017 02:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Hollenbeck Park,\"415 South St Louis Street\nLos Angeles, CA\n(34.041835, -118.215723)\",https://calendar.lacity.org/event/office-community-beautification-hollenbeck-park-community-clean,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,\n234486,Office of Community Beautification ~ Julian Nava Learning Acadamy,11/18/2017 08:00:00 AM,11/18/2017 11:00:00 AM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Julian Nava Learning Academy,\"1420 East Adams Boulevard\nLos Angeles, CA\n(34.015543, -118.248115)\",https://calendar.lacity.org/event/office-community-beautification-julian-nava-learning-acadamy,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,\n277611,Los Angeles Convention Center - El Sembrador Ministries,02/24/2018 08:00:00 AM,02/24/2018 06:00:00 PM,General Events,Convention Center,El Sembrador Ministries (https://elsembradorministries.com/eventos/product/metanoia-de-mujeres-2018/),Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-el-sembrador-ministries-2,,,,\"<p>Catholic event for women.</p>Evento Católico esperado por miles de mujeres que desean vivir 2 días maravillosos alabando y bendiciendo a Dios, para entregar sus cargas y salir con nuevas fuerzas a cumplir su misión como mujeres renovadas en una sociedad tan necesitada de Dios.\",,true,$35 Admission Fee + $6 shipping & handling. / Paid parking available on-site. Park in South Hall parking garage.,,,,\n248201,Los Angeles Convention Center - LA Auto Show 2017,12/08/2017 09:00:00 AM,12/08/2017 10:00:00 PM,Shows & Conventions,Convention Center,LA Auto Show Tickets (https://laautoshow.com/tickets/#general-admission),Los Angeles Convention Center,\"1201 S Figueroa St\nLos Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-la-auto-show-2017-6,,,,\"<p>Whether you’re in-market for a new vehicle or planning for the future, the LA Auto Show is your one-stop-shop for comparison shopping cars, trucks, SUVs, electric vehicles and concepts. Hassle-free, stress-free, and about 1,000 vehicles to choose from.  Outside the LA Convention Center, attendees can enjoy pressure-free test drives of nearly 100 of the latest models.  ”The Garage\"\" - accessible via South Hall Atrium’s escalators - is one of the world's largest and most eclectic collections of renowned tuners, customizers, aftermarket goods and exotics.  While the adults shop, there is plenty for the kids to experience. From video games, virtual reality demos, and kids’ play zones, there is plenty to keep them entertained. Tickets for children ages 6-12 are $5 and children under 6 are free with a paying adult.</p>\",,true,Child (6-12): $5; Adult (13-64): $15; Senior (65+): $10 / Paid parking available.,,,,\n343481,\"Office of Community Beautification ~ Office of Councilmember Curren D. Price, Jr.\",07/14/2018 09:00:00 AM,07/14/2018 01:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),South Park,\"345 East 51st Street\nLos Angeles, CA 90011\n(33.996555, -118.267409)\",https://calendar.lacity.org/event/office-community-beautification-office-councilmember-curren-d-price-jr-0,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,,,https://calendar.lacity.org/sites/g/files/wph721/f/south%20park%20clean%20up.pdf\n274936,Women Trailblazers: Panel Presentation Empowering Women and Girls of Los Angeles,02/10/2018 01:30:00 PM,02/10/2018 02:30:00 PM,\"General Events, Family Activity\",El Pueblo,,America Tropical Interpretive Center on Olvera Street,\"626 North Main Street\nLos Angeles, CA 90012\n(34.057174, -118.238827)\",http://calendar.lacity.org/event/women-trailblazers-panel-presentation-empowering-women-and-girls-los-angeles,,,,<p>Engage in a panel discussion with four outstanding Los Angeles-based leaders who continue to achieve success in non-traditional careers. </p>,,false,,,All,Residents,http://calendar.lacity.org/sites/g/files/wph721/f/Empowering%20Women.jpg\n349711,Los Angeles Convention Center - HACLA Agency Plan Public Hearing,08/16/2018 05:00:00 PM,08/16/2018 07:00:00 PM,General Events,Convention Center,HACLA (http://www.hacla.org/),Los Angeles Convention Center,\"1201 S Figueroa St\nLos Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-hacla-agency-plan-public-hearing,,,,,,false,,,,,\n236026,Los Angeles Convention Center - Ski Dazzle 2017,11/19/2017 12:00:00 PM,11/19/2017 06:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,Ski Dazzle (http://www.skidazzle.com/show-buy-tickets.htm),Los Angeles Convention Center,\"1201 S Figueroa St\nKentia Hall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-ski-dazzle-2017-1,,,,\"<p>54th Annual presentation of North America’s Largest Consumer Ski & Snowboard Show & Sale</p><p>The Los Angeles Ski Show & Snowboard Expo® features 4 Football Fields of Resorts, Lodging, Accessories and Retail bargains up to 70% off.  Ski Dazzle® has informative seminars, prizes, entertainment, lessons and more!  The Show truly is “A World of Skiing & Snowboarding Under One Roof™”</p>\",,true,,,,,\n264696,Los Angeles Convention Center - Labor Law & Arbitration Institute Seminar,01/10/2018 08:00:00 AM,01/10/2018 03:30:00 PM,General Events,Convention Center,Labor Arbitration Institute (https://www.laborarb.com/Conference-Details.cfm?ConferenceID=140),Los Angeles Convention Center,\"1201 S Figueroa St\nLos Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-labor-law-arbitration-institute-seminar,,,,\"<p>Attorneys and HR professionals can earn credit toward their licenses and certification. The number of credits for attorneys depends on the state. Please let us know on the registration form where you hold a license. (Most often, it is 7.0 CLE credits.)This program has been approved for 7.0 recertification credit hours through the HR Certification Institute. For more information about certification or recertification, please visit <a href=\"\"https://www.hrci.org/\"\" target=\"\"_blank\"\">www.hrci.org</a>. This program is valid for 7.0 PDCs for the SHRM-CPsm or SHRM-SCPsm. For more information about certification or recertification, please  visit <a href=\"\"https://www.shrm.org/certification/pages/default.aspx\"\" target=\"\"_blank\"\">www.shrmcertification.org</a></p>\",,true,$375 / Register on-line. / Paid on-site parking available.,,,,\n257166,Board of Public Works Agenda,12/15/2017 10:00:00 AM,12/15/2017 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86117227_12152017.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-285,,,,,,false,,,,,\n311191,Board of Public Works Agenda,05/07/2018 10:00:00 AM,05/07/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86120850_05072018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-424,,,,,,false,,,,,\n336041,Los Angeles Convention Center - The Legendary Unlimited Break Talent Show,07/22/2018 02:00:00 PM,07/22/2018 02:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,The Legendary Unlimited Break Talent Show (http://www.roweentertainment.com/event/the-legendary-unlimited-break-talent-show-4/),Los Angeles Convention Center,\"1201 S Figueroa St Theater\nLos Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-legendary-unlimited-break-talent-show-0,,,,\"<h1>The Legendary Unlimited Break Talent Show</h1><div><div><div><p>The trademark of Rowe Entertainment; since 1991, The Legendary Unlimited Break Talent Show has been providing a platform for unsigned talent to showcase themselves in front of an audience as well as executives and other insiders from the entertainment industry.  Many notable artists and entertainers have either competed in, performed at, and/or attended The Legendary Unlimited Break Talent Show.  Some include: Tyrese Gibson, Montell Jordan, Emenim, Ice Cube, K-Dee of the Lench Mobb, Spider Loc, Mix Master Spade, Kevin Spencer of Dynasty, Nicholas Caldwell of the Whispers, Spike Lee, LL Cool J, ” The Immortal”  James Brown, Coko of SWV, Ice-T, Marques Houston, Yo-Yo, Shade Sheist, KXNG Crooked , Jay Rock, Big Wy, and so many more.  A plethora of entertainment companies have attended and continue to attend and network at our show.  Regular attendees include but are not limited to Warner Bros. Records, Universal Music Group, Revolt TV, 102.3FM Radio Free KJLH, and more.</p><p>The Legendary Unlimited Break Talent Show is regularly held at the Los Angeles Convention Center in downtown Los Angeles, CA.  We have also added a Grand Prize of $1,300 in cash as well a single recording released on one our labels (Rowe Records, From Above Records, or SlopJar Records) and distributed through WWDA (WorldWide Distribution of America) to be awarded the winner of the show.   AUDITIONS ARE FREE, ticket sales are required to compete.  For info on our next show date, call us or go to our facebook page. If you’d like to schedule an audition, please feel free to fill out the contact form below.  Or, you can do it the old fashioned way by simply giving us a call at 562-618-2107. And as always, “Never, Ever, Give Up On Your Dreams!”</p></div></div></div>\",,true,$15 / Paid parking available on site.,,,,\n306696,Los Angeles Convention Center - Ultimate Women's Expo,05/20/2018 11:00:00 AM,05/20/2018 05:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,,Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-ultimate-womens-expo-10,,,,\"<p>You've been balancing a busy life and it's time to grab your girlfriends and enjoy free manicures, facials, exciting makeovers, high fashion runway shows, hair makeover stage, amazing spa treatments and massages. Indulge in lots of free samples, gourmet tastings and delicacies. Discover the season's best from luxury boutiques to emerging designers. We scour the world searching for the very best products and services, and to bring hundreds of these amazing companies together.</p><p>We've gathered the very best leading companies, boutiques and brands together to bring a new level of women's expo to Los Angeles. Never before have there been so many great reasons to visit a Women's Expo - The Ultimate Women's Expo.</p>\",,true,Ticket Price: $10 / Paid parking available on site at the South Hall parking garage.,,,,\n229776,Los Angeles Convention Center - American Society of Landscape Architects Annual Conference,10/22/2017 07:00:00 AM,10/22/2017 07:00:00 PM,General Events,Convention Center,ASLA (https://www.aslameeting.com/),Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-american-society-landscape-architects-annual-conference-1,,,,,,true,Paid registration.  See ASLA website for details.,,,,\n362526,Office of Community Beautification - Gilmore St Clean-Up,09/05/2018 09:00:00 AM,09/05/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,OCB (http://dpw.lacity.org/office-community-beautification),,\"14535 Gilmore St\nVan Nuys, CA 91411\n(34.187648, -118.450059)\",https://calendar.lacity.org/event/office-community-beautification-gilmore-st-clean,Leslie Shim,213-978-0227,leslie.shim@lacity.org,,,false,,,All,,\n272976,\"Office of Community Beautification ~ Office of Councilmember Curren D. Price, JR.\",01/27/2018 09:30:00 AM,01/27/2018 01:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),The New 9th,\"5413 South Avalon Boulevard\nLos Angeles, CA 90011\n(33.992909, -118.265198)\",https://calendar.lacity.org/event/office-community-beautification-office-councilmember-curren-d-price-jr,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,\n279626,Office of Community Beautification - LAHSA Campus Beautification Day,03/03/2018 08:00:00 AM,03/03/2018 11:00:00 AM,Culture & Community,Office of Community Beautification,,LAHSA,\"701 S Catalina St\nLos Angeles, CA 90005\n(34.059709, -118.295411)\",https://calendar.lacity.org/event/office-community-beautification-lahsa-campus-beautification-day,Anna Ruiz,213-978-0231,Anna.Ruiz@lacity.org,,,false,,,,,\n255971,Board of Public Works Agenda,12/13/2017 10:00:00 AM,12/13/2017 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86117131_12132017.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-282,,,,,,false,,,,,\n347016,Board of Public Works Agenda,07/25/2018 10:00:00 AM,07/25/2018 10:00:00 AM,City Government,Board of Public Works,,,,http://calendar.lacity.org/event/board-public-works-agenda-495,,,,,,false,,,,,\n365656,Office of Community Beautification ~ Holmes Elementary School,09/19/2018 09:00:00 AM,09/19/2018 03:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Holmes Elementary School,\"5108 Holmes Avenue\nLos Angeles, CA 90007\n(33.995204, -118.241122)\",https://calendar.lacity.org/event/office-community-beautification-holmes-elementary-school,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,\n283036,Office of Community Beautification - Cesar Chavez Day of Service Cleanup ,03/17/2018 09:00:00 AM,03/17/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Aldama Elementary School,\"632 N Ave\nLos Angeles, CA 90042\",https://calendar.lacity.org/event/office-community-beautification-cesar-chavez-day-service-cleanup,Leslie Shim,213-978-0227,leslie.shim@lacity.org,,Culture and Community,false,,,All,,\n349741,Los Angeles Convention Center - International Housing Show,08/26/2018 10:00:00 AM,08/26/2018 06:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,EventBrite Ticket Purchase (https://www.eventbrite.com/e/2018-international-housing-show-tickets-46542622236),Los Angeles Convention Center,\"1201 S Figueroa St\nConcourse EF Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-international-housing-show-0,,,,,,true,Admission Fee: $35 - $89 / Paid parking available on site.,,,,\n314106,\"What the Eyes Don’t See:  A Story of Crisis, Resistance, and Hope in an American City\",07/11/2018 07:30:00 PM,07/11/2018 09:00:00 PM,Arts,\"Library, Los Angeles Public\",http://www.lapl.org/whats-on/events/what-eyes-don%E2%80%99t-see-story-crisis-resistance-and-hope-american-city,Central Library,\"630 W 5th Street\nLos Angeles, CA 90071\n(34.050931, -118.254965)\",http://calendar.lacity.org/event/what-eyes-don’t-see-story-crisis-resistance-and-hope-american-city,,,,\"<p><a href=\"\"http://lfla.org/event/what-the-eyes-dont-see/\"\">What the Eyes Don’t See: A Story of Crisis, Resistance, and Hope in an American City</a></p><p>Dr. Mona Hanna-Attisha</p><p>In conversation</p><p> </p><p>The dramatic story of the Flint water crisis is one of the signature environmental disasters of our time—and at the heart of this tragedy is an inspiring tale of scientific resistance by a relentless physician and whistleblower who stood up to power. What the Eyes Don’t See is the personal story of how Dr. Mona Hanna-Attisha—accompanied by an idiosyncratic team of researchers, parents, friends, and community leaders—proved that Flint’s kids were exposed to lead despite the state’s assurance that the water was safe. Paced like a scientific thriller, Dr. Mona’s new book shows how misguided austerity policies, the withdrawal of democratic government, and callous bureaucratic indifference placed an entire city at risk. Named one of Time magazine’s 100 Most Influential People in the World in 2016, Dr. Mona will visit ALOUD to share her journey as an Iraqi-American immigrant, doctor, scientist, and mother whose family’s activist roots sparked her pursuit of justice—a fight for the children of Flint that she continues today.</p>\",,false,,http://calendar.lacity.org/sites/g/files/wph721/f/eventhanna-attisha.jpg,\"Adult, Senior\",,\n306701,Los Angeles Convention Center - WINA Festival 2018,05/31/2018 08:00:00 AM,05/31/2018 08:00:00 PM,General Events,Convention Center,WINA Festival 2018 (http://winafestival.com/en/),Los Angeles Convention Center,\"1201 S Figueroa St\nLos Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-wina-festival-2018,,,,\"<p>WINA is the event that honors the leading independent, multinational agencies and networks across the world. The WINA goes beyond a festival, is a movement that wants to give greater credibility and reputation to the independent industry. Backed up with a group of 90 juries from the five continents and acknowledged by their transparency, willingness to change, ethics and values on which this Festival is created.</p><p>The activities of WINA are:</p><ul><li>Trending Workshop for students</li><li>Elite Forum For advertising and marketing professionals</li><li>WINA 2018 Award Ceremony</li><li>World Festival of Talented Youth</li><li>16 International Conferences</li><li>Trade Fair</li><li>Closing Party</li></ul><p>The event is mainly for business people; founders, CEOs or directors from advertising agencies; digital and media agencies; public relations companies; developers of applications or digital platforms; influencers from the fields of marketing, advertising or social media, and media outlets specialized in related areas, also, strategic and accounts directors, creative and artistic directors, freelancers, suppliers from the media, print and digital industries, and finally, students, professors and directors in marketing, advertising, communication and graphic design.</p>\",,true,Ticket Prices: $150-$750 / / Paid parking available on site.,,,,\n235801,Los Angeles Convention Center - SoCal Innovation Forum,11/04/2017 08:30:00 AM,11/04/2017 06:00:00 PM,General Events,Convention Center,SoCal Innovation Forum Tickets (https://www.eventbrite.com/e/the-6th-socal-innovation-forumsif-2017-tickets-37409344356?aff=lacc1),Los Angeles Convention Center,\"1201 S Figueroa St\nConcourse Hall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-socal-innovation-forum,,,,\"<p>SoCal Innovation Forum (SIF) is the most influential cross-border forum integrating Chinese and American resources in the Southern California entrepreneur community. SIF has been creating connection opportunities among Chinese and American capital, industrial chain, and emerging industry leaders since 2011. For the past 5 years, SIF has attracted accumulatively 2700+ attendees, 600+ industry leaders and executives, 250+ startups, 40+ team demos, and 325M+ social impressions.</p><p>On Nov. 4th at Concourse Hall, the 6th SIF will be featuring the \"\"Content X Tech\"\" innovations at the world-famous tech hub Silicon Beach. We will explore the hottest technologies like AI, VR/AR, Blockchain, etc., and discuss how such new technologies will transform content industries like digital media, film, and gaming.</p><p>PlusYoou is a 501(C)(3) non-profit organization bridging business resources between China and U.S. Founded in 2011, PlusYoou has organized more than 100 forums and events, incubated more than 200 start-ups, raised over 20 million dollars of angel fund, and built a pool of over 6000 talents. At the rising of Silicon Beach, PlusYoou has been hosting the SoCal Innovation Forum since 2012, which has become the signature event for industry leaders, entrepreneurs, and investors in Southern California. PlusYoou is dedicated to creating value for the start-up community by bringing the best opportunities and ideas out of both China and U.S.</p>\",,true,$40.30 - $388.  Please go to Eventbrite link for details.  No refunds.,,,,\n363151,Office of Community Beautification - Clean Communities,09/21/2018 08:00:00 AM,09/21/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,OCB (http://dpw.lacity.org/office-community-beautification),Unidos Por NELA,\"Division - Frederick Los Angeles, CA 90065\n(34.109642, -118.226785)\",https://calendar.lacity.org/event/office-community-beautification-clean-communities,Leslie Shim,213-978-0227,leslie.shim@lacity.org,,,false,,,All,,\n234051,Board of Public Works Special Agenda,10/18/2017 10:00:00 AM,10/18/2017 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86115852_10182017.htm,,,http://calendar.lacity.org/event/board-public-works-special-agenda-24,,,,,,false,,,,,\n235726,Office of Community Beautification ~ West Adams Prep High School,03/03/2018 08:30:00 AM,03/03/2018 12:30:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),West Adams High School,\"1500 West Washington Boulevard\nLos Angeles, CA\n(34.04001, -118.289685)\",https://calendar.lacity.org/event/office-community-beautification-west-adams-prep-high-school-4,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,\n319531,Board of Public Works Supplemental Agenda,06/06/2018 11:00:00 AM,06/06/2018 11:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86121774_06062018.htm,,,http://calendar.lacity.org/event/board-public-works-supplemental-agenda-2,,,,,,false,,,,,\n324836,Los Angeles Convention Center - Anime Expo 2018,07/05/2018 10:00:00 AM,07/05/2018 06:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,Anime Expo (http://www.anime-expo.org/),Los Angeles Convention Center,\"1201 S Figueroa St\nLos Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-anime-expo-2018,,,,\"<p>Anime Expo (AX) brings together fans and industry from Japan, the US, and all over the world for the largest celebration of Japanese pop culture in North America. Taking place every year since 1992, Anime Expo features the best in Japanese entertainment, music, fashion and video games. For more information, visit <a href=\"\"http://www.anime-expo.org/\"\">www.anime-expo.org</a>.</p><p>*Doors open at 10:00am everyday.</p>\",,false,,,,,\n248766,Anytime Fitness 5K Turkey Run,11/19/2017 07:30:00 AM,11/19/2017 11:00:00 AM,\"Culture & Community, General Events\",Cultural Affairs,https://turkeyrunchatsworth.com/,Santa Susana Pass State Historic Park,\"9853 Andora Ave\nChatsworth, CA 91311\n(34.249167, -118.620079)\",https://calendar.lacity.org/event/anytime-fitness-5k-turkey-run,,818-349-0349,ChatsAFevents@gmail.com,\"<p>First annual Turkey Run 5K on Sunday November 19th! Bring your family and friends to take part in this event that is also a fundraiser for the Boys and Girls Club.</p><p>For all information and registration, please visit the website.</p>\",,true,,https://calendar.lacity.org/sites/g/files/wph721/f/map2.jpg,All,,\n309541,Office of Community Beautification ~ Accelerated School,05/12/2018 09:00:00 AM,05/12/2018 01:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Accelerated School,\"4000 South Main Street\nLos Angeles, CA 90037\n(34.010421, -118.273999)\",https://calendar.lacity.org/event/office-community-beautification-accelerated-school,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,\n349731,Los Angeles Convention Center - ScareLA,08/26/2018 11:00:00 AM,08/26/2018 06:00:00 PM,\"General Events, Shows & Conventions, Family Activity\",Convention Center,ScareLA (https://scarela.com/),Los Angeles Convention Center,\"1201 S Figueroa St\nLos Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-scarela-2,,,,\"<p>ScareLA™ premiered in 2013 as the first convention to bring Halloween to the summer. Situated in the entertainment capital of the world, it combines the city’s top talent and unique setting with a twist! The con kicks off the scare season and unveils the hottest attractions and products in SoCal. Mingle with thousands of fans, haunt entertainment professionals, top scare event designers and operators, makers, artists and filmmakers. Enjoy a weekend jam-packed with Halloween season teasers, attraction unveils, classes, industry panels, haunt tours, screenings, cosplay and games. Share, inspire, play – ScareLA! </p>\",,true,Fees range from $30 - $250.  See ScareLA website for details. / Paid parking available on site.,,,,\n262716,Board of Public Works Agenda,01/03/2018 10:00:00 AM,01/03/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86117509_01032018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-292,,,,,,false,,,,,\n247626,Board of Public Works Agenda,11/17/2017 10:00:00 AM,11/17/2017 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86116545_11172017.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-255,,,,,,false,,,,,\n342686,Board of Public Works Agenda,07/13/2018 10:00:00 AM,07/13/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86122800_07132018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-486,,,,,,false,,,,,\n357796,Harbor City NC Board & Stakeholder Meeting,08/15/2018 10:00:00 AM,08/15/2018 10:00:00 AM,\"ENS - Neighborhood Council, City Government\",,http://ens.lacity.org/ensnc/harborcitync/ensncharborcitync788123660_08152018.pdf,,,http://calendar.lacity.org/event/harbor-city-nc-board-stakeholder-meeting-3,,,,,,false,,,,,\n326441,Office of Community Beautification - Oakwood Cleanup,06/23/2018 09:00:00 AM,06/23/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,,Children's Bureau,\"3910 Oakwood Avenue\nLos Angeles, CA 90004\n(34.077675, -118.292362)\",https://calendar.lacity.org/event/office-community-beautification-oakwood-cleanup,Anna Ruiz,213-978-0231,Anna.Ruiz@lacity.org,,,false,,,,,\n235751,Los Angeles Convention Center - Franchise Expo West,11/03/2017 10:00:00 AM,11/03/2017 04:00:00 PM,General Events,Convention Center,Franchise Expo West (http://www.franchiseexpowest.com/),Los Angeles Convention Center,\"1201 S Figueroa St West\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-franchise-expo-west-0,Steve Gross (Registration),201-881-1644,,\"<p>The 2017 Franchise Expo West will bring thousands of potential franchise owners face-to-face with the nation’s top brands. See franchise concepts in every industry and at every investment level, starting as low as $5,000. Attend over 60 free seminars or our in-depth workshops on topics from The A to Z’s of Buying a Franchise to Social Networking + Data In Franchising, plus get access to a network of lenders and small business advisors. Register for free with promo code “LACC” at www.FranchiseExpoWest.com.</p>\",,true,Registration required.  Please go to Franchise Expo West for details.,,,,\n324946,Board of Public Works Agenda,06/18/2018 10:00:00 AM,06/18/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86122157_06182018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-464,,,,,,false,,,,,\n278486,Office of Community Beautification ~  Community Clean-up @ Averill Park,02/17/2018 08:00:00 AM,02/17/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Averill Park,\"1300 South Dodson Avenue\nSan Pedro, CA 90732\n(33.732482, -118.311877)\",https://calendar.lacity.org/event/office-community-beautification-community-clean-averill-park,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,\n356511,Office of Community Beautification ~ LA Family Housing,08/17/2018 10:00:00 AM,08/17/2018 11:00:00 AM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),LA Family Housing,\"207 North Breed Street\nLos Angeles, CA 90033\n(34.045829, -118.209921)\",https://calendar.lacity.org/event/office-community-beautification-la-family-housing,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,\n314116,\"The Heritage:  Black Athletes, a Divided America, and the Politics of Patriotism\",06/19/2018 07:30:00 PM,06/19/2018 09:00:00 PM,Arts,\"Library, Los Angeles Public\",http://www.lapl.org/whats-on/events/heritage-black-athletes-divided-america-and-politics-patriotism,Central Library,\"630 W 5th Street\nLos Angeles, CA 90071\n(34.050931, -118.254965)\",http://calendar.lacity.org/event/heritage-black-athletes-divided-america-and-politics-patriotism,,,,\"<p><a href=\"\"http://lfla.org/event/the-heritage/\"\">The Heritage: Black Athletes, a Divided America, and the Politics of Patriotism</a></p><p>Howard Bryant and John Carlos</p><p>In conversation with Dr. Todd Boyd, Professor of Cinema and Media Studies, USC</p><p> </p><p>For most of the twentieth century, politics and sports were as separate as church and state. Today, with the transformation of a fueled American patriotism, sports and politics have become increasingly more entwined. However, as sports journalist Howard Bryant explores in his new book, this has always been more complicated for black athletes, who from the start, were committing a political act simply by being on the field. Bryant’s new book The Heritage traces the influences of the radical politics of black athletes over the last 60 years, starting with such trailblazers like Paul Robeson, Jackie Robinson, Muhammad Ali, as well as Tommie Smith and John Carlos —the track stars who 50 years ago this summer made world history for raising their fists with bowed heads while receiving the gold and bronze medals at the 1968 Olympics in Mexico City. This peaceful protest instantaneously became a historical symbol of the flight for human rights, although the athletes faced a severe black lash. In a timely conversation moderated by Dr. Todd Boyd, Bryant and Carlos will discuss the collision of sports and political culture, kneeling for the national anthem, and the fervent rise of the athlete-activist.</p>\",,false,,http://calendar.lacity.org/sites/g/files/wph721/f/eventbryant.jpg,\"Adult, Senior\",,\n273881,Office of Community Beautification ~ Van Nuys Community Cleanup ,02/10/2018 09:00:00 AM,02/10/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),,\"6833 Van Nuys Blvd\nVan Nuys, CA 91405\n(34.194816, -118.448799)\",https://calendar.lacity.org/event/office-community-beautification-van-nuys-community-cleanup-1,Ana Huizar,213-978-0224,ana.huizar@lacity.org,,Culture and Community,false,,,All,,\n276696,Office of Community Beautification ~ Christ Chapel Cleanup ,02/11/2018 11:30:00 AM,02/11/2018 02:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),,\"Sherman Way Los Angeles, CA 91352\n(34.226115, -118.368817)\",https://calendar.lacity.org/event/office-community-beautification-christ-chapel-cleanup,Ana Huizar,213-978-0224,ana.huizar@lacity.org,,Culture and Community,false,,,All,,\n294891,\"Los Angeles Convention Center - Metanoia de Mujeres, El Sembrador Ministries\",04/15/2018 08:00:00 AM,04/15/2018 06:00:00 PM,General Events,Convention Center,El Sembrador Ministries (https://elsembradorministries.com/eventos/event/metanoia-de-parejas-2018/),Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-metanoia-de-mujeres-el-sembrador-ministries,,,,,,true,$35 Donation / paid parking available on site (South Hall parking garage),,,,\n324781,Office of Community Beautification - Malabar Library Cleanup,06/16/2018 09:00:00 AM,06/16/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,,Malabar Library,\"2801 Wabash Avenue\nLos Angeles, CA 90033\n(34.050468, -118.197992)\",https://calendar.lacity.org/event/office-community-beautification-malabar-library-cleanup,Anna Ruiz,213-978-0231,Anna.Ruiz@lacity.org,\"<p>Landscaping planters, sweeping up trash.</p>\",,false,,,,,\n240576,Office of Community Beautification ~ Community Cleanup,12/02/2017 09:00:00 AM,12/02/2017 12:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Council District 6,\"15638 Saticoy St\nLos Angeles, CA 91406\n(34.208261, -118.474076)\",https://calendar.lacity.org/event/office-community-beautification-community-cleanup-2,Ana Huizar,213-978-0224,ana.huizar@lacity.org,,Culture and Community,false,,,All,,\n248496,37TH ANNUAL SPIRIT OF SAN PEDRO HOLIDAY PARADE,12/03/2017 01:00:00 PM,12/03/2017 03:00:00 PM,\"Culture & Community, Fairs & Festivals, Holiday & Seasonal, Family Activity\",Port of Los Angeles,https://www.spholidayparade.com/,,\"13th Street\nSan Pedro, CA 90731\",https://calendar.lacity.org/event/37th-annual-spirit-san-pedro-holiday-parade,San Pedro Chamber of Commerce,310-832-7272,kelly@sanpedrochamber.com,\"<p>The San Pedro Chamber of Commerce is proud to announce that the annual Spirit of San Pedro Holiday Parade will be celebrating its 37th year on Sunday, December 3, 2017 from 1:00 to 3:00 pm!</p><p>Each year, this festive tradition brings families, little leagues, scouts, students, high school bands, equestrian units, and volunteers to downtown San Pedro to celebrate the holiday season and our community.  More than 9,000 individuals will line the streets to view the parade.</p><p>The annual parade is made possible through the generous support of our community. This event is presented by the San Pedro Chamber of Commerce and is a free event to the community.</p>\",,false,,https://calendar.lacity.org/sites/g/files/wph721/f/2768be_e0969d2adaf642b6a439b42cb30270d3.jpg,All,,\n276861,Los Angeles Convention Center - Bride World,02/10/2018 10:00:00 AM,02/10/2018 04:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,Bride World (https://www.brideworld.com/),Los Angeles Convention Center,\"1201 S Figueroa St\nConcourse Hall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-bride-world-1,,,,\"<p>Don't miss California's Bridal Super Show with over 150 wedding venues, photographers, entertainers, florists, bridal salons, invitations, photo booths, tuxedos, disc jockeys, event lighting, vintage decor, and honeymoon destinations. Find unique bargains and inspiration at your own pace. Enjoy fashion shows. Gather complimentary literature and magazines. Ask questions at the DIY Seminar. Shop the giant Gown Sale with hundreds of new gowns at drastically reduced prices. Register (RSVP) now to reserve free correspondence labels and an expo shopping bag. Advance tickets are 50% off now and $12 per person at the expo. Online at <a href=\"\"http://www.brideworld.com/\"\" target=\"\"_blank\"\">http://www.brideworld.com/</a></p>\",,true,$12 Admission / Paid parking available on site.,,,,\n324211,Los Angeles Convention Center - GTSM Sports Card & Autograph Experience,07/01/2018 11:00:00 AM,07/01/2018 07:00:00 PM,General Events,Convention Center,GTSM (http://www.gtsportsmarketing.com/),Los Angeles Convention Center,\"1201 S Figueroa St\nPetree Hall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-gtsm-sports-card-autograph-experience-1,,,,,,false,,,,,\n240861,Office of Community Beautification ~ Clean Streets LA Challenge,11/18/2017 08:00:00 AM,11/18/2017 12:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Westlake North Neighborhood Council,\"S Columbia Ave Los Angeles, CA 90017\n(34.052895, -118.2642)\",https://calendar.lacity.org/event/office-community-beautification-clean-streets-la-challenge,Ana Huizar,213-978-0224,ana.huizar@lacity.org,,Culture and Community,false,,,All,,\n282961,Los Angeles Convention Center - Build Expo 2018,03/15/2018 10:00:00 AM,03/15/2018 03:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,Build Expo 2018 (http://buildexpousa.com/LosAngeles_Education.html),Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Meeting Rooms Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-build-expo-2018-0,,,,<p>Attendees must register on-line. Go to http://buildexpousa.com/LosAngeles_Education.html</p>,,true,\"free admission, must register on-line / paid parking available on site\",,,,\n306306,Councilmember in You Corner: Hollywood 4/28/18,04/28/2018 09:00:00 AM,04/28/2018 12:00:00 PM,\"General Events, City Government, Family Activity\",Council District 13,Councilmember Mitch O'Farrell CYC (http://www.cd13.com),Uplift Family Services/Hollygrove,\"815 N El Centro Ave\nLos Angeles, CA 90038\n(34.085821, -118.324433)\",https://calendar.lacity.org/event/councilmember-you-corner-hollywood-42818,Sylvan De La Cruz,213-207-3015,sylvan.delacruz@lacity.org,\"<p>My next next Councilmember in your Corner will take place Saturday April 28th, 2018 at Uplift Family Services at Hollygrove, 815 N. El Centro Avenue, Los Angeles CA 90038.  The Council District 13 Clean Team will be on hand, as well as neighborhood volunteers, who will help spruce up the area near Waring Avenue and Gregpry Avenue. Please join us!</p><p>Time:Saturday April 28th, 2018</p><p>        <strong> 9:30am - 12:00pm</strong></p><p>Location: <strong>Uplift Family Services at Hollygrove</strong> </p><p>                <strong>815 N. El Centro Avenue, Los Angeles CA 90038</strong></p>\",,false,,https://calendar.lacity.org/sites/g/files/wph721/f/CYC%20April%202018%20%28Hollywood%29-page-001_0.jpg,,,https://calendar.lacity.org/sites/g/files/wph721/f/CYC%20April%202018%20%28Hollywood%29-page-001.jpg\n265376,Los Angeles Convention Center - Cheerleading Championships Competition,01/14/2018 08:00:00 AM,01/14/2018 09:45:00 PM,General Events,Convention Center,GSSA (http://www.gssaonline.com/),Los Angeles Convention Center,\"1201 S Figueroa St South Hall K\nMeeting Rooms Los Angeles, CA 90015\",https://calendar.lacity.org/event/los-angeles-convention-center-cheerleading-championships-competition-0,,,,,,true,$20 1-day pass / $35 2-day pass (plus service fees) / Paid parking available on site.,,,,\n279411,Office of Community Beautification ~ Mt. Washington Elementary School Cleanup ,03/10/2018 08:00:00 AM,03/10/2018 11:00:00 AM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Mt. Washington Elementary School,\"3981 San Rafael Ave\nLos Angeles, CA 90065\n(34.104463, -118.215545)\",https://calendar.lacity.org/event/office-community-beautification-mt-washington-elementary-school-cleanup-0,Ana Huizar,213-978-0224,ana.huizar@lacity.org,,Culture and Community,false,,,All,,\n230371,Office of Community Beautification - Councilmember Wesson's Office - MINC,10/14/2017 08:00:00 AM,10/14/2017 12:00:00 PM,Culture & Community,Office of Community Beautification,,West Bl. Bridge Clean-Up,\"West Bl\nLos Angeles, CA 90019\",https://calendar.lacity.org/event/office-community-beautification-councilmember-wessons-office-minc,Anna Ruiz,213-978-0231,Anna.Ruiz@lacity.org,,,false,,,,,https://calendar.lacity.org/sites/g/files/wph721/f/Bridge%20Clean%20Up_2.pdf\n339981,Board of Public Works Agenda,07/11/2018 10:00:00 AM,07/11/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86122664_07112018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-482,,,,,,false,,,,,\n265616,Los Angeles Convention Center - Simulation Healthcare IMSH 2018 Annual Meeting,01/14/2018 11:00:00 AM,01/14/2018 10:00:00 PM,General Events,Convention Center,IMSH (http://imsh2018.com/attendees/registration-exhibit-fees),Los Angeles Convention Center,\"1201 S Figueroa St\nLos Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-simulation-healthcare-imsh-2018-annual-meeting,,,,,,true,$250 - $1125 See website for details. / Registration required. / Paid parking available on site.,,,,\n235781,Los Angeles Convention Center - The Real Estate Wealth Expo,11/04/2017 08:00:00 AM,11/04/2017 06:45:00 PM,General Events,Convention Center,The Real Estate Wealth Expo (https://realestatewealthexpo.com/losangeles),Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-real-estate-wealth-expo,,,questions@realestatewealthexpo.com,\"<p>LA’s LARGEST REAL ESTATE WEALTH EXPO</p><p>Our Real Estate Wealth Expos are high-energy experiences for investors, home owners, realtors, entrepreneurs, sales people, celebrities, and fans to come together and learn 100’s of ways to make money!</p><p>Featuring: 3-hour training with Tony Robbins; Genius Talk with Earvin “Magic” Johnson, a special live performance by Pitbull, personal finance guru Suze Orman; and more than 28 non-stop classes on real estate, investing and sales.</p><p>Registration required.  Attendees must be 18 years or older.</p>\",,true,Registration required.  Please go to The Real Estate Wealth Expo for details.,,Adult,,\n349701,Los Angeles Convention Center - KCON 2018,08/11/2018 10:00:00 AM,08/11/2018 06:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,KCON 2018 (http://www.kconusa.com/),Los Angeles Convention Center,\"1201 S Figueroa St\nLos Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-kcon-2018-0,,,,,,true,Convention Tickets: $30 + processing fee / See KCON website for concert ticket information. / Paid parking available on site.,,,,\n276626,Office of Community Beautification - WLASNC Sawtelle Japantown FLASH CLEAN,02/18/2018 09:00:00 AM,02/18/2018 10:00:00 AM,Culture & Community,Office of Community Beautification,,,\"2068 Sawtelle\nBl Los Angeles, CA 90025\n(34.039691, -118.442555)\",https://calendar.lacity.org/event/office-community-beautification-wlasnc-sawtelle-japantown-flash-clean,Anna Ruiz,213-978-0231,Anna.Ruiz@lacity.org,,,false,,,,,\n264641,LAPD Valley Traffic Division - BLOOD DRIVE,01/22/2018 10:00:00 AM,01/22/2018 05:00:00 PM,Family Activity,Police,http://www.redcrossblood.org,Bloodmobile,\"7870 Nollan Place\nPanorama City, CA 91402\n(34.213609, -118.445015)\",http://calendar.lacity.org/event/lapd-valley-traffic-division-blood-drive,,,,\"<p><strong>To Schedule Your Life-Saving Appointment:</strong></p><p><strong>Visit <a href=\"\"http://www.redcrossblood.org/\"\" target=\"\"_blank\"\">www.redcrossblood.org</a> and enter Sponsor Code: BadgeSoCal</strong> to schedule an appointment</p>\",,false,,,,,\n292136,Office of Community Beautification ~ Cesar Chavez Day of Service,04/07/2018 09:00:00 AM,04/07/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Malabar Elementary School,\"3200 East Malabar Street\nLos Angeles, CA 90041\n(34.045223, -118.19509)\",https://calendar.lacity.org/event/office-community-beautification-cesar-chavez-day-service,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,,,https://calendar.lacity.org/sites/g/files/wph721/f/Cesar%20chavez%20Clean%20Up%20flyer%202018-1.pdf\n324861,Los Angeles Convention Center - Beautycon LA 2018,07/15/2018 12:00:00 PM,07/15/2018 06:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,Beautycon (https://beautycon.com/festival/los-angeles/),Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-beautycon-la-2018-0,,,,\"<h2><strong>PLANET BEAUTYCON,<br />A SPACE TO BE YOU</strong></h2><p>Join us for two days of panel discussions, meetups, and infinite inspiration. Celebrate the power of beauty, with more than 500 creators and 100+ brand experiences from your favorite beauty and health & wellness brands. We invite you to break the confines of space and time and skyrocket with us to another planet -- where none of the old rules apply, and everything that you think is beautiful IS.</p>\",,true,\"$50 - $2000, plus processing fees / paid parking available on site\",,,,\n302876,Board of Public Works Agenda,04/20/2018 10:00:00 AM,04/20/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86120409_04202018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-398,,,,,,false,,,,,\n251661,Office of Community Beautification ~ Catalina Street Community Cleanup,12/07/2017 08:00:00 AM,12/07/2017 02:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Catalina Neighborhood Association,\"S Catalina St Los Angeles, CA 90006\n(34.048637, -118.293869)\",https://calendar.lacity.org/event/office-community-beautification-catalina-street-community-cleanup,Ana Huizar,213-978-0224,ana.huizar@lacity.org,,Culture and Community,false,,,All,,\n303226,Office of Community Beautification ~ Los Angeles Neighborhood Land Trust,04/21/2018 09:00:00 AM,04/21/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Fremont Wellness Center,\"7821 South Avalon Blvd\nLos Angeles, CA 90003\n(33.968216, -118.265143)\",https://calendar.lacity.org/event/office-community-beautification-los-angeles-neighborhood-land-trust,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,\n237411,Office of Community Beautification / Eagle Rock Yacht Club (Westside),11/05/2017 10:00:00 AM,11/05/2017 12:00:00 PM,Culture & Community,Office of Community Beautification,,Eagle Rock Yacht Club (Westside),\"Ohio Ave Sepulveda Bl Los Angeles, CA 90025\n(34.045803, -118.445555)\",https://calendar.lacity.org/event/office-community-beautification-eagle-rock-yacht-club-westside,Anna Ruiz,213-978-0231,Anna.Ruiz@lacity.org,,,false,,,,,\n248501,Heart of the Harbor Holiday Parade,12/10/2017 12:00:00 PM,12/10/2017 02:00:00 PM,\"Culture & Community, Holiday & Seasonal, Family Activity\",Port of Los Angeles,https://www.portoflosangeles.org/community/Calendar_2017.asp,,\"E St to M St Wilmington, CA 90731\n(33.73657, -118.287112)\",https://calendar.lacity.org/event/heart-harbor-holiday-parade,,,,<p>Celebrate the Heart of the Harbor and march across Wilmington in the spirit of the holiday season.</p><p>Everyone is invited to come celebrate the season and Wilmington in this all-American event that takes a route across the city before winding up in front of Banning Park.</p><p> </p>,,false,,https://calendar.lacity.org/sites/g/files/wph721/f/Horses-300x225.jpg,All,,\n268606,Office of Community Beautification ~ Haskell Murals Cleanup ,01/26/2018 09:00:00 AM,01/26/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Clean N' Green,\"6509 Haskell Ave\nLos Angeles, CA 91406\n(34.189381, -118.474916)\",https://calendar.lacity.org/event/office-community-beautification-haskell-murals-cleanup,Ana Huizar,213-978-0224,ana.huizar@lacity.org,,,false,,,All,,\n234316,Office of Community Beautification - Cleanup,11/04/2017 08:00:00 AM,11/04/2017 08:00:00 AM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Council District 2 & New Directions for Youth,\"Valleyheart St Studio City, CA 91604\n(34.140912, -118.393166)\",https://calendar.lacity.org/event/office-community-beautification-cleanup,Ana Huizar,213-978-0224,ana.huizar@lacity.org,,Culture and Community,false,,,All,,\n279646,Office of Community Beautification - CD 11 / Mar Vista Post Office Cleanup,02/19/2018 10:00:00 AM,02/19/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,,CD 11,\"3826 Grand View\nBl Los Angeles, CA 90066\n(34.004331, -118.43077)\",https://calendar.lacity.org/event/office-community-beautification-cd-11-mar-vista-post-office-cleanup,Anna Ruiz,213-978-0231,Anna.Ruiz@lacity.org,,,false,,,,,\n365966,Board of Public Works Agenda,09/07/2018 10:00:00 AM,09/07/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86124415_09122018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-540,,,,,,false,,,,,\n285456,Office of Community Beautification ~ Earth Day Clean-Up,04/21/2018 09:00:00 AM,04/21/2018 01:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Wabash Rec Center,\"2765 Wabash Avenue\nLos Angeles, CA\n(34.050576, -118.198235)\",https://calendar.lacity.org/event/office-community-beautification-earth-day-clean,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,https://calendar.lacity.org/sites/g/files/wph721/f/Earth%20day%20cleanup%20April%2021.pdf\n303101,Office of Community Beautification ~ The Great Community Clean-Up,04/28/2018 08:00:00 AM,04/28/2018 01:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Jackie Tatum Harvard Park,\"6120 Denker Avenue\nLos Angeles, CA\",https://calendar.lacity.org/event/office-community-beautification-great-community-clean,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,https://calendar.lacity.org/sites/g/files/wph721/f/Western%20Ave%20Clean%20Up.pdf\n294896,\"Los Angeles Convention Center - Metanoia de Mujeres, El Sembrador Ministries\",04/14/2018 08:00:00 AM,04/14/2018 06:00:00 PM,General Events,Convention Center,El Sembrador Ministries (https://elsembradorministries.com/eventos/event/metanoia-de-parejas-2018/),Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-metanoia-de-mujeres-el-sembrador-ministries-0,,,,,,true,$35 Donation / paid parking available on site (South Hall parking garage),,,,\n294856,Los Angeles Convention Center - 2018 PSO: Pacific Pole Championships,04/07/2018 08:00:00 AM,04/07/2018 10:00:00 PM,General Events,Convention Center,2018 PSO: Pacific Pole Championships (https://www.polesportorg.com/pacific/),Los Angeles Convention Center,\"1201 S Figueroa St\nLos Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-2018-pso-pacific-pole-championships,,,,\"<p>Be inspired by the athleticism, grace, mobility, and fluidity of dance - on a pole. Join Pole Sport Organization, the world's largest professional and amateur pole dance competition, where over 100 dancers will perform at this regional event. Cheer for beginners taking the stage for the first time, to professionals vying to move on to the U.S. National finals.</p><p>5 levels of skill, 5 age groups, 5 categories. Please check website for performer names and division times. We are an all ages event.</p>\",,true,\"Ticket prices starting at $36, go to https://www.polesportorg.com/pacific/ for details / paid parking available on site (West Hall parking garage)\",,,,\n282986,Los Angeles Convention Center - ipsy Gen Beauty,03/24/2018 11:00:00 AM,03/24/2018 05:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,ipsy Gen Beauty (http://ipsygenbeauty.com/los-angeles/),Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-ipsy-gen-beauty,,,,\"<p>ipsy Gen Beauty is where attendees get to bring their passion for self-expression and unique beauty to life! Think: thousands of ipsters, the creators and influencers  you love to follow, and all the top beauty brands that fill up your makeup drawers in one energizing, glamorous, magical space. Every attendee leaves with an epic gift bag (worth over $400!) so you can create endless looks and keep that ipsy Gen Beauty spirit alive.</p>\",,true,\"$169 admission fee, plus fees & taxes / paid parking available on site\",,,,\n366546,Board of Public Works Agenda,09/14/2018 10:00:00 AM,09/14/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86124451_09142018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-543,,,,,,false,,,,,\n235741,Los Angeles Convention Center - Local Control & Continuous Improvement Workshop,11/01/2017 09:00:00 AM,11/01/2017 05:00:00 PM,General Events,Convention Center,California Collaborative for Educational Excellence (http://ccee-ca.org/),Los Angeles Convention Center,\"1201 S Figueroa St\nLos Angeles, DC 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-local-control-continuous-improvement-workshop,,951-472-2233,ccee@ccee-ca.org,\"<p>The California Collaborative for Educational Excellence is hosting a series of all-day workshops on local control and continuous improvement. These workshops are open to ALL audiences - parents/guardians, students, community members, and other local stakeholders as well as superintendents, board members, principals, teachers, and classified staff.</p><p>The primary focus of these workshops is continuous improvement and how to help workshop attendees interpret, understand, and use the new LCFF Evaluation Rubrics as a tool to support such improvement for all students. These workshops will also touch on changes to the Local Control and Accountability Plan (LCAP).</p><p>The workshops are designed for teams coming from the same county office of education, school district, charter school, or other education-focused organization. However, individuals not part of a team are more than welcome and encouraged to attend as well.</p>\",,true,Please go to CCEE website for details or call (951) 472-2233,,,,\n279726,Board of Public Works Agenda,02/28/2018 10:00:00 AM,02/28/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86118922_02282018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-350,,,,,,false,,,,,\n278291,Office of Community Beautification - Sunburst Academy ~ CD 6 ~ SVANC ~ LAPD Cleanup ,02/17/2018 08:00:00 AM,02/17/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),,\"10974 Ratner St\nLos Angeles, CA 91352\n(34.216853, -118.369434)\",https://calendar.lacity.org/event/office-community-beautification-sunburst-academy-cd-6-svanc-lapd-cleanup,Ana Huizar,213-978-0224,ana.huizar@lacity.org,,Culture and Community,false,,,All,,\n294941,Board of Public Works Agenda,04/02/2018 10:00:00 AM,04/02/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86119835_04022018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-380,,,,,,false,,,,,\n363441,Los Angeles Convention Center - Abu Dhabi Grand Slam Jiu-Jitsu Tour 2018,09/23/2018 07:30:00 AM,09/23/2018 08:30:00 PM,\"General Events, Shows & Conventions\",Convention Center,UAE Jiu Jitsu Federation (https://events.uaejjf.org/en/event/120),Los Angeles Convention Center,\"1201 S Figueroa St West\nHall A Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-abu-dhabi-grand-slam-jiu-jitsu-tour-2018-0,,,,<p>General admission free.  Registration required for all competitors. Paid parking available on site.</p>,,false,,,,,\n303031,Office of Community Beautification ~ Little Tokyo Sparkle,05/12/2018 08:00:00 AM,05/12/2018 01:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),JACCC,\"244 South San Pedro Street\nLos Angeles, CA 90012\n(34.048124, -118.242205)\",https://calendar.lacity.org/event/office-community-beautification-little-tokyo-sparkle-0,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,,,https://calendar.lacity.org/sites/g/files/wph721/f/Flyer2018.pdf\n238786,Office of Community Beautification ~ Eagle Rock Yacht Club ~ North side Cleanup,11/05/2017 10:00:00 AM,11/05/2017 12:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Eagle Rock Yacht Club,\"12240 Archwood st\nLos Angeles, CA 91606\n(34.192127, -118.400769)\",https://calendar.lacity.org/event/office-community-beautification-eagle-rock-yacht-club-north-side-cleanup,Ana Huizar,2139780224,ana.huizar@lacity.org,,Culture and Community,false,,,All,,\n229771,Los Angeles Convention Center - American Society of Landscape Architects Annual Conference,10/21/2017 07:00:00 AM,10/21/2017 06:00:00 PM,General Events,Convention Center,ASLA (https://www.aslameeting.com/),Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-american-society-landscape-architects-annual-conference-0,,,,,,true,Paid registration.  See ASLA website for details.,,,,\n294761,Los Angeles Convention Center - International Gem & Jewelry Show,04/08/2018 11:00:00 AM,04/08/2018 05:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,International Gem & Jewelry Show (https://www.intergem.com/tickets/los-angeles-ca-april-6-8),Los Angeles Convention Center,\"1201 S Figueroa St\nPetree Hall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-international-gem-jewelry-show-4,,,,\"<p>Shop direct from designers, wholesalers and manufacturers for the largest selection at the lowest prices! Why pay retail when you can shop-til-you-drop in a marketplace setting for the best prices in the industry? Visit America's longest running direct-to-consumer jewelry trade show in Los Angeles!</p><p>Find Something For Everyone!   Diamonds • Gemstones • Pearls • Chains • Beads • Supplies • Fine Jewelry • Estate and Antique Jewelry • Opals • Minerals • Crystals • Settings • Rings • Bracelets • Necklaces • Earrings • Watches • Gold • Silver • Costume Jewelry • Handcrafted Finished Jewelry • Findings • Accessories • And So Much More!</p><p>InterGem was founded in 1967 by Herbert A. Duke, Sr. as the first direct-to-consumer jewelry trade show in America. Herb was an avid gemologist and artist. He brought his love of gemstones, minerals and handcrafted art to the masses with InterGem where shoppers can buy direct from designers, wholesalers and manufacturers in a marketplace setting. Celebrating our 50th Anniversary in 2017, we have stood the test of time and have become America's longest running and most beloved jewelry show!</p>\",,true,$6 admission fee / paid parking available on site (West Hall parking garage),,,,\n239041,Board of Public Works Agenda,11/06/2017 10:00:00 AM,11/06/2017 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86116219_11062017.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-242,,,,,,false,,,,,\n358176,Los Angeles Convention Center - Naturalization Ceremony,08/24/2018 07:00:00 AM,08/24/2018 10:00:00 AM,General Events,Convention Center,,Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-naturalization-ceremony-13,,,,,,false,,,,,\n360901,Board of Public Works Agenda,08/27/2018 10:00:00 AM,08/27/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86123942_08272018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-529,,,,,,false,,,,,\n331556,Board of Public Works Agenda,06/27/2018 10:00:00 AM,06/27/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86122339_06272018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-474,,,,,,false,,,,,\n265721,Board of Public Works Agenda,01/08/2018 10:00:00 AM,01/08/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86117620_01082018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-295,,,,,,false,,,,,\n236351,Office of Community Beautification ~ Foster & Banks Walk in Faith Foundation,10/28/2017 09:00:00 AM,10/28/2017 12:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),,\"901 West Florence Avenue\nLos Angeles, CA\n(33.974627, -118.28941)\",https://calendar.lacity.org/event/office-community-beautification-foster-banks-walk-faith-foundation-0,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,\n367596,Office of Community Beautification ~ Office of Councilmember Harris-Dawson,09/15/2018 08:30:00 AM,09/15/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),,\"2510 Hyde Park Boulevard\nLos Angeles, CA\n(33.983029, -118.320618)\",https://calendar.lacity.org/event/office-community-beautification-office-councilmember-harris-dawson,Thomas Corrales,213-978-0230,thomas.corrales@lacity.org,,,false,,,All,,\n352496,Board of Public Works Agenda,08/03/2018 10:00:00 AM,08/03/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86123298_08032018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-508,,,,,,false,,,,,\n311551,Office of Community Beautification ~ Adams/Normandie Neighborhood Association,05/12/2018 08:30:00 AM,05/12/2018 12:00:00 PM,Culture & Community,Board of Public Works,OCB Website (http://dpw.lacity.org/office-community-beautification),ANNA,\"1732 W 22nd Street\nLos Angeles, CA 90007\n(34.036345, -118.298508)\",https://calendar.lacity.org/event/office-community-beautification-adamsnormandie-neighborhood-association,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,\n342316,Los Angeles Convention Center - Naturalization Ceremony,07/25/2018 11:45:00 AM,07/25/2018 02:30:00 PM,General Events,Convention Center,,Los Angeles Convention Center,\"1201 S Figueroa St West\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-naturalization-ceremony-12,,,,,,false,,,,,\n247771,Holiday Afloat Party at Battleship IOWA,12/02/2017 05:00:00 PM,12/02/2017 09:00:00 PM,\"Holiday & Seasonal, Family Activity\",Cultural Affairs,http://www.lawaterfront.org/events.php,Pacific Battleship Center,\"250 S Harbor Blvd\nLos Angeles, CA 90731\n(33.742216, -118.279578)\",https://calendar.lacity.org/event/holiday-afloat-party-battleship-iowa,Port of Los Angeles,,,\"<p> Battleship IOWA will offer an up-close view of the Annual Los Angeles Harbor Holiday Afloat Parade from her historic wooden decks.</p><p>Santa Claus will make a visits along with carolers and holiday treats. There will also be face painting, hot cocoa, candy canes and much more.</p><p>The Annual Los Angeles Harbor Holiday Afloat Parade features more than 60 vessels of all shapes and sizes including powerboats, sailboats, tall ships and harbor working craft. The parade approximately runs 90 minutes.</p><p>Ticket prices start at $5, FREE for children (3 and under). Battleship IOWA members also FREE with Member ID.</p>\",,false,,https://calendar.lacity.org/sites/g/files/wph721/f/Santa-and-his-Reindeer-by-Paul-Riismandel-through-Flickr-CC-2.0.jpg,All,,\n295011,Office of Community Beautification - Gratts Community Clean-Up,04/09/2018 09:45:00 AM,04/09/2018 09:45:00 AM,Culture & Community,Office of Community Beautification,,Gratts Elementary School,\"309 Lucas Ave\nLos Angeles, CA 90017\n(34.058043, -118.261795)\",http://calendar.lacity.org/event/office-community-beautification-gratts-community-clean,,,,,,false,,,,,\n294876,Los Angeles Convention Center - Minefaire: A Minecraft Fan Experience 2018,04/14/2018 10:00:00 AM,04/14/2018 05:00:00 PM,General Events,Convention Center,Minefaire: A Minecraft Fan Experience 2018 (https://www.eventbrite.com/e/minefaire-a-minecraft-fan-experience-los-angeles-ca-tickets-39254011806),Los Angeles Convention Center,\"1201 S Figueroa St West\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-minefaire-minecraft-fan-experience-2018,,,,\"<p>MINEFAIRE, the Ultimate Minecraft Fan Experience, is coming to Los Angeles for two days only - April 14-15, 2018.</p><p>Minecraft players and their families unite at Minefaire to meet their favorite YouTube creators, compete in tournaments and build battles, participate in the famed costume contest, witness live stage shows, learn from Official Minecraft Education Global Mentors, shop at the World's Largest Official Minecraft Merch Store for event exclusives, and more!</p><p>Please note:</p><ul><li>VIP access begins at 9:00am on both Saturday and Sunday.</li><li>Children 2 and under are free.</li></ul>\",,true,Admission Fee: $45 & up / paid parking available on site (West Hall parking garage),,,,\n316456,Office of Community Beautification ~ Valley Glen Clean Team Cleanup,05/26/2018 08:00:00 AM,05/26/2018 11:00:00 AM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),,\"Delano Street Van Nuys, CA 91401\n(34.1775, -118.432777)\",https://calendar.lacity.org/event/office-community-beautification-valley-glen-clean-team-cleanup-5,Ana Huizar,213-978-0224,ana.huizar@lacity.org,,Culture and Community,false,,,All,,\n284941,Board of Public Works Agenda,03/14/2018 10:00:00 AM,03/14/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86119300_03142018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-370,,,,,,false,,,,,\n349706,Los Angeles Convention Center - KCON 2018,08/12/2018 10:00:00 AM,08/12/2018 05:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,KCON 2018 (http://www.kconusa.com/),Los Angeles Convention Center,\"1201 S Figueroa St\nLos Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-kcon-2018-1,,,,,,true,Convention Tickets: $30 + processing fee / See KCON website for concert ticket information. / Paid parking available on site.,,,,\n295036,Office of Community Beautification - Pacoima Beautiful's Earth Day Clean-Up,04/21/2018 08:30:00 AM,04/21/2018 08:30:00 AM,Culture & Community,Office of Community Beautification,,Pacoima Beautiful,\"10400 Glenoaks Blvd\nLos Angeles, CA 91331\n(34.256886, -118.394971)\",http://calendar.lacity.org/event/office-community-beautification-pacoima-beautifuls-earth-day-clean,,,,,,false,,,,,\n349781,Board of Public Works Supplemental Agenda,07/27/2018 10:15:00 AM,07/27/2018 10:15:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86123189_07272018.htm,,,http://calendar.lacity.org/event/board-public-works-supplemental-agenda-8,,,,,,false,,,,,\n265361,Los Angeles Convention Center - LA Art Show,01/13/2018 11:00:00 AM,01/13/2018 07:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,LA Art Show (https://www.laartshow.com/),Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-la-art-show-4,,,,,,true,\"$25 - $250, plus on-line service fees. See LA Art Show website for details. / Paid on-site parking available.\",,,,\n297436,Board of Public Works Agenda,04/06/2018 10:00:00 AM,04/06/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86119978_04062018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-387,,,,,,false,,,,,\n297441,Board of Public Works Agenda,04/09/2018 01:00:00 AM,04/09/2018 01:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86120013_04092018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-388,,,,,,false,,,,,\n240211,Office of Community Beautification - Little Ethiopia Cultural and Resource Center,11/11/2017 09:00:00 AM,11/11/2017 01:00:00 PM,Culture & Community,Office of Community Beautification,,Little Ethiopia Cultural and Resource Center,\"1037 S Fairfax Avenue\nLos Angeles, CA 90019\n(34.056973, -118.364383)\",https://calendar.lacity.org/event/office-community-beautification-little-ethiopia-cultural-and-resource-center,Anna Ruiz,213-978-0231,Anna.Ruiz@lacity.org,,,false,,,,,https://calendar.lacity.org/sites/g/files/wph721/f/LittleEthiopiaCleanStreets3_1.pdf\n311266,Board of Public Works Official Notice,05/16/2018 10:00:00 AM,05/16/2018 10:00:00 AM,City Government,Board of Public Works,http://boe.lacity.org/docs/dpw/agendas/2018/201805/20180516/05162018_bpwcal.htm,,,http://calendar.lacity.org/event/board-public-works-official-notice-42,,,,,,false,,,,,\n229891,Los Angeles Convention Center - Rock n' Roll LA 5K and Half Marathon,10/29/2017 06:45:00 AM,10/29/2017 10:45:00 AM,General Events,Convention Center,Rock n' Roll LA 5K and Half Marathon (http://www.runrocknroll.com/los-angeles/register/),,\"S Start Line: S Figueroa St & Pico Blvd Finish Line: Chick Hearn Ct\nLos Angeles, CA 90015\",https://calendar.lacity.org/event/los-angeles-convention-center-rock-n-roll-la-5k-and-half-marathon,,,,,,true,Paid registration.  See Rock n' Roll website for details.  Paid on-side parking available.,,,,\n362481,Board of Public Works Agenda,08/31/2018 10:00:00 AM,08/31/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86124029_08312018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-534,,,,,,false,,,,,\n314141,Art Cart,07/15/2018 01:00:00 PM,07/15/2018 01:00:00 PM,Family Activity,\"Library, Los Angeles Public\",http://www.lapl.org/whats-on/events/art-cart,North Hollywood Amelia Earhart Regional Library,\"5211 Tujunga Avenue North\nHollywood, CA 91601\n(34.166638, -118.378987)\",http://calendar.lacity.org/event/art-cart-24,,,,<p>Visit the Art Cart for families on Sundays - from 1:00 to 5:00pm!</p><p>Supplies available for children at the reference desk. Bring your imagination and create a masterpiece to take home! </p>,,false,,http://calendar.lacity.org/sites/g/files/wph721/f/online-pic_0_13.jpg,Child,,\n274076,Board of Public Works Agenda,01/29/2018 10:00:00 AM,01/29/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86118170_01292018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-320,,,,,,false,,,,,\n306636,Los Angeles Convention Center - VRLA 2018,05/04/2018 10:00:00 AM,05/04/2018 07:00:00 PM,General Events,Convention Center,VRLA 2018 (https://virtualrealityla.com/),Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-vrla-2018,,,,\"VRLA 2018<p>Experience the next generation of immersive and transformative technology at VRLA 2018! At VRLA you will experience the next generation of immersive and transformative technology, building awareness to this rapidly expanding new generation of immersive tech! The VRLA Expo hosts a thriving community of developers, entrepreneurs, enthusiasts and more, all excited and curious about this modern renaissance of virtual reality, augmented reality and immersive technology. </p><p>This year’s theme, ‘A New Reality,’ represents an expansion of the expo’s scope beyond VR and AR to explore new ways emergent technology improves our lives both in and out of the headset. New verticals include AI, internet of things, robotics, blockchain, 3D printing, alternative energy, cryptocurrency, biotech, and more.</p><p>With 12,000+ attendees, hundreds of tech demos, art installations, educational sessions, and product launches, attendees and exhibitors will experience a convergence of the most innovative technologies shaping our world. VRLA provides a platform for you to become embedded in this ecosystem of the future.</p>\",,true,Ticket Prices: $30 - $299 / Paid parking available on site at the South Hall parking garage.,,,,\n294156,Board of Public Works Official Notice,03/26/2018 10:00:00 AM,03/26/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86119685_03262018.htm,,,http://calendar.lacity.org/event/board-public-works-official-notice-35,,,,,,false,,,,,\n240216,Office of Community Beautification - Little Ethiopia Cultural and Resource Center,11/18/2017 09:00:00 AM,11/18/2017 01:00:00 PM,Culture & Community,Office of Community Beautification,,Little Ethiopia Cultural and Resource Center,\"1037 S Fairfax Avenue\nLos Angeles, CA 90019\n(34.056973, -118.364383)\",https://calendar.lacity.org/event/office-community-beautification-little-ethiopia-cultural-and-resource-center-0,Anna Ruiz,213-978-0231,Anna.Ruiz@lacity.org,,,false,,,,,https://calendar.lacity.org/sites/g/files/wph721/f/LittleEthiopiaCleanStreets3_1.pdf\n276066,Board of Public Works Agenda,02/09/2018 10:00:00 AM,02/09/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86118414_02092018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-331,,,,,,false,,,,,\n277596,Los Angeles Convention Center - Abilities Expo,02/24/2018 11:00:00 AM,02/24/2018 05:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,Abilities Expo (https://www.abilities.com/losangeles/),Los Angeles Convention Center,\"1201 S Figueroa St West\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-abilities-expo-3,,,,\"<p>Imagine everything you need, all under one roof! For nearly 40 years, Abilities Expo has been the go-to source for the Community of people with disabilities, their families, seniors, veterans and healthcare professionals. Every event opens your eyes to new technologies, new possibilities, new solutions and new opportunities to change your life. Where else can you discover ability-enhancing products and services, play a few adaptive sports, learn new dance moves, attend informative workshops and only scratch the surface of what Abilities Expo has to offer? Register for free today.</p><p>Paid parking available on site.</p><p> </p>\",,false,,,,,\n363461,Los Angeles Convention Center - Cannabis World Congress & Business Expo,09/29/2018 08:00:00 AM,09/29/2018 04:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,Cannabis World Congress & Business Expo (https://www.cwcbexpo.com/los-angeles/2018/attend),Los Angeles Convention Center,\"1201 S Figueroa St\nLos Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-cannabis-world-congress-business-expo-5,,,,,,true,\"Registration fees range from $85 - $1,000. See website for details. Paid parking available on site.\",,,,\n349716,Los Angeles Convention Center - Dragon Ball Super Trading Card Game - Super Regional,08/18/2018 08:00:00 AM,08/18/2018 10:00:00 PM,General Events,Convention Center,,Los Angeles Convention Center,\"1201 S Figueroa St\nLos Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-dragon-ball-super-trading-card-game-super-regional,,,,,,false,,,,,\n365651,Office of Community Beautification ~ Foundation for Second Chances ~ Hillcrest Drive Elementary,09/15/2018 10:00:00 AM,09/15/2018 02:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Hillcrest Drive Elementary,\"4041 Hillcrest Drive\nLos Angeles, CA 90007\n(34.013195, -118.347182)\",https://calendar.lacity.org/event/office-community-beautification-foundation-second-chances-hillcrest-drive-elementary,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,\n282946,Los Angeles Convention Center - DUB Show Tour,03/11/2018 12:00:00 PM,03/11/2018 06:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,DUB Show Tour (http://www.dubshowtour.com/dst/),Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-dub-show-tour,,,,\"<p>Monster Energy DUB Show Tour event consists of several hundred customized exotic, domestic and import show cars and motorcycles, Sponsor and Exhibitor Display Booths. Professionally produced Main Concert Stage music and dance performances, and other youth-oriented attractions exhibitions.</p>\",,true,\"$25 - $120 Admission Fee, plus on-line fee / Paid parking available on site.\",,,,\n252011,Office of Community Beautification ~ Old San Fernando Road Tree Planting ,12/02/2017 08:00:00 AM,12/02/2017 12:00:00 PM,Culture & Community,Board of Public Works,OCB Website (http://dpw.lacity.org/office-community-beautification),Office of Councilwoman Nury Martinez,\"9180 San Fernando Rd\nLos Angeles, CA 91352\n(34.236351, -118.389927)\",https://calendar.lacity.org/event/office-community-beautification-old-san-fernando-road-tree-planting,Ana Huizar,213-978-0224,ana.huizar@lacity.org,,Culture and Community,false,,,All,,\n324176,Los Angeles Convention Center - BET Experience & Awards 2018,06/23/2018 08:00:00 AM,06/23/2018 08:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,2018 BET Experience (https://www.bet.com/bet-experience.html),Los Angeles Convention Center,\"1201 S Figueroa St\nLos Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-bet-experience-awards-2018,,,,,,false,,,,,\n306706,Los Angeles Convention Center - WINA Festival 2018,06/01/2018 08:00:00 AM,06/01/2018 08:00:00 PM,General Events,Convention Center,WINA Festival 2018 (http://winafestival.com/en/),Los Angeles Convention Center,\"1201 S Figueroa St\nLos Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-wina-festival-2018-0,,,,\"<p>WINA is the event that honors the leading independent, multinational agencies and networks across the world. The WINA goes beyond a festival, is a movement that wants to give greater credibility and reputation to the independent industry. Backed up with a group of 90 juries from the five continents and acknowledged by their transparency, willingness to change, ethics and values on which this Festival is created.</p><p>The activities of WINA are:</p><ul><li>Trending Workshop for students</li><li>Elite Forum For advertising and marketing professionals</li><li>WINA 2018 Award Ceremony</li><li>World Festival of Talented Youth</li><li>16 International Conferences</li><li>Trade Fair</li><li>Closing Party</li></ul><p>The event is mainly for business people; founders, CEOs or directors from advertising agencies; digital and media agencies; public relations companies; developers of applications or digital platforms; influencers from the fields of marketing, advertising or social media, and media outlets specialized in related areas, also, strategic and accounts directors, creative and artistic directors, freelancers, suppliers from the media, print and digital industries, and finally, students, professors and directors in marketing, advertising, communication and graphic design.</p>\",,true,Ticket Prices: $150-$750 / Paid parking available on site.,,,,\n229881,\"Los Angeles Convention Center - Rock n' Roll LA Half Marathon, Health & Fitness Expo\",10/27/2017 01:00:00 PM,10/27/2017 06:00:00 PM,General Events,Convention Center,Rock n' Roll LA 5K and Half Marathon (http://www.runrocknroll.com/los-angeles/the-weekend/schedule-of-events/),Los Angeles Convention Center,\"1201 S Figueroa St West\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-rock-n-roll-la-half-marathon-health-fitness-expo,,,,,,true,Health Expo is free & open to the public.  Paid on-site parking available.,,,,\n314491,Board of Public Works Agenda,05/21/2018 10:00:00 AM,05/21/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86121473_05212018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-434,,,,,,false,,,,,\n255001,Los Angeles Convention Center - Naturalization Ceremony,12/21/2017 01:30:00 PM,12/21/2017 02:30:00 PM,General Events,Convention Center,,Los Angeles Convention Center,\"1201 S Figueroa St West\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-naturalization-ceremony-4,,,,,,false,,,,,\n230511,Red Bull Global Rallycross,10/13/2017 01:00:00 PM,10/14/2017 03:30:00 PM,General Events,Port of Los Angeles,Red Bull Global Rallycross (http://redbullglobalrallycross.com/),Port of Los Angeles,\"3011 Miner St\nSan Pedro, CA 90731\n(33.717708, -118.274125)\",https://calendar.lacity.org/event/red-bull-global-rallycross,,,,\"<p>Red Bull Global Rallycross combines the best elements of stage rally, off-road and circuit racing in a fan-friendly environment.</p><p>International superstars battle wheel-to-wheel over dirt, gravel, and the series' signature 70-foot jump behind the wheel of 600 horsepower Supercars.</p><p>This event is created to produce the most exciting action in all of motorsport.</p><p>Visit website for schedule.</p>\",,true,Tickets start at $35. Visit website for details,https://calendar.lacity.org/sites/g/files/wph721/f/los-angeles.png,All,,\n237246,Board of Public Works Agenda,10/30/2017 10:00:00 AM,10/30/2017 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86116061_10302017.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-235,,,,,,false,,,,,\n314161,Build-A-Bot Workshop,06/28/2018 03:30:00 PM,06/28/2018 03:30:00 PM,Family Activity,\"Library, Los Angeles Public\",http://www.lapl.org/whats-on/events/build-bot-workshop,Robertson Branch Library,\"1719 S Robertson Boulevard\nLos Angeles, CA 90035\n(34.048277, -118.385666)\",http://calendar.lacity.org/event/build-bot-workshop-2,,,,\"<p> </p><p>Beginning with a simple circuit, grow your robotics abilities to create autonomous bots using sensors!</p><p> </p><p><a href=\"\"https://lamakerspace.org/\"\">LA Makerspace</a> leads this STEAM program.</p><p> </p><p>Advance RSVP required. Sign up at the branch's Reference Desk, or call 310-840-2147. Attendance at all 4 sessions is recommended. Ages 10 and up.</p>\",,false,,http://calendar.lacity.org/sites/g/files/wph721/f/wall-color-paint-colorful-graffiti-painting-street-art-art-illustration-mural-robot-modern-art_1.jpeg,Teenager,,\n247766,L.A. County Holiday Celebration 2017,12/24/2017 03:00:00 PM,12/24/2017 06:00:00 PM,\"Culture & Community, Fairs & Festivals, Holiday & Seasonal, Family Activity\",Cultural Affairs,https://www.lacountyarts.org/experiences/holiday-celebration,Dorothy Chandler Pavillion,\"135 N Grand Ave\nLos Angeles, CA 90012\n(34.0569, -118.247778)\",https://calendar.lacity.org/event/la-county-holiday-celebration-2017,Los Angeles County Arts Commission,213-972-3099,,\"<p>Choirs, instrumental groups, and dance companies representing the many cultures of Los Angeles celebrate the season with seasonally-themed music and dance from across the cultural spectrum. Around 1,500 performers from 35 groups, chosen by competitive application, participate in this event.</p><p>Experience it free at the Dorothy Chandler Pavilion at The Music Center or gather friends and family and watch it live from the comfort of home.</p>\",,false,,https://calendar.lacity.org/sites/g/files/wph721/f/hc-main-1400x500-2.jpg,All,,\n282951,Los Angeles Convention Center - Los Angeles Event Expo,03/14/2018 11:00:00 AM,03/14/2018 04:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,Expo Pros (http://www.theexpopros.com/eppe-los-angeles.html),Los Angeles Convention Center,\"1201 S Figueroa St West Hall\nLos Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-los-angeles-event-expo,,,,\"<p>The LA Event Expo is an annual one-stop shopping experience where the area's suppliers showcase their best products and services for you to plan your events and parties, from small to large. The LA Event Expo offers you a place to shop and see traditional items as well as hot new industry trends. Get show-only specials and register for prize giveaways. Whether you're planning a small shindig or a grand gala, this collection of experts and products under one roof is sure to make you the host with the most.</p>\",,true,\"register on-line, $10 admission fee / paid parking available on site\",,,,\n306686,Office of Community Beautification - Osceola Elementary School Beautification,04/28/2018 08:00:00 AM,04/28/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,OCB (http://dpw.lacity.org/office-community-beautification),LAUSD and Council District 1,\"1311 Pennsylvania\nLos Angeles 90033\n(34.052357, -118.221391)\",https://calendar.lacity.org/event/office-community-beautification-osceola-elementary-school-beautification,Leslie Shim,5627144319,leslie.shim@lacity.org,,,false,,,All,,\n284946,Office of Community Beautification ~ Lemay Elementary School Beautification Day ,04/21/2018 08:00:00 AM,04/21/2018 10:00:00 AM,Culture & Community,,OCB Website (http://dpw.lacity.org/office-community-beautification),,\"17520 Vanowen St\nLos Angeles, CA 91406\",https://calendar.lacity.org/event/office-community-beautification-lemay-elementary-school-beautification-day,Ana Huizar,213-978-0224,ana.huizar@lacity.org,,Culture and Community,false,,,All,,\n358171,Los Angeles Convention Center - Hombre Nuevo,08/19/2018 06:30:00 AM,08/19/2018 06:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,Guadalupe Radio (http://www.guadaluperadio.com/),Los Angeles Convention Center,\"1201 S Figueroa St West\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-hombre-nuevo-8,,,,,,true,Advance Tickets: $30; On Site: $35 / Paid parking available on site.,,,,\n279656,Office of Community Beautification - Ballona Creek Cleanup,03/03/2018 09:00:00 AM,03/03/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,Ballona Creek Renaissance (http://www.ballonacreek.org),Ballona Creek Renaissance,\"90 Fwy\nLos Angeles, CA 90066\",https://calendar.lacity.org/event/office-community-beautification-ballona-creek-cleanup,Anna Ruiz,213-978-0231,Anna.Ruiz@lacity.org,,,false,,,,,\n306466,Board of Public Works Agenda,05/02/2018 10:00:00 AM,05/02/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86120680_05022018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-412,,,,,,false,,,,,\n294161,Board of Public Works Official Notice,03/30/2018 10:00:00 AM,03/30/2018 10:00:00 AM,,,,,,http://calendar.lacity.org/event/board-public-works-official-notice-36,,,,,,false,,,,,\n277621,Los Angeles Convention Center - 2018 Travel & Adventure Show,02/24/2018 10:00:00 AM,02/24/2018 05:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,2018 Travel & Adventure Show (https://travelshows.com/shows/los-angeles/),Los Angeles Convention Center,\"1201 S Figueroa St South\nHall JK Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-2018-travel-adventure-show,,,,\"<ul><li>Explore endless vacation options</li><li>Discover over 350+ destinations from around the globe</li><li>Plan your trip face-to-face with thousands of travel experts</li><li>Meet travel celebrities Samantha Brown, Rick Steves, and Phil Keoghan</li><li>Attend dozens of educational seminars on the Savvy Traveler and Destination Theaters</li><li>Awaken your senses with live cooking demos on the Taste of Travel Theater</li><li>Immerse yourself in faraway cultures with song and dance on the Global Beats Stage</li><li>Enjoy fun for the whole family with camel rides and SCUBA lessons in the dive pool</li><li>Plus, save big with exclusive show-only specials and trip giveaways</li></ul><p>The best part? All of this is included in your ticket. Make the first stop on your next trip the LA Travel & Adventure Show – buy your tickets today!  Discount prices on advance sales.</p>\",,true,$15 1-day admission / $22 2-day admission (plus processing fees) / Paid parking available on site.,,,,\n230446,Office of Community Beautification ~ Highland Park Community Clean-Up,10/14/2017 08:30:00 AM,10/14/2017 11:00:00 AM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Burbank Middle School,\"6460 North Figueroa Street\nLos Angeles, CA\n(34.119661, -118.183678)\",https://calendar.lacity.org/event/office-community-beautification-highland-park-community-clean,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,https://calendar.lacity.org/sites/g/files/wph721/f/HLPCleanupflyer.pdf\n259246,Board of Public Works Official Notice (Winter Recess),12/20/2017 10:00:00 AM,01/01/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86117405_12202017.pdf,,,http://calendar.lacity.org/event/board-public-works-official-notice-winter-recess,,,,,,false,,,,,\n239191,Los Angeles Convention Center - Naturalization Ceremony,11/16/2017 09:00:00 AM,11/16/2017 10:00:00 AM,General Events,Convention Center,,Los Angeles Convention Center,\"1201 S Figueroa St\nLos Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-naturalization-ceremony-1,,,,,,false,,,,,\n277601,Los Angeles Convention Center - Abilities Expo,02/25/2018 11:00:00 AM,02/25/2018 04:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,Abilities Expo (https://www.abilities.com/losangeles/),Los Angeles Convention Center,\"1201 S Figueroa St West\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-abilities-expo-4,,,,\"<p>Imagine everything you need, all under one roof! For nearly 40 years, Abilities Expo has been the go-to source for the Community of people with disabilities, their families, seniors, veterans and healthcare professionals. Every event opens your eyes to new technologies, new possibilities, new solutions and new opportunities to change your life. Where else can you discover ability-enhancing products and services, play a few adaptive sports, learn new dance moves, attend informative workshops and only scratch the surface of what Abilities Expo has to offer? Register for free today.</p><p>Paid parking available on site.</p>\",,false,,,,,\n229991,Board of Public Works Agenda,10/13/2017 10:00:00 AM,10/13/2017 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86115623_10132017.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-214,,,,,,false,,,,,\n299576,Office of Community Beautification - BABCNC & MRCA Cleanup Day,04/28/2018 10:00:00 AM,04/28/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,,,,https://calendar.lacity.org/event/office-community-beautification-babcnc-mrca-cleanup-day,Anna Ruiz,213-978-0231,Anna.Ruiz@lacity.org,\"<p>2 meeting places:</p><p>1) Stone Canyon Outlook, 13931 Mullholland Drive, L.A., 90077</p><p>2) Nancy Pohl Outlook, 8401 Mulholland Drive, L.A., 90046</p>\",,false,,,,,\n265356,Los Angeles Convention Center - LA Art Show,01/12/2018 11:00:00 AM,01/12/2018 07:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,LA Art Show (https://www.laartshow.com/),Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-la-art-show-3,,,,,,true,\"$25 - $250, plus on-line service fees. See LA Art Show website for details. / Paid on-site parking available.\",,,,\n271166,Board of Public Works Agenda,01/24/2018 10:00:00 AM,01/24/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86118000_01242018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-311,,,,,,false,,,,,\n277626,Los Angeles Convention Center - 2018 Travel & Adventure Show,02/25/2018 10:00:00 AM,02/25/2018 05:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,2018 Travel & Adventure Show (https://travelshows.com/shows/los-angeles/),Los Angeles Convention Center,\"1201 S Figueroa St South\nHall JK Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-2018-travel-adventure-show-0,,,,\"<ul><li>Explore endless vacation options</li><li>Discover over 350+ destinations from around the globe</li><li>Plan your trip face-to-face with thousands of travel experts</li><li>Meet travel celebrities Samantha Brown, Rick Steves, and Phil Keoghan</li><li>Attend dozens of educational seminars on the Savvy Traveler and Destination Theaters</li><li>Awaken your senses with live cooking demos on the Taste of Travel Theater</li><li>Immerse yourself in faraway cultures with song and dance on the Global Beats Stage</li><li>Enjoy fun for the whole family with camel rides and SCUBA lessons in the dive pool</li><li>Plus, save big with exclusive show-only specials and trip giveaways</li></ul><p>The best part? All of this is included in your ticket. Make the first stop on your next trip the LA Travel & Adventure Show – buy your tickets today!  Discount prices on advance sales.</p>\",,true,$15 1-day admission / $22 2-day admission (plus processing fees) / Paid parking available on site.,,,,\n234811,3rd Annual Senior Citizens Resource Fair,10/26/2017 09:00:00 AM,10/26/2017 11:00:00 AM,Fairs & Festivals,Council District 13,,Friendship Auditorium,\"3201 Riverside Drive\nLos Angeles, CA 90027\n(34.113664, -118.268957)\",https://calendar.lacity.org/event/3rd-annual-senior-citizens-resource-fair,,,,<p>Meet your Councilmember and learn about vital services offered to seniors in the City of Los Angeles!</p>,Mitch O'Farrell Senior Resource Fair,false,,,,,https://calendar.lacity.org/sites/g/files/wph721/f/SENIOR.jpg\n362486,Board of Public Works Agenda,08/31/2018 10:00:00 AM,08/31/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86124029_08312018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-535,,,,,,false,,,,,\n265636,Los Angeles Convention Center - Naturalization Ceremony,01/18/2018 01:30:00 PM,01/18/2018 02:30:00 PM,General Events,Convention Center,,Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-naturalization-ceremony-6,,,,,,false,,,,,\n282991,Los Angeles Convention Center - ipsy Gen Beauty,03/25/2018 11:00:00 AM,03/25/2018 03:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,ipsy Gen Beauty (http://ipsygenbeauty.com/los-angeles/),Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-ipsy-gen-beauty-0,,,,\"<p>ipsy Gen Beauty is where attendees get to bring their passion for self-expression and unique beauty to life! Think: thousands of ipsters, the creators and influencers  you love to follow, and all the top beauty brands that fill up your makeup drawers in one energizing, glamorous, magical space. Every attendee leaves with an epic gift bag (worth over $400!) so you can create endless looks and keep that ipsy Gen Beauty spirit alive.</p>\",,true,\"$169 admission fee, plus fees & taxes / paid parking available on site\",,,,\n363436,Los Angeles Convention Center - Abu Dhabi Grand Slam Jiu-Jitsu Tour 2018,09/22/2018 07:30:00 AM,09/22/2018 08:30:00 PM,\"General Events, Shows & Conventions\",Convention Center,UAE Jiu Jitsu Federation (https://events.uaejjf.org/en/event/120),Los Angeles Convention Center,\"1201 S Figueroa St West\nHall A Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-abu-dhabi-grand-slam-jiu-jitsu-tour-2018,,,,<p>General admission free.  Registration required for all competitors. Paid parking available on site.</p>,,false,,,,,\n236791,Fall Festival,10/28/2017 11:00:00 AM,10/28/2017 06:00:00 PM,Fairs & Festivals,Council District 13,,,\"2225 Dorris Place\nLos Angeles, CA 90031\n(34.090529, -118.238011)\",https://calendar.lacity.org/event/fall-festival,Partners of Dorris,,,\"<p>The Annual Fall Festival is here! come support the Music Program so that every student from Kindergarten to 6th grade can have music education at Dorris Place.The children are at a critical stage in their cognitive and creative development. Teaching them to recorder, ukulele, violin, viola, and cello is truly empowering.</p>\",,false,,https://calendar.lacity.org/sites/g/files/wph721/f/Fall%20Fest%202017_Flyer8.5x11-page-001.jpg,All,,\n248191,Los Angeles Convention Center - LA Auto Show 2017,12/06/2017 09:00:00 AM,12/06/2017 09:00:00 PM,Shows & Conventions,Convention Center,LA Auto Show Tickets (https://laautoshow.com/tickets/#general-admission),Los Angeles Convention Center,\"1201 S Figueroa St\nLos Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-la-auto-show-2017-4,,,,\"<p>Whether you’re in-market for a new vehicle or planning for the future, the LA Auto Show is your one-stop-shop for comparison shopping cars, trucks, SUVs, electric vehicles and concepts. Hassle-free, stress-free, and about 1,000 vehicles to choose from.  Outside the LA Convention Center, attendees can enjoy pressure-free test drives of nearly 100 of the latest models.  ”The Garage\"\" - accessible via South Hall Atrium’s escalators - is one of the world's largest and most eclectic collections of renowned tuners, customizers, aftermarket goods and exotics.  While the adults shop, there is plenty for the kids to experience. From video games, virtual reality demos, and kids’ play zones, there is plenty to keep them entertained. Tickets for children ages 6-12 are $5 and children under 6 are free with a paying adult.</p>\",,true,Child (6-12): $5; Adult (13-64): $15; Senior (65+): $10 / Paid parking available.,,,,\n314101,Saturday Movie Matinee,06/09/2018 01:00:00 PM,06/09/2018 01:00:00 PM,Family Activity,\"Library, Los Angeles Public\",http://www.lapl.org/whats-on/events/saturday-movie-matinee-10,Palisades Branch Library,\"861 Alma Real Drive\nPacific Palisades, CA 90272\n(34.044043, -118.524533)\",http://calendar.lacity.org/event/saturday-movie-matinee-6,,,,\"<p>We will be showing \"\"Molly's Game\"\" starring Jessica Chastain, Edris Elba, and Kevin Costner. </p><p>Based on the true story of Molly Bloom, an Olympic-class skier who ran the world's most exclusive high-stakes poker game for a decade before being arrested in the middle of the night by 17 FBI agents. </p><p>Rated R. Runtime: 140 minutes.</p>\",,false,,http://calendar.lacity.org/sites/g/files/wph721/f/mollys-game-2.jpg,\"Adult, Senior\",,\n285531,Office of Community Beautification ~ Panorama City East Cleanup,03/24/2018 08:45:00 AM,03/24/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),,\"14345 Roscoe blvd\nLos Angeles, CA 91352\",https://calendar.lacity.org/event/office-community-beautification-panorama-city-east-cleanup-0,Ana Huizar,213-978-0224,ana.huizar@lacity.org,,Culture and Community,false,,,All,,https://calendar.lacity.org/sites/g/files/wph721/f/Panorama%20City%20East%20Clean%20up%203.24.18.pdf\n234481,Office of Community Beautification ~ 28th Street Elementary School,10/21/2017 08:00:00 AM,10/21/2017 01:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),28th Street Elementary School,\"2807 Stanford Avenue\nLos Angeles, CA\n(34.01922, -118.260482)\",https://calendar.lacity.org/event/office-community-beautification-28th-street-elementary-school-0,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,\n276771,Office of Community Beautification ~ North Hollywood West Presidents' Day Cleanup ,02/19/2018 08:00:00 AM,02/19/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),,\"12800 Roscoe Blvd Sun Valley\nCA 91352\",https://calendar.lacity.org/event/office-community-beautification-north-hollywood-west-presidents-day-cleanup,Ana Huizar,213-978-0224,ana.huizar@lacity.org,,Culture and Community,false,,,All,,\n248771,Seussical The Musical,11/17/2017 07:00:00 PM,11/19/2017 02:00:00 PM,General Events,Cultural Affairs,http://ghchs.com/news/what_s_new/seussical_the_musical/,Granada Hills Charter High,\"10535 Zelzah Ave Granada Hills\nCA 91344\",https://calendar.lacity.org/event/seussical-musical,,818-360-2361,,\"<p>And the Fall Musical is... Seussical is a musical by Lynn Ahrens and Stephen Flaherty based on the stories of Dr. Seuss that debuted on Broadway in 2000.</p><p>The play's story is a complex amalgamation of many of Seuss's most famous books!</p><p>Here are the schedule:- Friday, November 17 at 7 p.m.- Saturday, November 18 at 2 p.m. and 7 p.m.- Sunday November 19 at 2 p.m.</p><p> </p>\",,true,,https://calendar.lacity.org/sites/g/files/wph721/f/seussical-the-musical-lrg.png,,,\n274071,Board of Public Works Agenda,01/31/2018 10:00:00 AM,01/31/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86118172_01312018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-319,,,,,,false,,,,,\n294861,Los Angeles Convention Center - 2018 PSO: Pacific Pole Championships,04/08/2018 08:00:00 AM,04/08/2018 05:00:00 PM,General Events,Convention Center,2018 PSO: Pacific Pole Championships (https://www.polesportorg.com/pacific/),Los Angeles Convention Center,\"1201 S Figueroa St\nLos Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-2018-pso-pacific-pole-championships-0,,,,\"<p>Be inspired by the athleticism, grace, mobility, and fluidity of dance - on a pole. Join Pole Sport Organization, the world's largest professional and amateur pole dance competition, where over 100 dancers will perform at this regional event. Cheer for beginners taking the stage for the first time, to professionals vying to move on to the U.S. National finals.</p><p>5 levels of skill, 5 age groups, 5 categories. Please check website for performer names and division times. We are an all ages event.</p>\",,true,\"Ticket prices starting at $36, go to https://www.polesportorg.com/pacific/ for details / paid parking available on site (West Hall parking garage)\",,,,\n234311,Office of Community Beautification ~ Increase the Peace ~ 11th Annual Cleanup,11/18/2017 08:00:00 AM,11/18/2017 02:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Lincoln Heights Tutorial Program,\"Workman St Los Angeles, CA 90031\n(34.079698, -118.213962)\",https://calendar.lacity.org/event/office-community-beautification-increase-peace-11th-annual-cleanup,Ana Huizar,213-978-0224,ana.huizar@lacity.org,,Culture and Community,false,,,All,,\n349681,Los Angeles Convention Center - Nike Basketball 3on3 Tournament,08/05/2018 08:00:00 AM,08/05/2018 04:00:00 PM,General Events,Convention Center,Nike Basketball 3ON3 Tournament (https://www.nike3on3.com/),Los Angeles Convention Center,\"1201 S Figueroa St\nLos Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-nike-basketball-3on3-tournament-0,,,,\"<p>The Nike Basketball 3ON3 Tournament returns this August to celebrate 10 years of the biggest street basketball tournament and fan fest in Los Angeles! With over 1,500 teams, 5,000 players, and 25,000 spectators from all over the country, the Nike Basketball 3ON3 Tournament transforms L.A. LIVE into the ultimate street basketball destination for one weekend every year. </p><p>The Nike Basketball 3ON3 Tournament welcomes ballers of all ages and skill levels together from youth, teens, adults, wheelchair and special olympics players, and elite players to the streets of Los Angeles for a weekend of fun and fierce competition!</p>\",,true,Free admission for spectators.  Fee required for tournament participants.  See website for details.,,,,\n353486,Board of Public Works Agenda,08/08/2018 10:00:00 AM,08/08/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86123378_08082018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-515,,,,,,false,,,,,\n367611,Board of Public Works Official Notice,09/19/2018 10:00:00 AM,09/19/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86124585_09192018.htm,,,http://calendar.lacity.org/event/board-public-works-official-notice-57,,,,,,false,,,,,\n316536,Board of Public Works Special Agenda,05/25/2018 10:15:00 AM,05/25/2018 10:15:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86121644_05252018.htm,,,http://calendar.lacity.org/event/board-public-works-special-agenda-29,,,,,,false,,,,,\n294736,Los Angeles Convention Center - Dwell on Design,04/05/2018 10:00:00 AM,04/05/2018 06:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,Dwell on Design (https://www.dwellondesign.com/en/home.html),Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-dwell-design-2,,,,\"<p>Dwell on Design aims to have participating brands that collectively represent what it means to be modern. Interiors, exteriors, and everything in between... each Dwell on Design brand encompasses a certain uniqueness. A uniqueness that strives to answer the question of where modern will take us tomorrow.</p>\",,true,$25 - $695 (go to www.dwellondesign.com for details) / paid parking available on site (South Hall parking garage),,,,\n229766,Los Angeles Convention Center - American Society of Landscape Architects Annual Conference,10/20/2017 06:30:00 AM,10/20/2017 10:30:00 PM,General Events,Convention Center,ASLA (https://www.aslameeting.com/),Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-american-society-landscape-architects-annual-conference,,,,,,true,Paid registration.  See ASLA website for details.,,,,\n336036,Los Angeles Convention Center - Bride World Expo,07/22/2018 10:00:00 AM,07/22/2018 04:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,Bride World (http://www.brideworld.com/bridal-show-los-angeles-county-los-angeles-convention-center/),Los Angeles Convention Center,\"1201 S Figueroa St\nConcourse Hall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-bride-world-expo-7,,,,<h1>Bride World Expo</h1><div><div><div><p>DIY Seminar • Great bargains • Connect with vendors • Free magazines •Staged fashion show • Gather vendor literature • Compete for prizes</p></div></div></div>,,true,\"$6 advance ticket price, $12 on site / Paid parking available on site.\",,,,\n235746,Los Angeles Convention Center - Franchise Expo West,11/02/2017 10:00:00 AM,11/02/2017 04:00:00 PM,General Events,Convention Center,Franchise Expo West (http://www.franchiseexpowest.com/),Los Angeles Convention Center,\"1201 S Figueroa St West\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-franchise-expo-west,Steve Gross (Registration),201-881-1644,west@franchiseexpowest.com,\"<p>The 2017 Franchise Expo West will bring thousands of potential franchise owners face-to-face with the nation’s top brands. See franchise concepts in every industry and at every investment level, starting as low as $5,000. Attend over 60 free seminars or our in-depth workshops on topics from The A to Z’s of Buying a Franchise to Social Networking + Data In Franchising, plus get access to a network of lenders and small business advisors. Register for free with promo code “LACC” at www.FranchiseExpoWest.com.</p>\",,true,Registration required.  Please go to Franchise Expo West for details.,,,,\n318411,Board of Public Works Agenda,06/01/2018 10:00:00 AM,06/01/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86121693_06012018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-445,,,,,,false,,,,,\n253461,Board of Public Works Agenda,12/06/2017 10:00:00 AM,12/06/2017 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86116917_12062017.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-273,,,,,,false,,,,,\n247776,Downtown on Ice Outdoor Skating Rink,11/16/2017 11:30:00 AM,01/15/2018 09:30:00 PM,\"Holiday & Seasonal, Family Activity\",Cultural Affairs,http://holidayicerinkdowntownla.com,Pershing Square,\"532 S Olive Street\nLos Angeles, CA 90013\n(34.048546, -118.25373)\",https://calendar.lacity.org/event/downtown-ice-outdoor-skating-rink,\"City of Los Angeles, Department of Recreation and Parks\",213-624-4289,,\"<p>Situated amid the Downtown Los Angeles skyscrapers, the rink will be open for ice skating daily, including holidays. There will also be a variety of free activities, including live concerts, youth programs, and special events.</p><p>Cost is $9 per hour.This event takes place December 1 through January 15. Times vary by day of the week:</p><p>Monday through Thursday: 11:30 am – 9:30 pmFriday through Sunday: 10:00 am – 11:00 pm</p>\",,true,Cost is $9 per hour,https://calendar.lacity.org/sites/g/files/wph721/f/homeslideshow_11_0.jpg,All,,\n303246,Office of Community Beautification - Ave 20 Street Cleanup,04/28/2018 07:30:00 AM,04/28/2018 10:30:00 AM,Culture & Community,Office of Community Beautification,OCB (http://dpw.lacity.org/office-community-beautification),\"LA Conservation Corps, Girl Scouts of America, Council District 1\",,https://calendar.lacity.org/event/office-community-beautification-ave-20-street-cleanup,Leslie Shim,213-842-0149,leslie.shim@lacity.org,,,false,,,All,,\n279391,Office of Community Beautification ~ Valley Glen Clean Team Cleanup,02/24/2018 07:30:00 AM,02/24/2018 09:30:00 AM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Valley Glen Community Park,\"6150 Atoll Ave\nVan Nuys, CA 91401\n(34.182359, -118.420339)\",https://calendar.lacity.org/event/office-community-beautification-valley-glen-clean-team-cleanup-2,Ana Huizar,213-978-0224,ana.huizar@lacity.org,,Culture and Community,false,,,All,,\n302786,Fountain Community Gardens Earth Day,04/22/2018 03:00:00 PM,04/22/2018 07:00:00 PM,\"Fairs & Festivals, General Events, City Government, Holiday & Seasonal, Family Activity\",\"Council District 13, Neighborhood Empowerment\",Fountain Community Garden Earth Day (http://lagardencouncil.org/meet-fountain-community-gardeners/),Los Angeles Community Garden Council,\"5620 Fountain Avenue\nLos Angeles, CA 90028\n(34.094759, -118.311666)\",https://calendar.lacity.org/event/fountain-community-gardens-earth-day,Alex Alferov,,fountaincommunitygardens@gmail.com,\"<p>Fountain Community Gardens in partnership with the Los Angeles Community Garden Council, Office of Councilmember Mitch O'Farrel (13 District) and the Hollywood Studio District Neighborhood Council invite you to come and enjoy the day in the garden. We will have a yoga class, composting activities, water conservation, cooking class, food, and refreshments. Please bring a plate of food to share. Everyone is invited.</p>\",,false,,https://calendar.lacity.org/sites/g/files/wph721/f/Fountain%20Community%20Gardens%204-22-18.jpg,,,https://calendar.lacity.org/sites/g/files/wph721/f/Fountain%20Community%20Gardens%204-22-18_0.jpg\n249496,Board of Public Works Agenda,11/27/2017 10:00:00 AM,11/27/2017 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86116725_11272017.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-263,,,,,,false,,,,,\n268291,Office of Community Beautification ~ Roosevelt High School & Altamed MLK Day of Service,01/15/2018 08:00:00 AM,01/15/2018 01:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Roosevelt High School,\"456 South Mathews Street\nLos Angeles, CA\n(34.039237, -118.211228)\",https://calendar.lacity.org/event/office-community-beautification-roosevelt-high-school-altamed-mlk-day-service,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,\n344181,Board of Public Works Agenda,07/18/2018 10:00:00 AM,07/18/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86122906_07182018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-490,,,,,,false,,,,,\n279631,Office of Community Beautification - LACES Cleanup,03/03/2018 08:00:00 AM,03/03/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,,LACES,\"5931 W 18th Street\nLos Angeles, CA 90035\n(34.043799, -118.372885)\",https://calendar.lacity.org/event/office-community-beautification-laces-cleanup,Anna Ruiz,213-978-0231,Anna.Ruiz@lacity.org,,,false,,,,,\n279351,Office of Community Beautification ~ The New 9th Community Clean-Up,04/21/2018 09:00:00 AM,04/21/2018 01:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Pueblo Del Rio Housing Development,\"1801 East 53rd Street\nLos Angeles, CA 90058\n(33.994633, -118.241127)\",https://calendar.lacity.org/event/office-community-beautification-new-9th-community-clean-0,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,\n359161,Office of Community Beautification - Lake Balboa Community Cleanup,08/24/2018 09:00:00 AM,08/24/2018 11:00:00 AM,Culture & Community,Office of Community Beautification,OCB (http://dpw.lacity.org/office-community-beautification),Lake Balboa Community,\"6942 Haskell Ave\nLos Angeles, CA 91406\n(34.196818, -118.474928)\",https://calendar.lacity.org/event/office-community-beautification-lake-balboa-community-cleanup-1,Leslie Shim,213-978-0227,leslie.shim@lacity.org,,,false,,,All,,\n324786,Office of Community Beautification - Vermont Avenue Beautification Project,06/16/2018 08:00:00 AM,06/16/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,,,\"101 freeway\nLos Angeles, CA 90007\",https://calendar.lacity.org/event/office-community-beautification-vermont-avenue-beautification-project,Anna Ruiz,213-978-0231,Anna.Ruiz@lacity.org,,,false,,https://calendar.lacity.org/sites/g/files/wph721/f/Vermont%20Ave%20Cleanup.jpg,,,\n235756,Los Angeles Convention Center - Franchise Expo West,11/04/2017 10:00:00 AM,11/04/2017 04:00:00 PM,General Events,Convention Center,Franchise Expo West (http://www.franchiseexpowest.com/),Los Angeles Convention Center,\"1201 S Figueroa St West\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-franchise-expo-west-1,Steve Gross (Registration),201-881-1644,west@franchiseexpowest.com,\"<p>The 2017 Franchise Expo West will bring thousands of potential franchise owners face-to-face with the nation’s top brands. See franchise concepts in every industry and at every investment level, starting as low as $5,000. Attend over 60 free seminars or our in-depth workshops on topics from The A to Z’s of Buying a Franchise to Social Networking + Data In Franchising, plus get access to a network of lenders and small business advisors. Register for free with promo code “LACC” at www.FranchiseExpoWest.com.</p>\",,true,Registration required.  Please go to Franchise Expo West for details.,,,,\n248161,Los Angeles Convention Center - LA Auto Show 2017,12/01/2017 09:00:00 AM,12/01/2017 10:00:00 PM,Shows & Conventions,Convention Center,LA Auto Show Tickets (https://laautoshow.com/tickets/#general-admission),Los Angeles Convention Center,\"1201 S Figueroa St\nLos Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-la-auto-show-2017,,,,\"<p>Whether you’re in-market for a new vehicle or planning for the future, the LA Auto Show is your one-stop-shop for comparison shopping cars, trucks, SUVs, electric vehicles and concepts. Hassle-free, stress-free, and about 1,000 vehicles to choose from.  Outside the LA Convention Center, attendees can enjoy pressure-free test drives of nearly 100 of the latest models.  ”The Garage\"\" - accessible via South Hall Atrium’s escalators - is one of the world's largest and most eclectic collections of renowned tuners, customizers, aftermarket goods and exotics.  While the adults shop, there is plenty for the kids to experience. From video games, virtual reality demos, and kids’ play zones, there is plenty to keep them entertained. Tickets for children ages 6-12 are $5 and children under 6 are free with a paying adult.</p>\",,true,Child (6-12): $5; Adult (13-64): $15; Senior (65+): $10 / Paid parking available.,,,,\n235721,Office of Community Beautification ~ West Adams Prep High School,02/03/2018 08:30:00 AM,02/03/2018 12:30:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),West Adams High School,\"1500 West Washington Boulevard\nLos Angeles, CA\n(34.04001, -118.289685)\",https://calendar.lacity.org/event/office-community-beautification-west-adams-prep-high-school-3,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,\n349676,Los Angeles Convention Center - Nike Basketball 3on3 Tournament,08/04/2018 08:00:00 AM,08/04/2018 06:00:00 PM,General Events,Convention Center,Nike Basketball 3ON3 Tournament (https://www.nike3on3.com/),Los Angeles Convention Center,\"1201 S Figueroa St\nLos Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-nike-basketball-3on3-tournament,,,,\"<p>The Nike Basketball 3ON3 Tournament returns this August to celebrate 10 years of the biggest street basketball tournament and fan fest in Los Angeles! With over 1,500 teams, 5,000 players, and 25,000 spectators from all over the country, the Nike Basketball 3ON3 Tournament transforms L.A. LIVE into the ultimate street basketball destination for one weekend every year. </p><p>The Nike Basketball 3ON3 Tournament welcomes ballers of all ages and skill levels together from youth, teens, adults, wheelchair and special olympics players, and elite players to the streets of Los Angeles for a weekend of fun and fierce competition!</p>\",,true,Free admission for spectators.  Fee required for tournament participants.  See website for details.,,,,\n311201,Board of Public Works Agenda,05/11/2018 10:00:00 AM,05/11/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86121188_05112018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-426,,,,,,false,,,,,\n279661,Office of Community Beautification - Cleanup Encino Day,03/03/2018 08:00:00 AM,03/03/2018 11:00:00 AM,Culture & Community,Office of Community Beautification,,Encino Chamber of Commerce,\"4933 Balboa\nBl Encino, CA 91316\n(34.160169, -118.50108)\",https://calendar.lacity.org/event/office-community-beautification-cleanup-encino-day,Anna Ruiz,213-978-0231,Anna.Ruiz@lacity.org,,,false,,,,,\n357801,Pico NC General Board Meeting,08/12/2018 10:00:00 AM,08/12/2018 10:00:00 AM,,,http://ens.lacity.org/ensnc/pico_nc/ensncpico_nc781123661_08122018.pdf,,,http://calendar.lacity.org/event/pico-nc-general-board-meeting-20,,,,,,false,,,,,\n249716,Turkey Trot,11/23/2017 08:00:00 AM,11/23/2017 12:00:00 PM,\"General Events, Holiday & Seasonal, Family Activity\",Cultural Affairs,http://turkeytrot.la,Los Angeles City Hall,\"200 N Spring St\nLos Angeles, CA 90012\n(34.054094, -118.243388)\",https://calendar.lacity.org/event/turkey-trot,Brennan Lindner,,brennan@genericevents.com,\"<p>Join thousands of runners and walkers for the annual Turkey Trot Los Angeles on Thanksgiving morning.</p><p>The fifth annual Turkey Trot Los Angeles. Participate in the 5k, 10k, or 1 mile Widdle Wobble for kids. Everyone gets a rockin’ t-shirt, sparkly finisher medal, and bib.</p><p>In the spirit of Thanksgiving, this event benefits the Midnight Mission – an amazing organization that offers a path to self sufficiency to those experiencing homelessness. Register today and help make a difference!</p>\",,true,,https://calendar.lacity.org/sites/g/files/wph721/f/134812-032-019h.jpg,All,,\n262701,Los Angeles Convention Center - The Fit Expo,01/06/2018 10:00:00 AM,01/06/2018 06:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,The Fit Expo (https://www.thefitexpo.com/TFELA_tickets.shtml),Los Angeles Convention Center,\"1201 S Figueroa St\nLos Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-fit-expo,,,,\"<p>TheFitExpo, presented by Bodybuilding.com, is returning to the LA Convention Center on January 6th and 7th for its 15th anniversary!This action-packed weekend will feature 16 amazing competitions and events, non-stop cutting-edge classes, internet fitness celebrities, and hundreds of exhibits featuring the newest in fitness, diet, nutrition, strength and wellness products, with tons of free samples!Some featured competitions will include: Powerlifting, Ultimate Ninja, Dodgeball, Battle of the Bars, Gracie Jiu-Jitsu, Strongman, MAS Wrestling, Arm Wrestling, the MuscleContest Challenge, and Viking Visegrip Challenge.</p><p>In addition, there will be a group exercise program featuring the latest fitness craze, tons of celebrity athlete appearances and our popular “Healthy Living Pavilion” which features delicious cooking demonstrations, recipe makeovers and plenty of sampling. </p>\",,true,$30 per day; $45 for Sat & Sun; cash only at the door or purchase on-line,,,,\n240856,Office of Community Beautification ~ Hoover St. Community Cleanup,11/14/2017 08:00:00 AM,11/14/2017 11:00:00 AM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Council District 1,\"2726 Francis Ave\nLos Angeles, CA 90005\n(34.056826, -118.284968)\",https://calendar.lacity.org/event/office-community-beautification-hoover-st-community-cleanup-0,Ana Huizar,213-978-0224,ana.huizar@lacity.org,,Culture and Community,false,,,All,,\n247731,Office of Community Beautification ~ Project S - Sheldon Skate Park Community Cleanup & Tree Planting ,11/18/2017 08:00:00 AM,11/18/2017 12:00:00 PM,Culture & Community,Board of Public Works,OCB Website (http://dpw.lacity.org/office-community-beautification),,\"12511 Sheldon St\nLos Angeles, CA 91352\n(34.230496, -118.40577)\",https://calendar.lacity.org/event/office-community-beautification-project-s-sheldon-skate-park-community-cleanup-tree-planting,Ana Huizar,213-978-0224,ana.huizar@lacity.org,,Culture and Community,false,,,All,,\n236551,Dia De Los Muertos,10/28/2017 03:00:00 PM,10/28/2017 09:00:00 PM,\"Parks & Recreation, City Government\",\"Council District 13, Recreation and Parks\",Echo Park's Dia De Los Muertos Event (https://www.facebook.com/events/2026510790902276/),City of Los Angeles Department of Recreation and Parks,\"751 Echo Park Ave\nLos Angeles, CA 90028\n(34.073121, -118.259615)\",https://calendar.lacity.org/event/dia-de-los-muertos,Echo Park Recreation Center,213-250-3578,echopark.rc@lacity.org,\"<p>Join us for our first ever DIA DE LOS MUERTOS event at the Echo Park Lake. Bringing culture back to the community.The Event is FREE and for ALL AGES(cash for food trucks only)There will be altar displays, procession, baile folklorico, aztec dancing, art & crafts, food, food trucks, community booths and more.Council District 13 Councilmember Mitch O'Farrell will host the movie \"\"Mars Attacks\"\" at the North Lawn with some champurrado y pan dulce For more information or if you are interested in participating in the alters, please contact us at echopark.rc@lacity.org or 213.250.3578</p>\",,false,,https://calendar.lacity.org/sites/g/files/wph721/f/Dia%20De%20Los%20Muertos%206.jpg,All,,https://calendar.lacity.org/sites/g/files/wph721/f/Dia%20De%20Los%20Muertos%206.pdf\n324951,Board of Public Works Agenda,06/15/2018 06:45:00 AM,06/15/2018 06:45:00 AM,City Government,Board of Public Works,http://clkrep.lacity.org/bpwgranicus/granicus/2018/06152018_bpwcal.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-465,,,,,,false,,,,,\n316461,Office of Community Beautification ~ Valor Annual Community Cleanup,06/01/2018 08:00:00 AM,06/01/2018 11:00:00 AM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),,\"8015 Van Nuys Blvd\nPanorama City, CA 91402\n(34.21658, -118.448769)\",https://calendar.lacity.org/event/office-community-beautification-valor-annual-community-cleanup,Ana Huizar,213-978-0224,ana.huizar@lacity.org,,Culture and Community,false,,,All,,\n312396,Office of Community Beautification - Angelino Heights Community Clean-Up ,05/19/2018 08:00:00 AM,05/19/2018 10:00:00 AM,Culture & Community,Office of Community Beautification,OCB (http://dpw.lacity.org/office-community-beautification),El Centro del Pueblo,\"1321 Cortez St\nLos Angeles, CA 90026\n(34.066247, -118.25654)\",https://calendar.lacity.org/event/office-community-beautification-angelino-heights-community-clean,Leslie Shim,,leslie.shim@lacity.org,,,false,,,All,,\n305941,Board of Public Works Agenda,04/25/2018 10:00:00 AM,04/25/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86120497_04252018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-405,,,,,,false,,,,,\n294921,Los Angeles Convention Center - AutoCon Los Angeles 2018,04/29/2018 01:00:00 PM,04/29/2018 08:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,AutoCon Los Angeles 2018 (http://www.autoconevents.com/autocon-los-angeles-2018/),Los Angeles Convention Center,\"1201 S Figueroa St West\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-autocon-los-angeles-2018,,,,\"<p>On Sunday, April 29th, 2018, the Los Angeles Convention Center will open its doors and welcome thousands of passionate enthusiasts to AutoCon Los Angeles 2018.</p><p>More than just a car show event, AutoCon is a celebration of life, individuality and community. An automotive experience like no other. The show features the world’s top show vehicles and notable industry brands all under one roof while creating a unique experience allowing attendees the opportunity to connect and share common interests with one another.</p><p>Cruise on over to the AutoCon Avenue ‘Drive-Up’ Stage and experience ‘Automotive Utopia’ which highlights one-of-a-kind vehicle builds, first look debuts, insightful conversations and other fun activities. From classics to concepts, there’s a little something for everyone to see during the event. With its core focus on the automotive industry, AutoCon is a place where exclusive vehicle builds/projects are debuted, product launches happen, news is announced, and the future is introduced. Let the good times roll!</p>\",,true,Admission Fee: $20 - $50 / paid parking available on site (West Hall parking garage),,,,\n238811,Office of Community Beautification ~ Eagle Rock Yacht Club ~ East side Cleanup,11/05/2017 10:00:00 AM,11/05/2017 12:00:00 PM,Culture & Community,Board of Public Works,OCB Website (http://dpw.lacity.org/office-community-beautification),Eagle Rock Yacht Club,\"632 N Avenue\nLos Angeles, CA 90042\",https://calendar.lacity.org/event/office-community-beautification-eagle-rock-yacht-club-east-side-cleanup,Ana Huizar,2139780224,ana.huizar@lacity.org,,Culture and Community,false,,,All,,\n281366,Los Angeles Convention Center - Classic Auto Show,03/02/2018 12:00:00 PM,03/02/2018 08:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,Classic Auto Show (https://www.theclassicautoshow.com/tickets),Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-classic-auto-show-1,,,,\"<p>The Classic Auto Show, March 2-4, 2018 is the largest 3-day indoor classic car show in the U.S.  It’s where the entire classic car community comes together for a celebration of all things on wheels.  Whether you are a collector, or, working on your project car, or, simply share a passion for the classics – this event is for you.  You’ll see the cars you love, rub shoulders with your favorite auto celebrities, view LIVE restoration and auto detailing demos, and shop a vendor marketplace showcasing memorabilia, and the parts, products, and services you need to restore and care for your cars.</p><p>The show will exhibit over 1,000 classics on TWO floors of the LA Convention Center including the rarely seen, museum quality classics displayed on the prominent Grand Boulevard, celebrity builds, and hundreds of classics from local car clubs representing all the Domestic and Foreign marques you love.   NEW! exhibit areas for 2018 will include:  Hot Rods, Lowriders, Japanese Classics, Vintage Off Roaders, Porsche, Women Builds, and Motorcycles.</p>\",,true,$25 - $200 See Classic Auto website for details. / Paid parking available on site.,,,,\n314121,Magnetic Slime!,06/11/2018 04:00:00 PM,06/11/2018 05:00:00 PM,Family Activity,\"Library, Los Angeles Public\",http://www.lapl.org/whats-on/events/magnetic-slime-0,Palms - Rancho Park Branch Library,\"2920 Overland Avenue\nLos Angeles, CA 90064\n(34.033697, -118.418555)\",http://calendar.lacity.org/event/magnetic-slime,,,,\"<p>Learn how to make Magnetic Slime!  Also, learn about magnetic attraction by making a cool black slime that responds to magnets!  Program is for ages 8-12.  Program limited to 20 kids and advanced sign up is required.  Please email Children's Librarian, Michele Robinson at <a href=\"\"mailto:mrobins@lapl.org\"\">mrobins@lapl.org</a> to reserve your spot.</p>\",,false,,,Child,,\n294906,Los Angeles Convention Center - Naturalization Ceremony,04/17/2018 07:00:00 AM,04/17/2018 10:00:00 AM,General Events,Convention Center,,Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Los Angeles, CA\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-naturalization-ceremony-7,,,,,,false,,,,,\n248491,Wilmington Winter Wonderland,12/02/2017 11:00:00 AM,12/02/2017 02:00:00 PM,\"Parks & Recreation, Holiday & Seasonal, Family Activity\",\"Port of Los Angeles, Recreation and Parks\",http://www.laparent.com/events/wilmington-winter-wonderland-4/,Wilmington Waterfront Park,\"604 W C St\nWilmington, CA 90744\n(33.772368, -118.268287)\",https://calendar.lacity.org/event/wilmington-winter-wonderland-0,,310-732-7678,,\"<p>There will be a winter chill in the air at Wilmington's Waterfront Park, which will be filled with an avalanche of real snow.</p><p>So, come out and make a snowman and enjoy other snowy fun. There will be a flurry of activities, including games, face painting and holiday crafts at this free community event.</p>\",,false,,https://calendar.lacity.org/sites/g/files/wph721/f/wilmingtonkids-sledding-1.jpg,All,,\n280611,Board of Public Works Agenda,03/02/2018 10:00:00 AM,03/02/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86119010_03022018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-353,,,,,,false,,,,,\n274976,Board of Public Works Agenda,02/05/2018 10:00:00 AM,02/05/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86118283_02052018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-326,,,,,,false,,,,,\n239066,Office of Community Beautification ~ LAPD ~ Neighborhood Watch-University Hills Clean-Up,11/04/2017 09:00:00 AM,11/04/2017 11:00:00 AM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),,\"Eastern Avenue\nLos Angeles, CA 90032\",https://calendar.lacity.org/event/office-community-beautification-lapd-neighborhood-watch-university-hills-clean,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,\n316061,Office of Community Beautification ~ Juanita Tate Elementary,06/02/2018 09:00:00 AM,06/02/2018 01:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Juanita Tate Elementary,\"123 W 59th Street\nLos Angeles, CA 90007\n(33.986955, -118.274422)\",https://calendar.lacity.org/event/office-community-beautification-juanita-tate-elementary,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,\n312276,Office of Community Beautification - National Public Works Week Cleanup,05/26/2018 09:00:00 AM,05/26/2018 11:00:00 AM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),,\"8329 Noble Ave North Hills\nCA 91343\",https://calendar.lacity.org/event/office-community-beautification-national-public-works-week-cleanup,Ana Huizar,6264221529,ana.huizar@lacity.org,,Culture and Community,false,,,All,,\n278566,Office of Community Beautification - Cleanup,02/24/2018 08:30:00 AM,02/24/2018 08:30:00 AM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),,\"6464 Sylmar Ave\nLos Angeles, CA 91401\n(34.188144, -118.446525)\",https://calendar.lacity.org/event/office-community-beautification-cleanup-0,Ana Huizar,213-978-0224,ana.huizar@lacity.org,,Culture and Community,false,,,All,,\n310806,Los Angeles Convention Center - Naturalization Ceremony,05/23/2018 07:00:00 AM,05/23/2018 10:00:00 AM,General Events,Convention Center,,Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-naturalization-ceremony-9,,,,,,false,,,,,\n349786,Board of Public Works Agenda,07/27/2018 10:00:00 AM,07/27/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86123162_07272018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-503,,,,,,false,,,,,\n249731,Handmade L.A's Holiday Marketplace,11/25/2017 11:00:00 AM,11/26/2017 06:00:00 PM,\"General Events, Arts, Holiday & Seasonal\",Cultural Affairs,http://www.cafamshop.org/handmade-la/,Craft and Folk Art Museum,\"5814 Wilshire Blvd\nLos Angeles, CA 90036\n(34.062394, -118.355452)\",https://calendar.lacity.org/event/handmade-las-holiday-marketplace,,323-937 4230,museumshop@cafam.org,\"<p>Handmade L.A. is a bi-annual sale and fundraiser at the Craft & Folk Art Museum, showcasing emerging and established makers in the Los Angeles area. Meet and shop from some of LA's most vibrant and dynamic makers, celebrated for their accomplishments and often unexpected approaches to art and design.</p><p>Join us for shopping, fun, music, and more!</p>\",,false,,,\"Adult, Young Adult, Senior\",,\n234501,Office of Community Beautification - Palms NC,10/21/2017 01:30:00 PM,10/21/2017 05:00:00 PM,Culture & Community,Office of Community Beautification,,,\"N e corner of Venice\nLos Angeles, CA 90232\",https://calendar.lacity.org/event/office-community-beautification-palms-nc,Anna Ruiz,213-978-0231,Anna.Ruiz@lacity.org,,,false,,,,,\n265366,Los Angeles Convention Center - LA Art Show,01/14/2018 11:00:00 AM,01/14/2018 05:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,LA Art Show (https://www.laartshow.com/),Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-la-art-show-5,,,,,,true,\"$25 - $250, plus on-line service fees. See LA Art Show website for details. / Paid on-site parking available.\",,,,\n230451,Board of Public Works Agenda,10/18/2017 10:00:00 AM,10/18/2017 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86115720_10182017.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-218,,,,,,false,,,,,\n302886,Board of Public Works Agenda,04/18/2018 10:00:00 AM,04/18/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86120259_04182018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-399,,,,,,false,,,,,\n314126,\"Adventures in Starry Kitchen - A Case Study in Food, Dreams, and Failing Upwards | LA Made\",07/15/2018 02:00:00 PM,07/15/2018 03:30:00 PM,Arts,\"Library, Los Angeles Public\",http://www.lapl.org/whats-on/events/nguyen-tran-variety-hour-la-made,Central Library,\"630 W 5th Street\nLos Angeles, CA 90071\n(34.050931, -118.254965)\",http://calendar.lacity.org/event/adventures-starry-kitchen-case-study-food-dreams-and-failing-upwards-la-made,,,,\"<p>Listen and participate in Tran’s manic adventures of \"\"failing upwards\"\" in a presentation that promises to be as unpredictable as their history and anything but standard. Including, but not limited to, a free sampling of their signature Crispy Tofu Balls for everybody, audience karaoke, nervously honest conversation, a book signing, and campfire storytelling, all revolving around his cookbook/memoir unlike any other: Adventures in Starry Kitchen: 88 Asian-Inspired Recipes from America’s Most Famous Underground Restaurant.</p><p>(Even we don't know what to expect!)</p>\",,false,,http://calendar.lacity.org/sites/g/files/wph721/f/lamadebannertran-470.png,\"Adult, Senior, Teenager\",,\n349726,Los Angeles Convention Center - ScareLA,08/25/2018 11:00:00 AM,08/25/2018 07:00:00 PM,\"General Events, Shows & Conventions, Family Activity\",Convention Center,ScareLA (https://scarela.com/),Los Angeles Convention Center,\"1201 S Figueroa St\nLos Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-scarela-1,,,,\"ScareLA™ premiered in 2013 as the first convention to bring Halloween to the summer. Situated in the entertainment capital of the world, it combines the city’s top talent and unique setting with a twist! The con kicks off the scare season and unveils the hottest attractions and products in SoCal. Mingle with thousands of fans, haunt entertainment professionals, top scare event designers and operators, makers, artists and filmmakers. Enjoy a weekend jam-packed with Halloween season teasers, attraction unveils, classes, industry panels, haunt tours, screenings, cosplay and games. Share, inspire, play – ScareLA!\",,true,Fees range from $30 - $250.  See ScareLA website for details. / Paid parking available on site.,,,,\n309581,10th Anniversary Spring Faire,05/03/2018 04:15:00 PM,05/03/2018 04:15:00 PM,\"ENS - Meeting - Council, ENS - Neighborhood Council, Fairs & Festivals, General Events, Family Activity\",,,Griffith Park Adult Community Center,\"3203 Riverside Drive\nLos Angeles, CA 90027\n(34.114394, -118.269645)\",https://calendar.lacity.org/event/10th-anniversary-spring-faire,Griffith Park Adult Community Center,(323) 644-5579,,\"<p>Come and join the Griffith Park Adult Community Club for their 10th Anniversary Spring Faire!.Enjoy Entertainment, Arts & Craftrs, Pet Adoptions and Books!</p><p>When:<strong> Saturday May 19, 2018 from 10:30am-4:00pm </strong></p><p>Where<strong>: 3203 Riverside Drive Los Angeles, CA 90027</strong>.</p>\",,false,,https://calendar.lacity.org/sites/g/files/wph721/f/Spring%20Faire%20Flyer%202018%20%282%29-1.jpg,All,,https://calendar.lacity.org/sites/g/files/wph721/f/Spring%20Faire%20Flyer%202018%20%282%29.pdf\n294706,Office of Community Beautification ~ Park Mesa Heights Clean-Up,03/31/2018 09:00:00 AM,03/31/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Van Ness Recreation Center,\"5720 2nd Avenue\nLos Angeles, CA 90043\n(33.990298, -118.319282)\",https://calendar.lacity.org/event/office-community-beautification-park-mesa-heights-clean,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,\n277591,Los Angeles Convention Center - Abilities Expo,02/23/2018 11:00:00 AM,02/23/2018 05:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,Abilities Expo (https://www.abilities.com/losangeles/),Los Angeles Convention Center,\"1201 S Figueroa St West\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-abilities-expo-2,,,,\"<p>Imagine everything you need, all under one roof! For nearly 40 years, Abilities Expo has been the go-to source for the Community of people with disabilities, their families, seniors, veterans and healthcare professionals. Every event opens your eyes to new technologies, new possibilities, new solutions and new opportunities to change your life. Where else can you discover ability-enhancing products and services, play a few adaptive sports, learn new dance moves, attend informative workshops and only scratch the surface of what Abilities Expo has to offer? Register for free today.</p><p>Paid parking available on site.</p><p> </p>\",,false,,,,,\n275046,Board of Public Works Agenda,02/07/2018 10:00:00 AM,02/07/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86118294_02072018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-329,,,,,,false,,,,,\n265761,Board of Public Works Agenda,01/10/2018 10:00:00 AM,01/10/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86117625_01102018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-298,,,,,,false,,,,,\n248001,Office of Community Beautification ~ Boyle Heights Neighborhood Council,11/18/2017 09:00:00 AM,11/18/2017 01:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Boyle Heights Neighborhood Council,\"100 block of Cummings Street\nLos Angeles, CA 90033\",https://calendar.lacity.org/event/office-community-beautification-boyle-heights-neighborhood-council,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,\n294751,Los Angeles Convention Center - International Gem & Jewelry Show,04/06/2018 12:00:00 PM,04/06/2018 06:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,International Gem & Jewelry Show (https://www.intergem.com/tickets/los-angeles-ca-april-6-8),Los Angeles Convention Center,\"1201 S Figueroa St\nPetree Hall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-international-gem-jewelry-show-2,,,,\"<p>Shop direct from designers, wholesalers and manufacturers for the largest selection at the lowest prices! Why pay retail when you can shop-til-you-drop in a marketplace setting for the best prices in the industry? Visit America's longest running direct-to-consumer jewelry trade show in Los Angeles!</p><p>Find Something For Everyone!   Diamonds • Gemstones • Pearls • Chains • Beads • Supplies • Fine Jewelry • Estate and Antique Jewelry • Opals • Minerals • Crystals • Settings • Rings • Bracelets • Necklaces • Earrings • Watches • Gold • Silver • Costume Jewelry • Handcrafted Finished Jewelry • Findings • Accessories • And So Much More!</p><p>InterGem was founded in 1967 by Herbert A. Duke, Sr. as the first direct-to-consumer jewelry trade show in America. Herb was an avid gemologist and artist. He brought his love of gemstones, minerals and handcrafted art to the masses with InterGem where shoppers can buy direct from designers, wholesalers and manufacturers in a marketplace setting. Celebrating our 50th Anniversary in 2017, we have stood the test of time and have become America's longest running and most beloved jewelry show!</p>\",,true,$6 admission fee / paid parking available on site (West Hall parking garage),,,,\n266161,Office of Community Beautification ~ MLK Day of Service ,01/15/2018 07:30:00 AM,01/15/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),North Hollywood East Neighborhood Council & Council District 2,\"7063 Laurel Canyon\nLos Angeles, CA 91605\",https://calendar.lacity.org/event/office-community-beautification-mlk-day-service,Ana Huizar,213-978-0224,ana.huizar@lacity.org,,Culture and Community,false,,,All,,\n303091,Office of Community Beautification ~ Agustus Hawkins High School,04/28/2018 09:00:00 AM,04/28/2018 01:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Agustus Hawkins High School,\"825 West 60th Street\nLos Angeles, CA 90044\n(33.985529, -118.287841)\",https://calendar.lacity.org/event/office-community-beautification-agustus-hawkins-high-school,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,\n331551,Board of Public Works Agenda,06/25/2018 10:00:00 AM,06/25/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86122332_06252018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-473,,,,,,false,,,,,\n237316,Office of Community Beautification / Castle Heights Elementary,11/18/2017 08:00:00 AM,11/18/2017 01:00:00 PM,Culture & Community,Office of Community Beautification,,Castle Heights Elementary,\"9755 Cattaraugus Avenue\nLos Angeles, CA 90034\n(34.037381, -118.398504)\",https://calendar.lacity.org/event/office-community-beautification-castle-heights-elementary-2,Anna Ruiz,213-978-0231,Anna.Ruiz@lacity.org,\"<p>Gardening, planting and clean up day.</p>\",,false,,,,,\n339871,Board of Public Works Agenda,07/09/2018 10:00:00 AM,07/09/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86122641_07092018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-481,,,,,,false,,,,,\n301011,Office of Community Beautification ~ Celebrating Earth Day,04/14/2018 08:30:00 AM,04/14/2018 11:30:00 AM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),28th Street Elementary School,\"2807 Stanford Avenue\nLos Angeles, CA\n(34.019311, -118.260428)\",https://calendar.lacity.org/event/office-community-beautification-celebrating-earth-day,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,https://calendar.lacity.org/sites/g/files/wph721/f/pastedImage%20%281%29.png\n295031,Office of Community Beautification - Council District 7 Community Clean-Up,04/21/2018 08:30:00 AM,04/21/2018 08:30:00 AM,Culture & Community,Office of Community Beautification,,Council District 7,\"12230 Osborne Place\nLos Angeles, CA 91331\n(34.260918, -118.400252)\",http://calendar.lacity.org/event/office-community-beautification-council-district-7-community-clean,,,,,,false,,,,,\n236016,Los Angeles Convention Center - Ski Dazzle 2017,11/17/2017 03:00:00 PM,11/17/2017 11:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,Ski Dazzle (http://www.skidazzle.com/show-buy-tickets.htm),Los Angeles Convention Center,\"1201 S Figueroa St\nKentia Hall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-ski-dazzle-2017,,,,\"<p>54th Annual presentation of North America’s Largest Consumer Ski & Snowboard Show & Sale</p><p>The Los Angeles Ski Show & Snowboard Expo® features 4 Football Fields of Resorts, Lodging, Accessories and Retail bargains up to 70% off.  Ski Dazzle® has informative seminars, prizes, entertainment, lessons and more!  The Show truly is “A World of Skiing & Snowboarding Under One Roof™”</p>\",,true,Adults: $20; Children (6-12 yrs old): $5;  Children under 6 years old: Free Admission;  Paid parking available on site.,,,,\n361446,Board of Public Works Agenda,08/29/2018 10:00:00 AM,08/29/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86123966_08292018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-531,,,,,,false,,,,,\n229936,Los Angeles Convention Center - Stan Lee's Comic Con 2017,10/28/2017 09:30:00 AM,10/28/2017 06:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,Stan Lee's Comic Con 2017 (https://www.showclix.com/event/StanLeesLAComicCon2017/listing),Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-stan-lees-comic-con-2017-0,,,,\"<p>Stan Lee’s L.A. Comic Con is Los Angeles’ first multi-media pop culture convention, held annually at the Los Angeles Convention Center. L.A. Comic Con assembles the most exciting and innovative in comics, video games, sci-fi, fantasy, horror and all things pop-culture, making Stan Lee's L.A. Comic Con Los Angeles' ultimate pop-culture convention.</p>\",,true,Paid registration.  See Stan Lee Comic Con website for details.  Paid on-site parking available.,,,,\n302926,Office of Community Beautification - Old San Fernando Rd. Tree Planting (Phase II) & Cleanup,04/20/2018 07:30:00 AM,04/20/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),,\"9180 San Fernando Rd\nLos Angeles, CA 91352\n(34.236384, -118.389962)\",https://calendar.lacity.org/event/office-community-beautification-old-san-fernando-rd-tree-planting-phase-ii-cleanup,Ana Huizar,213-978-0224,ana.huizar@lacity.org,,Culture and Community,false,,,All,,https://calendar.lacity.org/sites/g/files/wph721/f/Tree%20Planting_Old%20SF%20Rd%20April%202018.pdf\n301001,Office of Community Beautification ~ Community Clean-Up Day,04/21/2018 09:00:00 AM,04/21/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),HACLA,\"2830 Lancaster Street\nLos Angeles, CA 90033\n(34.057076, -118.194866)\",https://calendar.lacity.org/event/office-community-beautification-community-clean-day,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,https://calendar.lacity.org/sites/g/files/wph721/f/WAGNER%2038873%20-%20Earth%20Day%20Ramona%20Gardens.pdf\n356506,Office of Community Beautification ~ AT&T's Beach Clean-Up,08/24/2018 09:30:00 AM,08/24/2018 12:30:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),AT&T,\"3720 Stephen M White Dr\nSan Pedro, CA 90731\n(33.710574, -118.286079)\",https://calendar.lacity.org/event/office-community-beautification-atts-beach-clean,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,\n316166,Board of Public Works Agenda,05/25/2018 10:00:00 AM,05/25/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86121579_05252018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-438,,,,,,false,,,,,\n306646,Los Angeles Convention Center - AdultCon,05/11/2018 04:00:00 PM,05/11/2018 09:00:00 PM,Shows & Conventions,Convention Center,,Los Angeles Convention Center,\"1201 S Figueroa St West\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-adultcon,,,,,,true,Ticket Prices: $40-$150 / Paid parking available on site at the West Hall parking garage.,,Adult,,\n314156,Build-A-Bot Workshop,06/27/2018 03:30:00 PM,06/27/2018 03:30:00 PM,Family Activity,\"Library, Los Angeles Public\",http://www.lapl.org/whats-on/events/build-bot-workshop,Robertson Branch Library,\"1719 S Robertson Boulevard\nLos Angeles, CA 90035\n(34.048277, -118.385666)\",http://calendar.lacity.org/event/build-bot-workshop-1,,,,\"<p> </p><p>Beginning with a simple circuit, grow your robotics abilities to create autonomous bots using sensors!</p><p> </p><p><a href=\"\"https://lamakerspace.org/\"\">LA Makerspace</a> leads this STEAM program.</p><p> </p><p>Advance RSVP required. Sign up at the branch's Reference Desk, or call 310-840-2147. Attendance at all 4 sessions is recommended. Ages 10 and up.</p>\",,false,,http://calendar.lacity.org/sites/g/files/wph721/f/wall-color-paint-colorful-graffiti-painting-street-art-art-illustration-mural-robot-modern-art_0.jpeg,Teenager,,\n240521,Board of Public Works Official Notice,11/10/2017 10:00:00 AM,11/10/2017 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86116316_11102017.htm,,,http://calendar.lacity.org/event/board-public-works-official-notice-21,,,,,,false,,,,,\n284951,Office of Community Beautification ~ Lemay Elementary School Beautification Day ,04/21/2018 08:00:00 AM,04/21/2018 10:00:00 AM,Culture & Community,,OCB Website (http://dpw.lacity.org/office-community-beautification),,\"17520 Vanowen St\nLos Angeles, CA 91406\",https://calendar.lacity.org/event/office-community-beautification-lemay-elementary-school-beautification-day-0,Ana Huizar,213-978-0224,ana.huizar@lacity.org,,,false,,,All,,\n306436,Board of Public Works Agenda,04/30/2018 10:00:00 AM,04/30/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86120673_04302018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-411,,,,,,false,,,,,\n235716,Office of Community Beautification ~ Green LA Community Clean-Up,10/28/2017 09:00:00 AM,10/28/2017 11:00:00 AM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Green LA,\"2850 East Olympic Boulevard\nLos Angeles, CA\n(34.022686, -118.216172)\",https://calendar.lacity.org/event/office-community-beautification-green-la-community-clean,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,\n324851,Los Angeles Convention Center - Anime Expo 2018,07/08/2018 10:00:00 AM,07/08/2018 03:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,Anime Expo (http://www.anime-expo.org/),Los Angeles Convention Center,\"1201 S Figueroa St\nLos Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-anime-expo-2018-2,,,,\"<p>Anime Expo (AX) brings together fans and industry from Japan, the US, and all over the world for the largest celebration of Japanese pop culture in North America. Taking place every year since 1992, Anime Expo features the best in Japanese entertainment, music, fashion and video games. For more information, visit <a href=\"\"http://www.anime-expo.org/\"\">www.anime-expo.org</a>.</p><p>*Doors open at 10:00am everyday.</p>\",,false,,,,,\n283451,Little Armenia Beautification Project,03/09/2018 04:15:00 PM,03/09/2018 04:15:00 PM,\"Culture & Community, Arts, City Government\",Council District 13,,Rose and Alex Pilibos Armenia School,\"1615 N Alexandria Avenue\nLos Angeles, CA 90027\n(34.100341, -118.298342)\",https://calendar.lacity.org/event/little-armenia-beautification-project,,,,\"<p>Come and drop off your bulky items in support of the Little Armenia Beautification Project hosted by AYF and sponsered by Councilmember Mitch O'Farrell.  Location Rose and Alex Pilibos Armenian School 1615 N Alexandria Ave, Los Angeles, CA 90027.</p>\",,false,,https://calendar.lacity.org/sites/g/files/wph721/f/LABP%20Flyer-1.jpg,All,,https://calendar.lacity.org/sites/g/files/wph721/f/LABP%20Flyer.pdf\n311261,Board of Public Works Agenda,05/14/2018 10:00:00 AM,05/14/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86121210_05142018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-427,,,,,,false,,,,,\n319501,Board of Public Works Agenda,06/06/2018 10:00:00 AM,06/06/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86121767_06062018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-450,,,,,,false,,,,,\n230311,Board of Public Works Agenda,10/16/2017 10:00:00 AM,10/16/2017 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86115700_10162017.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-216,,,,,,false,,,,,\n357816,Office of Community Beautification ~ Boyle Heights Neighborhood Council,08/18/2018 09:00:00 AM,08/18/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Boyle Heights Neighborhood Council,\"811 Spence Street\nLos Angeles, CA 90023\n(34.02734, -118.198086)\",https://calendar.lacity.org/event/office-community-beautification-boyle-heights-neighborhood-council-1,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,https://calendar.lacity.org/sites/g/files/wph721/f/Sweeping%20Saturdays.png\n247736,Office of Community Beautification ~ Project S - Sheldon Skate Park Community Cleanup & Tree Planting ,11/18/2017 08:00:00 AM,11/18/2017 12:00:00 PM,Culture & Community,Board of Public Works,OCB Website (http://dpw.lacity.org/office-community-beautification),,\"12511 Sheldon St\nLos Angeles, CA 91352\n(34.230496, -118.40577)\",https://calendar.lacity.org/event/office-community-beautification-project-s-sheldon-skate-park-community-cleanup-tree-planting-0,Ana Huizar,213-978-0224,ana.huizar@lacity.org,,,false,,,All,,\n363451,Los Angeles Convention Center - Cannabis World Congress & Business Expo,09/27/2018 08:00:00 AM,09/27/2018 06:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,Cannabis World Congress & Business Expo (https://www.cwcbexpo.com/los-angeles/2018/attend),Los Angeles Convention Center,\"1201 S Figueroa St\nLos Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-cannabis-world-congress-business-expo-3,,,,,,true,\"Registration fees range from $85 - $1,000. See website for details. Paid parking available on site.\",,,,\n265371,Los Angeles Convention Center - Cheerleading Championships Competition,01/13/2018 08:00:00 AM,01/13/2018 09:45:00 PM,General Events,Convention Center,GSSA (http://www.gssaonline.com/),Los Angeles Convention Center,\"1201 S Figueroa St South Hall K\nMeeting Rooms Los Angeles, CA 90015\",https://calendar.lacity.org/event/los-angeles-convention-center-cheerleading-championships-competition,,,,,,true,$20 1-day pass / $35 2-day pass (plus service fees) / Paid parking available on site.,,,,\n270761,Board of Public Works Agenda,01/19/2018 10:00:00 AM,01/19/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86117942_01192018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-306,,,,,,false,,,,,\n294141,Board of Public Works Official Notice,03/26/2018 10:00:00 AM,03/26/2018 10:00:00 AM,,,http://ens.lacity.org/bpw/agendas/bpwagendas86119685_03262018.htm,,,http://calendar.lacity.org/event/board-public-works-official-notice-34,,,,,,false,,,,,\n358166,Office of Community Beautification - William Mead Community Clean-Up,08/18/2018 09:00:00 AM,08/18/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,OCB (http://dpw.lacity.org/office-community-beautification),Council District 1,\"1300 Cardinal St\nLos Angeles, CA 90012\n(34.063091, -118.230854)\",https://calendar.lacity.org/event/office-community-beautification-william-mead-community-clean,Leslie Shim,213-978-0227,leslie.shim@lacity.org,,,false,,,All,,\n363446,Los Angeles Convention Center - Cannabis World Congress & Business Expo,09/26/2018 08:00:00 AM,09/26/2018 05:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,Cannabis World Congress & Business Expo (https://www.cwcbexpo.com/los-angeles/2018/attend),Los Angeles Convention Center,\"1201 S Figueroa St\nLos Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-cannabis-world-congress-business-expo-2,,,,,,true,\"Registration fees range from $85 - $1,000. See website for details. Paid parking available on site.\",,,,\n306641,Los Angeles Convention Center - VRLA 2018,05/05/2018 10:00:00 AM,05/05/2018 07:00:00 PM,General Events,Convention Center,VRLA 2018 (https://virtualrealityla.com/),Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-vrla-2018-0,,,,\"VRLA 2018<p>Experience the next generation of immersive and transformative technology at VRLA 2018! At VRLA you will experience the next generation of immersive and transformative technology, building awareness to this rapidly expanding new generation of immersive tech! The VRLA Expo hosts a thriving community of developers, entrepreneurs, enthusiasts and more, all excited and curious about this modern renaissance of virtual reality, augmented reality and immersive technology. </p><p>This year’s theme, ‘A New Reality,’ represents an expansion of the expo’s scope beyond VR and AR to explore new ways emergent technology improves our lives both in and out of the headset. New verticals include AI, internet of things, robotics, blockchain, 3D printing, alternative energy, cryptocurrency, biotech, and more.</p><p>With 12,000+ attendees, hundreds of tech demos, art installations, educational sessions, and product launches, attendees and exhibitors will experience a convergence of the most innovative technologies shaping our world. VRLA provides a platform for you to become embedded in this ecosystem of the future.</p>\",,true,Ticket Prices: $30 - $299 / Paid parking available on site at the South Hall parking garage.,,,,\n347011,Office of Community Beautification - LHTP's Increase the Peace Boyle Heights Clean-Up,07/28/2018 09:00:00 AM,07/28/2018 02:00:00 PM,Culture & Community,Office of Community Beautification,OCB (http://dpw.lacity.org/office-community-beautification),Lincoln Heights Tutorial Program,\"2130 East 1st Street Boyle Heights\nCity Hall Los Angeles, CA 90022\",https://calendar.lacity.org/event/office-community-beautification-lhtps-increase-peace-boyle-heights-clean,Leslie Shim,213-978-0227,leslie.shim@lacity.org,,,false,,,All,,\n294696,Office of Community Beautification ~ Spring Clean-Up,05/05/2018 09:00:00 AM,05/05/2018 01:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Fresco Community Market,\"5914 Monterey Road\nLos Angeles, CA 90042\n(34.104868, -118.184517)\",https://calendar.lacity.org/event/office-community-beautification-spring-clean-0,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,\n298141,Board of Public Works Agenda,04/11/2018 10:00:00 AM,04/11/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86120062_04112018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-389,,,,,,false,,,,,\n238446,Board of Public Works Agenda,11/03/2017 10:00:00 AM,11/03/2017 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86116147_11032017.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-238,,,,,,false,,,,,\n268601,Board of Public Works Agenda,01/17/2018 10:00:00 AM,01/17/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86117818_01172018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-304,,,,,,false,,,,,\n347006,Office of Community Beautification - LAFH Community Clean-Up,07/20/2018 02:00:00 PM,07/20/2018 04:00:00 PM,Culture & Community,Office of Community Beautification,OCB (http://dpw.lacity.org/office-community-beautification),LA Family Housing,\"7816 Simpson Ave\nArminta Stagg Los Angeles, CA 91605\n(34.21237, -118.388876)\",https://calendar.lacity.org/event/office-community-beautification-lafh-community-clean,Leslie Shim,213-978-0227,leslie.shim@lacity.org,,,false,,,All,,\n342171,Office of Community Beautification ~ El Sereno Stallions Community Clean-Up,07/15/2018 09:00:00 AM,07/15/2018 01:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),El Sereno Stallions,\"4910 Huntington Drive South\nLos Angeles, CA 90033\n(34.087016, -118.176098)\",https://calendar.lacity.org/event/office-community-beautification-el-sereno-stallions-community-clean,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,https://calendar.lacity.org/sites/g/files/wph721/f/Stalllions_cleanUp.jpg\n283041,Office of Community Beautification - CD 1 Community Cleanup,03/24/2018 08:00:00 AM,03/24/2018 02:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),,\"2632 w 15th st\nLos Angeles, CA 90006\n(34.0454, -118.298946)\",https://calendar.lacity.org/event/office-community-beautification-cd-1-community-cleanup,Leslie Shim,213-978-0227,leslie.shim@lacity.org,,Culture and Community,false,,,All,,\n355036,Board of Public Works Agenda,08/10/2018 10:00:00 AM,08/10/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86123494_08102018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-518,,,,,,false,,,,,\n268286,Office of Community Beautification ~ MLK Day. National Day of Service,01/15/2018 09:00:00 AM,01/15/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),El Sereno STALLIONS,\"4910 Huntington Drive South\nLos Angeles, CA 90032\n(34.08704, -118.176043)\",https://calendar.lacity.org/event/office-community-beautification-mlk-day-national-day-service,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,\n240751,Ice Breaker: 20th Anniversary Opening Celebration and Birthday Party,11/16/2017 11:00:00 AM,11/16/2017 09:30:00 PM,\"Holiday & Seasonal, Family Activity\",Cultural Affairs,http://holidayicerinkdowntownla.com/los-angeles-events/,,\"532 South Olive Street\nLos Angeles, CA 90013\n(34.048546, -118.25373)\",https://calendar.lacity.org/event/ice-breaker-20th-anniversary-opening-celebration-and-birthday-party,,213-624-4289,,\"<p>Join us as we break the ice to kick-off the holiday season and celebrate 20 years of ice skating in Pershing Square by inviting residents and visitors to a day of free ice skating and fesitivites. The Bai Holiday Ice Rink Pershing Square celebrates the start of its season with a literal “ice breaking” ceremony, where a large ice sculpture is shattered. The epic christening includes a performance from Disney’s ALADDIN, impressive skate performances by LA Ice Theater, California Gold Synchronized Skaters and more. Free ice skating and skate rental will be available all day from 12 p.m. to 9:30 p.m.</p><p>Free skating subjerct to availability on a first come first served basis</p>\",,true,General Admission $9,https://calendar.lacity.org/sites/g/files/wph721/f/homeslideshow_11.jpg,All,,\n279406,Office of Community Beautification ~ Mt. Washington Elementary School Cleanup ,03/10/2018 08:00:00 AM,03/10/2018 11:00:00 AM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Mt. Washington Elementary School,\"3981 San Rafael Ave\nLos Angeles, CA 90065\n(34.104463, -118.215545)\",https://calendar.lacity.org/event/office-community-beautification-mt-washington-elementary-school-cleanup,Ana Huizar,213-978-0224,ana.huizar@lacity.org,,Culture and Community,false,,,All,,\n320906,Board of Public Works Agenda,06/08/2018 10:00:00 AM,06/08/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86121905_06082018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-453,,,,,,false,,,,,\n294166,Board of Public Works Official Notice,03/30/2018 10:00:00 AM,03/30/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86119742_03302018.htm,,,http://calendar.lacity.org/event/board-public-works-official-notice-37,,,,,,false,,,,,\n239196,Los Angeles Convention Center - Naturalization Ceremony,11/16/2017 01:30:00 PM,11/16/2017 02:30:00 PM,General Events,Convention Center,,Los Angeles Convention Center,\"1201 S Figueroa St\nLos Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-naturalization-ceremony-2,,,,,,false,,,,,\n303036,Office of Community Beautification - Earth Day - N.E.W. Academy of Science and Arts School Event,04/21/2018 08:00:00 AM,04/21/2018 01:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://www.laocb.org),N.E.W. Academy of Science and Arts School,\"379 Loma Drive\nLos Angeles, CA 90017\n(34.058788, -118.266669)\",https://calendar.lacity.org/event/office-community-beautification-earth-day-new-academy-science-and-arts-school-event,Anna Ruiz,213-978-0231,Anna.Ruiz@lacity.org,,,false,,https://calendar.lacity.org/sites/g/files/wph721/f/04.21.2018%20-%20Earth%20Day%20-%20NASA%20Tree%20Planting%20and%20Clean-up%20event%20Flyer.jpg,,,\n229886,\"Los Angeles Convention Center - Rock n' Roll LA Half Marathon, Health & Fitness Expo\",10/28/2017 09:00:00 AM,10/28/2017 05:00:00 PM,General Events,Convention Center,Rock n' Roll LA 5K and Half Marathon (http://www.runrocknroll.com/los-angeles/the-weekend/schedule-of-events/),Los Angeles Convention Center,\"1201 S Figueroa St West\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-rock-n-roll-la-half-marathon-health-fitness-expo-0,,,,,,true,Health Expo is free & open to the public.  Paid on-site parking available.,,,,\n262706,Los Angeles Convention Center - The Fit Expo,01/07/2018 10:00:00 AM,01/07/2018 05:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,The Fit Expo (https://www.thefitexpo.com/TFELA_tickets.shtml),Los Angeles Convention Center,\"1201 S Figueroa St\nLos Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-fit-expo-0,,,,\"<p>This action-packed weekend will feature 16 amazing competitions and events, non-stop cutting-edge classes, internet fitness celebrities, and hundreds of exhibits featuring the newest in fitness, diet, nutrition, strength and wellness products, with tons of free samples!Some featured competitions will include: Powerlifting, Ultimate Ninja, Dodgeball, Battle of the Bars, Gracie Jiu-Jitsu, Strongman, MAS Wrestling, Arm Wrestling, the MuscleContest Challenge, and Viking Visegrip Challenge.</p><p>In addition, there will be a group exercise program featuring the latest fitness craze, tons of celebrity athlete appearances and our popular “Healthy Living Pavilion” which features delicious cooking demonstrations, recipe makeovers and plenty of sampling. </p>\",,true,$30 per day; $45 for Sat & Sun; cash only at the door or purchase on-line,,,,\n299566,Board of Public Works Agenda,04/13/2018 10:00:00 AM,04/13/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86120206_04132018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-392,,,,,,false,,,,,\n248761,United Way Annual Homewalk,11/18/2017 06:30:00 AM,11/18/2017 06:30:00 AM,\"Culture & Community, General Events\",Cultural Affairs,http://UnitedWayLA.org,Grand Park,\"200 N Grand Ave\nLos Angeles, CA 90012\n(34.05743, -118.247207)\",https://calendar.lacity.org/event/united-way-annual-homewalk,,,homewalk@unitedwayla.org,\"<p>Join the 11th Annual Homewalk.Register to walk and fundraise to end homelessness. Join us on Saturday, Nov. 18, at Grand Park in downtown Los Angeles. Online registration closes Nov. 17, at 12 PM (PST).</p><p>Visit website for more information.</p>\",,false,,https://calendar.lacity.org/sites/g/files/wph721/f/Updated_HomeWalk_Header-01.jpg,All,,\n294741,Los Angeles Convention Center - Dwell on Design,04/06/2018 10:00:00 AM,04/06/2018 05:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,Dwell on Design (https://www.dwellondesign.com/en/home.html),Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-dwell-design-3,,,,\"<p>Dwell on Design aims to have participating brands that collectively represent what it means to be modern. Interiors, exteriors, and everything in between... each Dwell on Design brand encompasses a certain uniqueness. A uniqueness that strives to answer the question of where modern will take us tomorrow.</p>\",,true,$25 - $695 (go to www.dwellondesign.com for details) / paid parking available on site (South Hall parking garage),,,,\n235786,Los Angeles Convention Center - The Real Estate Wealth Expo,11/05/2017 08:00:00 AM,11/05/2017 06:45:00 PM,General Events,Convention Center,The Real Estate Wealth Expo (https://realestatewealthexpo.com/losangeles),Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-real-estate-wealth-expo-0,,,questions@realestatewealthexpo.com,\"<p>LA’s LARGEST REAL ESTATE WEALTH EXPO</p><p>Our Real Estate Wealth Expos are high-energy experiences for investors, home owners, realtors, entrepreneurs, sales people, celebrities, and fans to come together and learn 100’s of ways to make money!</p><p>Featuring: 3-hour training with Tony Robbins; Genius Talk with Earvin “Magic” Johnson, a special live performance by Pitbull, personal finance guru Suze Orman; and more than 28 non-stop classes on real estate, investing and sales.</p><p>Registration required.  Attendees must be 18 years or older.</p><p> </p>\",,true,Registration required.  Please go to The Real Estate Wealth Expo for details.,,Adult,,\n301016,Office of Community Beautification ~ Green Meadows,04/14/2018 08:00:00 AM,04/14/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Fremont Wellness Center and Community Garden,\"7821 South Avalon Boulevard\nLos Angeles, CA 90003\n(33.968216, -118.265143)\",https://calendar.lacity.org/event/office-community-beautification-green-meadows,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,\n342311,Los Angeles Convention Center - Naturalization Ceremony,07/25/2018 07:00:00 AM,07/25/2018 10:00:00 AM,General Events,Convention Center,,Los Angeles Convention Center,\"1201 S Figueroa St West\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-naturalization-ceremony-11,,,,,,false,,,,,\n235006,Board of Public Works Agenda,10/23/2017 10:00:00 AM,10/23/2017 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86115912_10232017.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-224,,,,,,false,,,,,\n312406,Office of Community Beautification - Mission Hills Neighborhood Council Clean-Up,05/19/2018 09:00:00 AM,05/19/2018 11:30:00 AM,Culture & Community,Office of Community Beautification,OCB (http://dpw.lacity.org/office-community-beautification),Mission Hills Neighborhood Council,\"Devonshire Woodman Los Angeles, CA 91345\n(34.265253, -118.461801)\",https://calendar.lacity.org/event/office-community-beautification-mission-hills-neighborhood-council-clean,Leslie Shim,,leslie.shim@lacity.org,,,false,,,All,,\n247751,\"Navidad en la Calle Ocho, Los Angeles\",12/02/2017 12:00:00 PM,12/03/2017 10:00:00 PM,\"Culture & Community, Fairs & Festivals, Holiday & Seasonal\",Cultural Affairs,http://www.calleochola.com/,,\"3305 W 8th St\nLos Angeles, CA 90005\n(34.057707, -118.29998)\",https://calendar.lacity.org/event/navidad-en-la-calle-ocho-los-angeles,Mercadeo Y. Ventas,213-388-8291,info@calleochola.com,\"<p>The Christmas Navidad en la Calle Ocho festival is considered the biggest toy giveaway and one of the most important festivals in the community.</p><p>This two-day event will include entertainment on four stages, free toys and products, clowns, and small rides.</p><p>Come celebrate the joy of the Christmas spirit and the happiness of children.</p>\",,false,,https://calendar.lacity.org/sites/g/files/wph721/f/calleochola.PNG,All,,\n282981,Los Angeles Convention Center - Film Con Hollywood,03/24/2018 08:00:00 AM,03/24/2018 11:30:00 PM,General Events,Convention Center,FilmCon Hollywood (https://www.filmconhollywood.com/),Los Angeles Convention Center,\"1201 S Figueroa St West\nHall Meeting Rooms Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-film-con-hollywood,,,,\"<p>Film Con Hollywood is an interactive and engaging gathering for young people in film and media who want to connect, collaborate, and create content with others at similar stages, and form a self-empowered community. </p>\",,true,\"$129.99 admission fee, plus on-line fees / paid parking available on site\",,,,\n294756,Los Angeles Convention Center - International Gem & Jewelry Show,04/07/2018 10:00:00 AM,04/07/2018 06:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,International Gem & Jewelry Show (https://www.intergem.com/tickets/los-angeles-ca-april-6-8),Los Angeles Convention Center,\"1201 S Figueroa St\nPetree Hall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-international-gem-jewelry-show-3,,,,\"<p>Shop direct from designers, wholesalers and manufacturers for the largest selection at the lowest prices! Why pay retail when you can shop-til-you-drop in a marketplace setting for the best prices in the industry? Visit America's longest running direct-to-consumer jewelry trade show in Los Angeles!</p><p>Find Something For Everyone!   Diamonds • Gemstones • Pearls • Chains • Beads • Supplies • Fine Jewelry • Estate and Antique Jewelry • Opals • Minerals • Crystals • Settings • Rings • Bracelets • Necklaces • Earrings • Watches • Gold • Silver • Costume Jewelry • Handcrafted Finished Jewelry • Findings • Accessories • And So Much More!</p><p>InterGem was founded in 1967 by Herbert A. Duke, Sr. as the first direct-to-consumer jewelry trade show in America. Herb was an avid gemologist and artist. He brought his love of gemstones, minerals and handcrafted art to the masses with InterGem where shoppers can buy direct from designers, wholesalers and manufacturers in a marketplace setting. Celebrating our 50th Anniversary in 2017, we have stood the test of time and have become America's longest running and most beloved jewelry show!</p>\",,true,$6 admission fee / paid parking available on site (West Hall parking garage),,,,\n248196,Los Angeles Convention Center - LA Auto Show 2017,12/07/2017 09:00:00 AM,12/07/2017 10:00:00 PM,Shows & Conventions,Convention Center,LA Auto Show Tickets (https://laautoshow.com/tickets/#general-admission),Los Angeles Convention Center,\"1201 S Figueroa St\nLos Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-la-auto-show-2017-5,,,,\"<p>Whether you’re in-market for a new vehicle or planning for the future, the LA Auto Show is your one-stop-shop for comparison shopping cars, trucks, SUVs, electric vehicles and concepts. Hassle-free, stress-free, and about 1,000 vehicles to choose from.  Outside the LA Convention Center, attendees can enjoy pressure-free test drives of nearly 100 of the latest models.  ”The Garage\"\" - accessible via South Hall Atrium’s escalators - is one of the world's largest and most eclectic collections of renowned tuners, customizers, aftermarket goods and exotics.  While the adults shop, there is plenty for the kids to experience. From video games, virtual reality demos, and kids’ play zones, there is plenty to keep them entertained. Tickets for children ages 6-12 are $5 and children under 6 are free with a paying adult.</p>\",,true,Child (6-12): $5; Adult (13-64): $15; Senior (65+): $10 / Paid parking available.,,,,\n359166,Office of Community Beautification - NoHo NC September 2018 Cleanup,09/08/2018 09:00:00 AM,09/08/2018 11:00:00 AM,Culture & Community,Office of Community Beautification,OCB (http://dpw.lacity.org/office-community-beautification),NoHo NC,\"12240 Archwood St North\nHollywood, CA 91606\n(34.192127, -118.400769)\",https://calendar.lacity.org/event/office-community-beautification-noho-nc-september-2018-cleanup,Leslie Shim,213-978-0227,leslie.shim@lacity.org,,,false,,,All,,\n239836,Board of Public Works Agenda,11/08/2017 10:00:00 AM,11/08/2017 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86116229_11082017.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-246,,,,,,false,,,,,\n274106,Office of Community Beautification ~ Environmental Charter School,02/17/2018 08:00:00 AM,02/17/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Environmental Charter School,\"812 West 165th Street\nLos Angeles, CA\",https://calendar.lacity.org/event/office-community-beautification-environmental-charter-school,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,\n276421,Office of Community Beautification ~ LA Family Housing Community Cleanup,02/16/2018 02:00:00 PM,02/16/2018 04:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),,\"North Hollywood, CA 91605\n(34.207788, -118.401658)\",https://calendar.lacity.org/event/office-community-beautification-la-family-housing-community-cleanup,Ana Huizar,213-978-0224,ana.huizar@lacity.org,,,false,,,All,,\n324181,Los Angeles Convention Center - BET Experience & Awards 2018,06/24/2018 08:00:00 AM,06/24/2018 08:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,2018 BET Experience (https://www.bet.com/bet-experience.html),Los Angeles Convention Center,\"1201 S Figueroa St\nLos Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-bet-experience-awards-2018-0,,,,,,false,,,,,\n229781,Los Angeles Convention Center - American Society of Landscape Architects Annual Conference,10/23/2017 07:00:00 AM,10/23/2017 07:00:00 PM,General Events,Convention Center,ASLA (https://www.aslameeting.com/),Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-american-society-landscape-architects-annual-conference-2,,,,,,true,Paid registration.  See ASLA website for details.,,,,\n257521,Office of Community Beautification ~ LA Family Housing ~ North Hollywood Cleanup ,12/15/2017 02:00:00 PM,12/15/2017 04:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),,\"7843 Lankershim Blvd North\nHollywood, CA 91605\n(34.213543, -118.38779)\",https://calendar.lacity.org/event/office-community-beautification-la-family-housing-north-hollywood-cleanup-0,Ana Huizar,2139780224,ana.huizar@lacity.org,,Culture and Community,false,,,All,,\n306726,Office of Community Beautification - Pod 26 Native Plant Garden,05/04/2018 09:15:00 AM,05/31/2018 01:00:00 PM,Culture & Community,Office of Community Beautification,OCB (http://dpw.lacity.org/office-community-beautification),Vaughn Next Century Learning Charter,\"1311 Pennsylvania\nLos Angeles 90033\n(34.052357, -118.221391)\",https://calendar.lacity.org/event/office-community-beautification-pod-26-native-plant-garden,Leslie Shim,5627144319,leslie.shim@lacity.org,,,false,,,All,,\n310811,Los Angeles Convention Center - Naturalization Ceremony,05/23/2018 11:45:00 AM,05/23/2018 02:30:00 PM,General Events,Convention Center,,Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-naturalization-ceremony-10,,,,,,false,,,,,\n241201,Board of Public Works Agenda,11/15/2017 10:00:00 AM,11/15/2017 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86116435_11152017.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-252,,,,,,false,,,,,\n271171,Board of Public Works Agenda,01/22/2018 10:00:00 AM,01/22/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86117966_01222018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-312,,,,,,false,,,,,\n279641,Office of Community Beautification - Jefferson Park Cleanup,02/24/2018 09:00:00 AM,02/24/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,,CD 10 / UNNC,\"Adams\nLos Angeles, CA 90018\",https://calendar.lacity.org/event/office-community-beautification-jefferson-park-cleanup,Anna Ruiz,213-978-0231,Anna.Ruiz@lacity.org,,,false,,,,,\n265631,Los Angeles Convention Center - Naturalization Ceremony,01/18/2018 09:00:00 AM,01/18/2018 10:00:00 AM,General Events,Convention Center,,Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-naturalization-ceremony-5,,,,,,false,,,,,\n230501,Peace March,10/14/2017 09:00:00 AM,10/14/2017 09:00:00 AM,\"Culture & Community, General Events\",Neighborhood Empowerment,http://lincolnheightsnc.org/peace-march-october-14-2017/,Boys and Girls Club,\"2635 Pasedena Ave\nLos Angeles, CA 90031\n(34.077874, -118.215253)\",https://calendar.lacity.org/event/peace-march,,323-221-9111,,\"<p>The Lincoln Heights Neighborhood Council is committed to making our town one that meets the needs of those who live in it.</p><p>The march will begin and end at LA Boys and Girls Club (2 miles). \"\"Together we are the face and voice for peace in the community,\"\" says Councilmember Gil Cedillo&#8203;.</p><p>There will be variety of information and resource booths, free BBQ food and refreshments, and kids activities</p>\",,false,,https://calendar.lacity.org/sites/g/files/wph721/f/10-14-17_LH_Peace_March_Flyer-_English.jpg,All,,\n236896,Office of Community Beautification ~ LA on Cloud 9 ,10/28/2017 08:00:00 AM,10/28/2017 12:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),LA on Clound 9,\"6033 South Central Avenue\nLos Angeles, CA\n(33.985076, -118.25644)\",https://calendar.lacity.org/event/office-community-beautification-la-cloud-9-0,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,\n282936,Los Angeles Convention Center - LA Fashion Week by The Model Experience,03/10/2018 11:00:00 AM,03/10/2018 08:30:00 PM,General Events,Convention Center,LA Fashion Week - Eventbrite Ticket Purchase (https://www.eventbrite.com/e/la-fashion-week-tickets-43669222821),Los Angeles Convention Center,\"1201 S Figueroa St\nLos Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-la-fashion-week-model-experience,,,,\"<p>This is a Red Carpet event showcasing some of the hottest emerging designers worldwide. All ages event, alcohol available for purchase. Dress to Impress. Photography is welcome.</p><p>Showtimes:11:00 AM1:30 PM3:30 PM5:30 PM7:30 PM</p>\",,true,\"$65 Admission, plus on-line processing fee / Paid parking available on site.\",,,,\n363476,Los Angeles Convention Center - U.S. China TV & Film Industry Expo,09/27/2018 10:00:00 AM,09/27/2018 04:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,U.S. China TV & Film Industry (http://ucftiexpo.com/),Los Angeles Convention Center,\"1201 S Figueroa St West\nHall B Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-us-china-tv-film-industry-expo-0,,,,\"<p>UCFTI Expo is your all-in-one exposition for all things U.S.-China entertainment. From innovative Television Panel Discussions and relevant Creative & Technical Workshops to U.S. and China Exhibit Booths, this great networking opportunity is attended by influential Hollywood and Chinese professionals from the movie and television industry.</p>\",,true,Fees range from $120 to $240.  See U.S. China TV & Film Industry website for details. / Paid parking available on site.,,,,\n239096,Hollywood Forever Cemetery Walking Tour,11/04/2017 10:00:00 AM,11/04/2017 12:00:00 PM,Tours,Cultural Affairs,http://www.cemeterytour.com/,Hollywood Forever,\"6000 Santa Monica Blvd\nHollywood, CA 90038\n(34.090746, -118.31903)\",https://calendar.lacity.org/event/hollywood-forever-cemetery-walking-tour,,818-517-5988,,\"<p>Join as film historian Karie Bible leads guests on the official walking tour of \"\"The Cemetery of the Stars\"\"Come visit legendary notables such as Cecil B. Demille, Marion Davies, Tyrone Power, Rudolph Valentino, Vampira, John Huston, Carl \"\"Alfalfa\"\" Switzer, Judy Garland, Mickey Rooney and more.</p><p>It is a great overview of the cemetery and its most famous residents.</p><p>The tour is $20.00 per person and lasts 2 1/2 hours long. There is an additional $1.00 service charge to book online. No advance reservations required.</p><p>Tour dates can be subject to change, so check back or call 818-517-5988 to confirm.</p>\",,true,$20.00 per person,https://calendar.lacity.org/sites/g/files/wph721/f/kb_press_photo_3_copy.jpg,\"Adult, Young Adult\",,\n285256,Board of Public Works Agenda,03/21/2018 10:00:00 AM,03/21/2018 10:00:00 AM,City Government,Board of Public Works,,,,http://calendar.lacity.org/event/board-public-works-agenda-372,,,,,,false,,,,,\n306681,Los Angeles Convention Center - RuPaul's DragCon,05/13/2018 10:00:00 AM,05/13/2018 04:00:00 PM,Shows & Conventions,Convention Center,RuPaul's DragCon (http://rupaulsdragcon.com/),Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-rupauls-dragcon-1,,,,\"<p>Three days celebrating art, pop culture, and all things Drag! </p><p>RuPaul’s DragCon is the only place to kiki with your favorite drag queens and stars all under one roof! Come through and meet your faves, snap a selfie, and get your life! Here at DragCon it is RuPaul’s Best Friends Race!</p>\",,true,Ticket Prices: $40-$250 / Paid parking available on site at the South Hall parking garage.,,,,\n353716,Councilmember in Your Corner: Historic Filipinotown,08/25/2018 09:30:00 AM,08/25/2018 12:00:00 PM,\"General Events, City Government, Environment\",Council District 13,www.cd13.org (http://cd13.cityofla.acsitefactory.com/events),LAPD Metropolitan Division Facility,\"2710 W Temple Street\nLos Angeles, CA 90026\n(34.073017, -118.276045)\",https://calendar.lacity.org/event/councilmember-your-corner-historic-filipinotown-0,Sylvan De La Cruz,213-207-3015,sylvan.delacruz@lacity.org,\"<p>Councilmember Mitch O&#39;Farrell invites you to join buisness and community leaders as we meet neighbors and learn about city serives, and beautity the communitty! </p><p> </p><p>Saturday, August 25, 2018</p><p>9:30am-12:00pm</p><p>LAPD Metropolitan Division Facility</p><p>2710 W. Temple Street, Los Angeles, CA 90026.</p>\",,false,,https://calendar.lacity.org/sites/g/files/wph721/f/CYC%20August%202018-page-001_0.jpg,All,,\n324841,Los Angeles Convention Center - Anime Expo 2018,07/06/2018 10:00:00 AM,07/06/2018 06:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,Anime Expo (http://www.anime-expo.org/),Los Angeles Convention Center,\"1201 S Figueroa St\nLos Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-anime-expo-2018-0,,,,\"<p>Anime Expo (AX) brings together fans and industry from Japan, the US, and all over the world for the largest celebration of Japanese pop culture in North America. Taking place every year since 1992, Anime Expo features the best in Japanese entertainment, music, fashion and video games. For more information, visit <a href=\"\"http://www.anime-expo.org/\"\">www.anime-expo.org</a>.</p><p>*Doors open at 10:00am everyday.</p>\",,false,,,,,\n254996,Los Angeles Convention Center - Naturalization Ceremony,12/21/2017 09:00:00 AM,12/21/2017 10:00:00 AM,General Events,Convention Center,,Los Angeles Convention Center,\"1201 S Figueroa St West\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-naturalization-ceremony-3,,,,,,false,,,,,\n359856,Office of Community Beautification ~ Shackelford Miracle Temple Church Community Clean-Up,08/26/2018 09:00:00 AM,08/26/2018 01:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Shackerlford Miracle Church,\"6025 South Figueroa\nLos Angeles, CA 90007\",https://calendar.lacity.org/event/office-community-beautification-shackelford-miracle-temple-church-community-clean,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,\n230506,CUBA IS,10/14/2017 11:00:00 AM,10/14/2017 03:00:00 PM,\"Culture & Community, Arts, Family Activity\",Cultural Affairs,https://www.thefamilysavvy.com/2017/10/cuba-is-at-the-annenberg-space-for-photography/,Annenberg Skylight Studios,\"10050 Constellation\nLos Angeles, CA 90067\n(34.059999, -118.414095)\",https://calendar.lacity.org/event/cuba,,,,\"<p>CUBA IS uses photography to show what life on the island is like today.</p><p>Key to understanding the material is a short documentary about the how five of the photographers pursued their subjects.</p><p>A second exhibit about contemporary activists and thought-leaders in the country, at nearby Skylight Studios, allows visitors a glimpse of life in Cuba right now. Don’t miss the film about the photographers because it offers much about the country’s current state.</p><p>And a bakery and nightclub set complete the immersive experience, you can order a snack from one of LA's excellent Cuban bakeries, and sit in a nightclub and look through VR glasses to learn more about life in this exotic locale.</p>\",,false,,https://calendar.lacity.org/sites/g/files/wph721/f/6D8F336E-0A3D-47DB-ADF9-770F4D5B51F9-683x1024.jpg,All,,\n276776,Board of Public Works Agenda,02/14/2018 10:00:00 AM,02/14/2018 10:00:00 AM,City Government,,http://ens.lacity.org/bpw/agendas/bpwagendas86118553_02142018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-336,,,,,,false,,,,,\n314921,Office of Community Beautification ~ Avalon Gardens Resident Advisory Council,06/16/2018 09:00:00 AM,06/16/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Avalon Gardens Resident Advisory Council,\"701 East 88th Place\nLos Angeles, CA 90002\n(33.9565, -118.26293)\",https://calendar.lacity.org/event/office-community-beautification-avalon-gardens-resident-advisory-council,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,\n309531,Office of Community Beautification ~ Hermon Neighborhood Council Clean-Up,05/05/2018 09:00:00 AM,05/05/2018 01:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Fresco Community Market,\"5914 Monterey Road\nLos Angeles, CA 90042\n(34.104868, -118.184517)\",https://calendar.lacity.org/event/office-community-beautification-hermon-neighborhood-council-clean,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,https://calendar.lacity.org/sites/g/files/wph721/f/HERMON%20CLEAN%20UP.jpg\n277856,Office of Community Beautification ~ Overland Ave Cleanup Day,02/24/2018 10:00:00 AM,02/24/2018 01:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Palms Neighborhood Council,\"Overland Ave Los Angeles, CA 90034\n(34.030429, -118.399737)\",https://calendar.lacity.org/event/office-community-beautification-overland-ave-cleanup-day,Ana Huizar,213-978-0224,ana.huizar@lacity.org,,Culture and Community,false,,,All,,\n247786,Office of Community Beautification ~ LA Family Housing North Hollywood Cleanup ,11/17/2017 02:00:00 PM,11/17/2017 04:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),,\"7843 Lankershim Blvd\nLos Angeles, CA 91605\n(34.213543, -118.38779)\",https://calendar.lacity.org/event/office-community-beautification-la-family-housing-north-hollywood-cleanup,Ana Huizar,213-978-0224,ana.huizar@lacity.org,,Culture and Community,false,,,All,,\n303251,Board of Public Works Agenda,04/23/2018 10:00:00 AM,04/23/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86120458_04232018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-402,,,,,,false,,,,,\n253551,L.A. Zoo Lights: Family New Year's Eve,12/31/2017 06:00:00 PM,12/31/2017 09:00:00 PM,\"Holiday & Seasonal, Family Activity\",\"Zoo, Los Angeles\",https://lazoo.showare.com/eventperformances.asp?evt=16,Los Angeles Zoo,\"5333 Zoo Dr\nLos Angeles, CA 90027\n(34.148307, -118.283371)\",https://calendar.lacity.org/event/la-zoo-lights-family-new-years-eve,,866-949-8007,,\"<p>Celebrate the new year in style with express entry to L.A. Zoo Lights, a dinner buffet that includes soft drinks and dessert, a carousel ride, games, DJ dance party, and live broadcast of the Times Square ball drop.Raise a toast to the new year with complimentary champagne for adults (21+) and sparkling apple cider for kids. Cash bar available. After the party, families are welcome to enjoy L.A. Zoo Lights until closing. Fun for all ages!</p><p>Ticket prices: $69 for adults and $45 for children.Member ticket prices: $64 for adults and $40 for children.Children under 2 are free, however a ticket is required.</p><p>Dinner served from 6 - 8 p.m.Holiday Desserts served from 7 - 9 p.m.</p>\",,true,,https://calendar.lacity.org/sites/g/files/wph721/f/FNYE_Promo450.jpg,All,,\n278406,Board of Public Works Agenda,02/21/2018 10:00:00 AM,02/21/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86118719_02212018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-343,,,,,,false,,,,,\n334266,Office of Community Beautification - BHNC - Blueberry Hill Cleanup,06/27/2018 09:00:00 AM,06/27/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,,,\"2731 E 6th Street\nLos Angeles, CA 90023\n(34.035385, -118.208983)\",https://calendar.lacity.org/event/office-community-beautification-bhnc-blueberry-hill-cleanup,Anna Ruiz,213-978-0231,Anna.Ruiz@lacity.org,,,false,,,,,\n282996,\"Los Angeles Convention Center - Exchange LA, Marshmello Concert\",03/31/2018 08:00:00 PM,04/01/2018 12:00:00 AM,\"General Events, Shows & Conventions\",Convention Center,Exchange LA Marshmello Concert (https://insomniac.frontgatetickets.com/event/2pnspe5rp8o8kpfr),Los Angeles Convention Center,\"1201 S Figueroa St West\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-exchange-la-marshmello-concert,,,,,,true,\"$40 - $179 admission, plus fees / paid parking available on site\",,,,\n285536,Office of Community Beautification ~ Arleta High School Cleanup ,03/19/2018 02:00:00 PM,03/19/2018 05:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),,\"9300 Laurel Canyon Blvd\nLos Angeles, CA 91331\n(34.238253, -118.410405)\",https://calendar.lacity.org/event/office-community-beautification-arleta-high-school-cleanup,Ana Huizar,213-978-0224,ana.huizar@lacity.org,,Culture and Community,false,,,All,,\n234491,Office of Community Beautification ~ West Adams Prep High School,11/04/2017 08:30:00 AM,11/04/2017 12:30:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),West Adams High School,\"1500 West Washington Boulevard\nLos Angeles, CA\n(34.04001, -118.289685)\",https://calendar.lacity.org/event/office-community-beautification-west-adams-prep-high-school-1,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,\n294971,Board of Public Works Agenda,04/04/2018 10:00:00 AM,04/04/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86119887_04042018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-383,,,,,,false,,,,,\n230071,Office of Community Beautification ~ Community Clean Up,10/14/2017 08:30:00 AM,10/14/2017 08:30:00 AM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),,\"Osborne Place Los Angeles, CA 91331\n(34.255322, -118.42306)\",https://calendar.lacity.org/event/office-community-beautification-community-clean,Ana Huizar,213-978-0224,ana.huizar@lacity.org,,Culture and Community,false,,,All,,\n248171,Los Angeles Convention Center - LA Auto Show 2017,12/02/2017 09:00:00 AM,12/02/2017 10:00:00 PM,Shows & Conventions,Convention Center,LA Auto Show Tickets (https://laautoshow.com/tickets/#general-admission),Los Angeles Convention Center,\"1201 S Figueroa St\nLos Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-la-auto-show-2017-0,,,,\"<p>Whether you’re in-market for a new vehicle or planning for the future, the LA Auto Show is your one-stop-shop for comparison shopping cars, trucks, SUVs, electric vehicles and concepts. Hassle-free, stress-free, and about 1,000 vehicles to choose from.  Outside the LA Convention Center, attendees can enjoy pressure-free test drives of nearly 100 of the latest models.  ”The Garage\"\" - accessible via South Hall Atrium’s escalators - is one of the world's largest and most eclectic collections of renowned tuners, customizers, aftermarket goods and exotics.  While the adults shop, there is plenty for the kids to experience. From video games, virtual reality demos, and kids’ play zones, there is plenty to keep them entertained. Tickets for children ages 6-12 are $5 and children under 6 are free with a paying adult.</p>\",,true,Child (6-12): $5; Adult (13-64): $15; Senior (65+): $10 / Paid parking available.,,,,\n314601,Office of Community Beautification - Estrella Park Clean-Up,05/17/2018 08:00:00 AM,05/19/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,OCB (http://dpw.lacity.org/office-community-beautification),Council District 1,\"2019 Estrella Ave\nLos Angeles, CA 90007\n(34.033406, -118.275714)\",https://calendar.lacity.org/event/office-community-beautification-estrella-park-clean,Leslie Shim,,leslie.shim@lacity.org,,,false,,,All,,\n240726,Army Corps Flood Awareness Public Meeting,11/13/2017 06:00:00 PM,11/13/2017 08:00:00 PM,\"City Government, Environment\",,11/13/17 Army Corps Flood Awareness Public Meeting (http://www.lariver.org),Friendship Auditorium,\"3201 Riverside Dr\nLos Angeles, CA 90027\n(34.113664, -118.268957)\",https://calendar.lacity.org/event/army-corps-flood-awareness-public-meeting,\"Asset Management Division, Operation and Maintenance Branch\",213-452-3294,AMoperations.Branch@usace.army.mil,\"<p>The U.S. Army Corps of Engineers, Los Angeles District, will hold a public workshop on November 13th, 2017 to discuss the Corps’ flood risk management activities, existing flood risk, access and use and other topics that are relevant to the Los Angeles River within the area referred to as “Glendale Narrows.” The Corps will host several stations with displays where the public can ask questions and receive information from subject matter experts. </p>Station Topics:• Flood risk management strategies specific to the Los Angeles River• Non-native vegetation removal activities and processes• Hydraulic conditions in the river, including barrier function• General Los Angeles County Drainage Area Operations and Maintenance program, budgeting, and schedule• River access• Trash and debris removal volunteer opportunities• Corps 101\",LA River,false,,https://calendar.lacity.org/sites/g/files/wph721/f/US%20Army%20Corps%20Public%20Workshop%202017-page-001.jpg,,,\n316541,Board of Public Works Official Notice,05/28/2018 10:00:00 AM,05/28/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86121642_05282018.htm,,,http://calendar.lacity.org/event/board-public-works-official-notice-45,,,,,,false,,,,,\n324856,Los Angeles Convention Center - Beautycon LA 2018,07/14/2018 12:00:00 PM,07/14/2018 06:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,Beautycon (https://beautycon.com/festival/los-angeles/),Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-beautycon-la-2018,,,,\"<h2><strong>PLANET BEAUTYCON,<br />A SPACE TO BE YOU</strong></h2><p>Join us for two days of panel discussions, meetups, and infinite inspiration. Celebrate the power of beauty, with more than 500 creators and 100+ brand experiences from your favorite beauty and health & wellness brands. We invite you to break the confines of space and time and skyrocket with us to another planet -- where none of the old rules apply, and everything that you think is beautiful IS.</p>\",,true,\"$50 - $2000, plus processing fees / paid parking available on site\",,,,\n322671,Board of Public Works Agenda,06/11/2018 10:00:00 AM,06/11/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86121948_06112018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-458,,,,,,false,,,,,\n351081,Board of Public Works Agenda,08/01/2018 10:00:00 AM,08/01/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86123278_08012018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-505,,,,,,false,,,,,\n284446,USC Gould School of Law Immigration Clinic,03/24/2018 09:00:00 AM,03/24/2018 03:00:00 PM,\"General Events, City Government\",Council District 13,USC Gould School of Lae Immigration Clinic (http://gould.usc.edu/academics/experiential/clinics/immigration/),Vermont Slauson Economic Development Center,\"1130 W Slauson Avenue\nLos Angeles, CA 90044\n(33.989113, -118.294511)\",https://calendar.lacity.org/event/usc-gould-school-law-immigration-clinic,Fernando Borja,(323) 753-2335,fborja@vsedc.org,\"<p>Free Citizenship Classes will be offered at the Vermont Slauson EDC on: Mondays & Tuesdays 10Am-1pm from February 5th, 2018- June 4th, 2018. To register please contact Fernando Borja (323) 753-2335 or at fborja@vsedc.org</p>\",,false,,https://calendar.lacity.org/sites/g/files/wph721/f/March%2024th%20Citizenship%20Clinic%20at%20Vermont%20Slauson%20EDC-1.jpg,All,,https://calendar.lacity.org/sites/g/files/wph721/f/March%2024th%20Citizenship%20Clinic%20at%20Vermont%20Slauson%20EDC.PDF\n229756,Los Angeles Convention Center - Naturalization Ceremony,10/17/2017 09:00:00 AM,10/17/2017 10:00:00 AM,General Events,Convention Center,,Los Angeles Convention Center,\"1201 S Figueroa St West\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-naturalization-ceremony,,,,,,false,,,,,\n265621,Los Angeles Convention Center - Simulation Healthcare IMSH 2018 Annual Meeting,01/15/2018 07:00:00 AM,01/15/2018 05:00:00 PM,General Events,Convention Center,IMSH (http://imsh2018.com/attendees/registration-exhibit-fees),Los Angeles Convention Center,\"1201 S Figueroa St\nLos Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-simulation-healthcare-imsh-2018-annual-meeting-0,,,,,,true,$250 - $1125 See website for details. / Registration required. / Paid parking available on site.,,,,\n282971,Los Angeles Convention Center - LA Marathon Health & Fitness Expo,03/16/2018 10:00:00 AM,03/16/2018 07:00:00 PM,General Events,Convention Center,,Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-la-marathon-health-fitness-expo,,,,\"<p>The Health & Fitness Expo hosts over 120 exhibitors featuring brand-new running gear and shoes, as well as the latest developments in sports, fitness, and nutrition.  In addition, the Expo is the home of Participant Packet Pick-Up for all marathon runners.</p>\",,true,free admission / paid parking available on site,,,,\n365426,Board of Public Works Official Notice,09/10/2018 10:00:00 AM,09/10/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86124352_09102018.htm,,,http://calendar.lacity.org/event/board-public-works-official-notice-55,,,,,,false,,,,,\n364886,Board of Public Works Agenda,09/07/2018 10:00:00 AM,09/07/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86124180_09072018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-538,,,,,,false,,,,,\n306651,Los Angeles Convention Center - AdultCon,05/12/2018 01:00:00 PM,05/12/2018 09:00:00 PM,Shows & Conventions,Convention Center,,Los Angeles Convention Center,\"1201 S Figueroa St West\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-adultcon-0,,,,,,true,Ticket Prices: $40-$150 / Paid parking available on site at the West Hall parking garage.,,Adult,,\n349691,Los Angeles Convention Center - Wekfest LA 2018,08/05/2018 01:00:00 PM,08/05/2018 06:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,Wekfest LA 2018 (http://wekfest-usa.com/2018events/wekfest-los-angeles-2018/),Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-wekfest-la-2018,,,,\"<p>Wekfest is a showcase exhibition of individuals and businesses from the aftermarket automotive industry.</p><p>A combination of celebrating refined automotive passion, and blending with the sub cultures of today&#39;s youth, Wekfest is the preferred destination to a well rounded automotive gathering.</p><p>The process to participate as an exhibitor at Wekfest requires careful screening and review. Our selective process promotes a higher standard, to ensure the car community receives a balance of positive unification and growth.</p><p>Since its establishment in 2008, from the humble beginnings of an underground garage in Japantown, San Francisco, Wekfest has grown to serve eight domestic cities in the United States, and one internationally in Japan. </p>\",,true,General Admission: $25 / 11 & under free admission / $5 discount for military with proper ID,,,,\n313921,Board of Public Works Agenda,05/18/2018 10:00:00 AM,05/18/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86121419_05182018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-432,,,,,,false,,,,,\n274716,Board of Public Works Agenda,02/02/2018 10:00:00 AM,02/02/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86118237_02022018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-323,,,,,,false,,,,,\n314171,Office of Community Beautification - Liechty Community Cleanup,05/19/2018 08:00:00 AM,05/19/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,,John Liechty Middle School,\"650 S Union Avenue\nLos Angeles, CA 90017\n(34.055374, -118.270151)\",https://calendar.lacity.org/event/office-community-beautification-liechty-community-cleanup,Anna Ruiz,213-978-0231,Anna.Ruiz@lacity.org,,,false,,,,,\n318556,Office of Community Beautification - Vermont Corridor Clean-Up,06/16/2018 07:30:00 AM,06/16/2018 12:30:00 PM,Culture & Community,Office of Community Beautification,OCB (http://dpw.lacity.org/office-community-beautification),CD 1 & LAPD Olympic,\"1130 S Vermont Ave\nLos Angeles, CA 90006\n(34.050245, -118.291609)\",https://calendar.lacity.org/event/office-community-beautification-vermont-corridor-clean,Leslie Shim,,leslie.shim@lacity.org,,,false,,,All,,\n248211,Los Angeles Convention Center - LA Auto Show 2017,12/10/2017 08:00:00 AM,12/10/2017 07:00:00 PM,Shows & Conventions,Convention Center,LA Auto Show Tickets (https://laautoshow.com/tickets/#general-admission),Los Angeles Convention Center,\"1201 S Figueroa St\nLos Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-la-auto-show-2017-8,,,,\"<p>Whether you’re in-market for a new vehicle or planning for the future, the LA Auto Show is your one-stop-shop for comparison shopping cars, trucks, SUVs, electric vehicles and concepts. Hassle-free, stress-free, and about 1,000 vehicles to choose from.  Outside the LA Convention Center, attendees can enjoy pressure-free test drives of nearly 100 of the latest models.  ”The Garage\"\" - accessible via South Hall Atrium’s escalators - is one of the world's largest and most eclectic collections of renowned tuners, customizers, aftermarket goods and exotics.  While the adults shop, there is plenty for the kids to experience. From video games, virtual reality demos, and kids’ play zones, there is plenty to keep them entertained. Tickets for children ages 6-12 are $5 and children under 6 are free with a paying adult.</p>\",,true,Child (6-12): $5; Adult (13-64): $15; Senior (65+): $10 / Paid parking available.,,,,\n324846,Los Angeles Convention Center - Anime Expo 2018,07/07/2018 10:00:00 AM,07/07/2018 06:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,Anime Expo (http://www.anime-expo.org/),Los Angeles Convention Center,\"1201 S Figueroa St\nLos Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-anime-expo-2018-1,,,,\"<p>Anime Expo (AX) brings together fans and industry from Japan, the US, and all over the world for the largest celebration of Japanese pop culture in North America. Taking place every year since 1992, Anime Expo features the best in Japanese entertainment, music, fashion and video games. For more information, visit <a href=\"\"http://www.anime-expo.org/\"\">www.anime-expo.org</a>.</p><p>*Doors open at 10:00am everyday.</p>\",,false,,,,,\n236421,Board of Public Works Agenda,10/25/2017 10:00:00 AM,10/25/2017 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86115945_10252017.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-230,,,,,,false,,,,,\n249721,2017 Hollywood Christmas Parade,11/26/2017 05:00:00 PM,11/26/2017 05:00:00 PM,\"Culture & Community, Holiday & Seasonal, Family Activity\",Cultural Affairs,http://thehollywoodchristmasparade.org/,,\"Hollywood Blvd\nHollywood, CA 90028\",https://calendar.lacity.org/event/2017-hollywood-christmas-parade,,1-866-727-2331,,\"<p>We are proud to share with you that the City of Los Angeles will once again be presenting The Hollywood Christmas Parade! This year is the 86th anniversary of the parade, and will be the best year yet! We look forward to your support and participation in this year’s Hollywood Christmas Parade.</p><p>For parade information please call 1-866-727-2331.</p>\",,true,,https://calendar.lacity.org/sites/g/files/wph721/f/Join-Us.png,All,,\n367606,Board of Public Works Agenda,09/17/2018 10:00:00 AM,09/17/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86124580_09172018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-546,,,,,,false,,,,,\n305946,Board of Public Works Agenda,04/27/2018 10:00:00 AM,04/27/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86120604_04272018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-406,,,,,,false,,,,,\n316056,Office of Community Beautification ~ Nueva Vision,06/03/2018 08:00:00 AM,06/03/2018 11:00:00 AM,Culture & Community,,OCB Website (http://dpw.lacity.org/office-community-beautification),Nueva Vision,\"oyle Avenue\nLos Angeles, CA 90007\",https://calendar.lacity.org/event/office-community-beautification-nueva-vision,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,\n136956,Free Christmas Turkey Dinner,12/25/2016 01:00:00 PM,12/25/2016 05:00:00 PM,\"Culture & Community, Holiday & Seasonal\",Council District 13,Christmas Dinner for the Hungry and Homeless (http://hollywoodumc.org/christmas-dinner-for-the-hungry-homeless/),Hollywood United Methodist Church,\"6817 Franklin Ave\nHollywood, CA 90028\n(34.104124, -118.339169)\",http://calendar.lacity.org/event/free-christmas-turkey-dinner,,,info@hollywoodumc.org,\"<p>Everyone is invited! Free Christmas Turkey Dinner on Sunday, December 25th. From 1:00 pm - 5:00pm.Santa will bring gifts for the children and personal care items for the adults. Hosted by Hollywood United Methodist Church and Temple Isreal of Hollywood. </p><p>Location: Hollywood United Methodist Church6817 Franklin AveHollywood, CA</p>\",,false,,http://calendar.lacity.org/sites/g/files/wph721/f/2016%20English-Spanish%20Flyer-page-001.jpg,All,,\n239061,Office of Community Beautification ~ Veterans Day Cleanup ,11/11/2017 08:30:00 AM,11/11/2017 12:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),NoHo West Neighborhood Council,\"ellaire Ave Los Angeles, CA 91605\n(34.207788, -118.401658)\",https://calendar.lacity.org/event/office-community-beautification-veterans-day-cleanup,Ana Huizar,213-978-0224,ana.huizar@lacity.org,,Culture and Community,false,,,All,,\n331216,Office of Community Beautification - International We Love U Foundation Clean-Up,06/23/2018 10:00:00 AM,06/23/2018 01:00:00 PM,Culture & Community,Office of Community Beautification,OCB (http://dpw.lacity.org/office-community-beautification),World Mission Society Church of God,\"19400 Valerio St\nLos Angeles, CA 91335\n(34.204733, -118.556145)\",https://calendar.lacity.org/event/office-community-beautification-international-we-love-u-foundation-clean,Leslie Shim,,leslie.shim@lacity.org,,,false,,,All,,\n295021,Office of Community Beautification ~ Valley Glen Clean Team Cleanup,03/31/2018 08:00:00 AM,03/31/2018 11:00:00 AM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),,\"Delano Street Los Angeles, CA 91401\n(34.1775, -118.432777)\",https://calendar.lacity.org/event/office-community-beautification-valley-glen-clean-team-cleanup-3,Ana Huizar,213-978-0224,ana.huizar@lacity.org,,Culture and Community,false,,,All,,\n312401,\"Office of Community Beautification - LHTP \"\"Increase the Peace\"\" GreenSpace Challenge\",05/19/2018 09:00:00 AM,05/19/2018 02:00:00 PM,Culture & Community,Office of Community Beautification,OCB (http://dpw.lacity.org/office-community-beautification),Lincoln Heights Tutorial Program,\"3540 Mission Rd\nLos Angeles, CA 90031\n(34.067809, -118.202406)\",https://calendar.lacity.org/event/office-community-beautification-lhtp-increase-peace-greenspace-challenge,Leslie Shim,,leslie.shim@lacity.org,,,false,,,All,,\n274021,Office of Community Beautification - Ballona Creek Renaissance Cleanup,02/03/2018 09:00:00 AM,02/03/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,Ballona Creek Renaissance (http://www.ballonacreek.org),Ballona Creek,\"90 Fwy\nLos Angeles, CA 90066\",https://calendar.lacity.org/event/office-community-beautification-ballona-creek-renaissance-cleanup,Anna Ruiz,213-978-0231,Anna.Ruiz@lacity.org,,,false,,,,,\n234326,Office of Community Beautification ~ York Blvd Community Clean-Up,10/21/2017 09:00:00 AM,10/21/2017 12:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),York Park,\"4956 York Boulevard\nLos Angeles, CA\n(34.121535, -118.207224)\",https://calendar.lacity.org/event/office-community-beautification-york-blvd-community-clean,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,https://calendar.lacity.org/sites/g/files/wph721/f/Yorkblvd.cleanup10.21.17%20%281%29.pdf\n247406,Holiday Treats for the Animals,12/02/2017 09:00:00 AM,12/03/2017 05:00:00 PM,\"Holiday & Seasonal, Family Activity\",Cultural Affairs,http://www.aquariumofpacific.org/events/info/holiday_treats_for_the_animals/,Aquarium of the Pacific,\"100 Aquarium Way Long Beach\nCA 90802\",https://calendar.lacity.org/event/holiday-treats-animals-0,,562-590-3100,,\"<p>In celebration of the holiday season, Santa Diver will be delivering an ocean of gifts to the Aquarium of the Pacific for its animals, including penguins, sea otters, seals, sea lions, lorikeets, and fish.</p><p>Guests can see Santa Diver with sharks and watch the Aquarium's animals receive their special treats and enrichment gifts during the Holiday Treats for the Animal weekend.</p>\",,true,\"$29.95 Adults, $26.95 Seniors, $17.95 (Children 3-11), Free children under 3 and Aquarium members\",https://calendar.lacity.org/sites/g/files/wph721/f/ev_Holiday-Santa_405_405_80auto.jpg,All,,\n331221,Office of Community Beautification - Avenue 50 Studio Mural Community Clean-Up,06/22/2018 08:30:00 AM,07/06/2018 12:30:00 PM,Culture & Community,Office of Community Beautification,OCB (http://dpw.lacity.org/office-community-beautification),Los Angeles Community College,\"5604 N Figueroa St\nLos Angeles, CA 90042\n(34.109087, -118.193837)\",https://calendar.lacity.org/event/office-community-beautification-avenue-50-studio-mural-community-clean,Leslie Shim,,leslie.shim@lacity.org,,,false,,,All,,\n303041,Office of Community Beautification ~ School Beautification Day,04/21/2018 08:00:00 AM,04/21/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Cesar Chavez Elementary School,\"5243 Oakland Street\nLos Angeles, CA 90032\n(34.088618, -118.167841)\",https://calendar.lacity.org/event/office-community-beautification-school-beautification-day,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,https://calendar.lacity.org/sites/g/files/wph721/f/cesar%20chavez%20school%20cleanup.jpg\n282526,Board of Public Works Agenda,03/09/2018 10:00:00 AM,03/09/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86119223_03092018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-362,,,,,,false,,,,,\n294881,Los Angeles Convention Center - Minefaire: A Minecraft Fan Experience 2018,04/15/2018 10:00:00 AM,04/15/2018 05:00:00 PM,General Events,Convention Center,Minefaire: A Minecraft Fan Experience 2018 (https://www.eventbrite.com/e/minefaire-a-minecraft-fan-experience-los-angeles-ca-tickets-39254011806),Los Angeles Convention Center,\"1201 S Figueroa St West\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-minefaire-minecraft-fan-experience-2018-0,,,,\"<p>MINEFAIRE, the Ultimate Minecraft Fan Experience, is coming to Los Angeles for two days only - April 14-15, 2018.</p><p>Minecraft players and their families unite at Minefaire to meet their favorite YouTube creators, compete in tournaments and build battles, participate in the famed costume contest, witness live stage shows, learn from Official Minecraft Education Global Mentors, shop at the World's Largest Official Minecraft Merch Store for event exclusives, and more!</p><p>Please note:</p><ul><li>VIP access begins at 9:00am on both Saturday and Sunday.</li><li>Children 2 and under are free.</li></ul>\",,true,Admission Fee: $45 & up / paid parking available on site (West Hall parking garage),,,,\n235736,Office of Community Beautification ~ West Adams Prep High School,05/05/2018 08:30:00 AM,05/05/2018 12:30:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),West Adams High School,\"1500 West Washington Boulevard\nLos Angeles, CA\n(34.04001, -118.289685)\",https://calendar.lacity.org/event/office-community-beautification-west-adams-prep-high-school-6,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,\n314356,Office of Community Beautification ~ Soledad Enrichment Action,05/19/2018 09:00:00 AM,05/19/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Soledad Enrichment Action,\"1032 East 34th Street\nLos Angeles, CA 90007\n(34.012769, -118.257525)\",https://calendar.lacity.org/event/office-community-beautification-soledad-enrichment-action,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,https://calendar.lacity.org/sites/g/files/wph721/f/May%2019%20Clean%20up.pdf\n284956,Office of Community Beautification ~ Lemay Elementary School Beautification Day ,04/21/2018 08:00:00 AM,04/21/2018 10:00:00 AM,Culture & Community,,OCB Website (http://dpw.lacity.org/office-community-beautification),Lemay Elementary School,\"17520 Vanowen St\nLos Angeles, CA 91406\",https://calendar.lacity.org/event/office-community-beautification-lemay-elementary-school-beautification-day-1,Ana Huizar,213-978-0224,ana.huizar@lacity.org,,Culture and Community,false,,,All,,\n280906,Office of Community Beautification ~ March into Beauty Cleanup,03/04/2018 09:00:00 AM,03/04/2018 11:00:00 AM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),,\"5348 Vineland Ave\nLos Angeles, CA 91602\",https://calendar.lacity.org/event/office-community-beautification-march-beauty-cleanup,Ana Huizar,213-978-0224,ana.huizar@lacity.org,,Culture and Community,false,,,All,,\n298176,Office of Community Beautification ~ Osborne Church Earth Day Cleanup,04/22/2018 12:00:00 PM,04/22/2018 04:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),,\"Sharp Ave\nLos Angeles, CA 91331\",https://calendar.lacity.org/event/office-community-beautification-osborne-church-earth-day-cleanup,Ana Huizar,213-978-0224,ana.huizar@lacity.org,,Culture and Community,false,,,All,,\n325081,Board of Public Works Agenda,06/20/2018 10:00:00 AM,06/20/2018 10:00:00 AM,City Government,Board of Public Works,http://clkrep.lacity.org/bpwgranicus/granicus/2018/06202018_bpwcal.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-463,,,,,,false,,,,,\n349736,Los Angeles Convention Center - International Housing Show,08/25/2018 10:00:00 AM,08/25/2018 06:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,EventBrite Ticket Purchase (https://www.eventbrite.com/e/2018-international-housing-show-tickets-46542622236),Los Angeles Convention Center,\"1201 S Figueroa St\nConcourse EF Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-international-housing-show,,,,,,true,Admission Fee: $35 - $89 / Paid parking available on site.,,,,\n299711,Office of Community Beautification - LHNC Community Clean-Up & Eco-Friendly Resource Fair,04/14/2018 08:00:00 AM,04/14/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Lincoln High / LHNC,\"2010 Lincoln Park\nLos Angeles, CA 90031\n(34.067956, -118.202421)\",http://calendar.lacity.org/event/office-community-beautification-lhnc-community-clean-eco-friendly-resource-fair,Leslie Shim,213-842-0149,leslie.shim@lacity.org,,Culture and Community,false,,,All,,\n295041,Office of Community Beautification - Estrella Park Community Clean-Up,04/26/2018 08:00:00 AM,04/26/2018 08:00:00 AM,Culture & Community,Office of Community Beautification,,Estrella Park / Council District 1,\"Estrella Ave Los Angeles, CA 90007\n(34.027762, -118.28507)\",http://calendar.lacity.org/event/office-community-beautification-estrella-park-community-clean,,,,,,false,,,,,\n238816,Office of Community Beautification ~ Community Revamp Cleanup,11/18/2017 10:00:00 AM,11/18/2017 02:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Koinonia Christian Church,\"760 S Westmoreland Ave\nLos Angeles, CA 90025\n(34.058367, -118.289093)\",https://calendar.lacity.org/event/office-community-beautification-community-revamp-cleanup,Ana Huizar,2139780224,ana.huizar@lacity.org,,Culture and Community,false,,,All,,\n229941,Los Angeles Convention Center - Stan Lee's Comic Con 2017,10/29/2017 10:00:00 AM,10/29/2017 04:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,Stan Lee's Comic Con 2017 (https://www.showclix.com/event/StanLeesLAComicCon2017/listing),Los Angeles Convention Center,\"1201 S Figueroa St South\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-stan-lees-comic-con-2017-1,,,,\"<p>Stan Lee’s L.A. Comic Con is Los Angeles’ first multi-media pop culture convention, held annually at the Los Angeles Convention Center. L.A. Comic Con assembles the most exciting and innovative in comics, video games, sci-fi, fantasy, horror and all things pop-culture, making Stan Lee's L.A. Comic Con Los Angeles' ultimate pop-culture convention.</p>\",,true,Paid registration.  See Stan Lee Comic Con website for details.  Paid on-site parking available.,,,,\n306631,Los Angeles Convention Center - Crypto Invest Summit,05/02/2018 09:00:00 AM,05/02/2018 04:45:00 PM,General Events,Convention Center,Crypto Invest Summit (https://cryptoinvestsummit.io/),Los Angeles Convention Center,\"1201 S Figueroa St\nConcourse EF Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-crypto-invest-summit-0,,,,\"<p>Crypto Invest Summit brings to you the who-is-who in the cryptocurrency and blockchain space on 2 stages and the largest crypto expo space in the world. Join us for two days of presentations, pitches, educational panels and insightful fireside chats with industry leaders.</p>\",,true,\"Registration: $449 - $5,000 / Paid parking available on site at West Hall parking garage.\",,,,\n363071,Los Angeles Convention Center - West Coast Gaming Yu Gi Oh! Championship Tournament,09/01/2018 09:00:00 AM,09/01/2018 10:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,,Los Angeles Convention Center,\"1201 S Figueroa St\nConcourse EF Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-west-coast-gaming-yu-gi-oh-championship-tournament-0,,,,,,true,Entry fee for Main Event: $20 / Entry fee for Dragon Duel: free / Entry fee for Win-A-Mat Event: free / Paid parking available on site.,,,,\n247701,Office of Community Beautification ~ CANNDU Neighborhood Council,11/18/2017 08:30:00 AM,11/18/2017 01:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),,\"Grand Avenue\nLos Angeles, CA\",https://calendar.lacity.org/event/office-community-beautification-canndu-neighborhood-council,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,\n358101,Board of Public Works Agenda,08/17/2018 10:00:00 AM,08/17/2018 10:00:00 AM,City Government,Board of Public Works,,,,http://calendar.lacity.org/event/board-public-works-agenda-524,,,,,,false,,,,,\n309691,Office of Community Beautification - GCPNC: Loreto Street Elementary Clean-Up,05/06/2018 10:00:00 AM,05/06/2018 01:00:00 PM,Culture & Community,Office of Community Beautification,OCB (http://dpw.lacity.org/office-community-beautification),Greater Cypress Park Neighborhood Council,\"3408 Arroyo Seco Ave\nLos Angeles, CA 90065\n(34.086926, -118.216731)\",https://calendar.lacity.org/event/office-community-beautification-gcpnc-loreto-street-elementary-clean,Leslie shim,213-842-0149,leslie.shim@lacity.org,,,false,,,,,\n363471,Los Angeles Convention Center - U.S. China TV & Film Industry Expo,09/26/2018 09:30:00 AM,09/26/2018 04:15:00 PM,\"General Events, Shows & Conventions\",Convention Center,U.S. China TV & Film Industry (http://ucftiexpo.com/),Los Angeles Convention Center,\"1201 S Figueroa St West\nHall B Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-us-china-tv-film-industry-expo,,,,\"<p>UCFTI Expo is your all-in-one exposition for all things U.S.-China entertainment. From innovative Television Panel Discussions and relevant Creative & Technical Workshops to U.S. and China Exhibit Booths, this great networking opportunity is attended by influential Hollywood and Chinese professionals from the movie and television industry.</p>\",,true,Fees range from $120 to $240.  See U.S. China TV & Film Industry website for details. / Paid parking available on site.,,,,\n314136,Film Screening: Bully,06/13/2018 04:00:00 PM,06/13/2018 05:30:00 PM,Family Activity,\"Library, Los Angeles Public\",http://www.lapl.org/whats-on/events/film-screening-bully,Wilmington Branch Library,\"1300 N Avalon Boulevard\nWilmington, CA 90744\n(33.788968, -118.263146)\",http://calendar.lacity.org/event/film-screening-bully-0,,,,\"<p>Join us for a special screening of the documentary, Bully.</p><p>Shown in cooperation with the Bully Project, the film shows the effects of bullying through the eyes of its victims, like Kelby, a 16-year old girl who is bullied when she comes out as gay.</p>\",,false,,http://calendar.lacity.org/sites/g/files/wph721/f/bully-logo_0.jpg,\"Adult, Senior, Teenager\",,\n294146,Board of Public Works Agenda,03/28/2018 10:00:00 AM,03/28/2018 10:00:00 AM,,,http://ens.lacity.org/bpw/agendas/bpwagendas86119707_03282018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-377,,,,,,false,,,,,\n284451,USC Gould Immigration Clinic,04/07/2018 09:00:00 AM,04/07/2018 04:00:00 PM,General Events,Council District 13,USC Gould Immigration Clinic (http://gould.usc.edu/academics/experiential/clinics/immigration/),USC Davidson Conference Center,\"3409 S Figueroa St\nLos Angeles, CA 90007\n(34.021144, -118.280562)\",https://calendar.lacity.org/event/usc-gould-immigration-clinic,USC Gould School of Law,213-821-9627,immclinic@law.usc.edu,\"<p>The USC Gould Citizenship Project can help you:</p><ul><li>Compete your Naturalization Application (N-400 Form);</li><li>Complete full or partial Fee Waiver (I-912 or I-942 Form) if eligible;</li><li>Prepare your application for filing.</li></ul><p> </p><p>Clinic details: Saturday April 7th, 2018 9am-4pm USC David</p>\",,false,,https://calendar.lacity.org/sites/g/files/wph721/f/April%207th%20Citizenship%20Clinic_USC%20Davidson%20Center%20%282.26.18%29-1.jpg,All,,https://calendar.lacity.org/sites/g/files/wph721/f/April%207th%20Citizenship%20Clinic_USC%20Davidson%20Center%20%282.26.18%29.pdf\n347001,Office of Community Beautification - Thai Town Community Clean-Up,07/21/2018 09:00:00 AM,07/21/2018 11:00:00 AM,Culture & Community,Office of Community Beautification,OCB (http://dpw.lacity.org/office-community-beautification),Thai Town Community Development Center,\"Hollywood Blvd between Western\nAves Los Angeles, CA\",https://calendar.lacity.org/event/office-community-beautification-thai-town-community-clean,Leslie Shim,213-978-0227,leslie.shim@lacity.org,,,false,,,All,,\n336026,Los Angeles Convention Center - 2018 ASCA Annual Conference,07/17/2018 08:00:00 AM,07/17/2018 12:00:00 PM,General Events,Convention Center,ASCA (https://www.ascaconferences.org/),Los Angeles Convention Center,\"1201 S Figueroa St West\nHall A & Concourse EF Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-2018-asca-annual-conference-2,,,,,,true,Registration: $250 - $619 / Paid parking available on site.,,,,\n265626,Los Angeles Convention Center - Simulation Healthcare IMSH 2018 Annual Meeting,01/16/2018 07:00:00 AM,01/16/2018 04:30:00 PM,General Events,Convention Center,IMSH (http://imsh2018.com/attendees/registration-exhibit-fees),Los Angeles Convention Center,\"1201 S Figueroa St\nLos Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-simulation-healthcare-imsh-2018-annual-meeting-1,,,,,,true,$250 - $1125 See website for details. / Registration required. / Paid parking available on site.,,,,\n309491,Office of Community Beautification ~ Operation Project Hope,05/19/2018 07:00:00 AM,05/19/2018 03:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Marvin Avenue Elementary School,\"2411 South Marvin Avenue\nLos Angeles, CA 90016\n(34.035381, -118.363841)\",https://calendar.lacity.org/event/office-community-beautification-operation-project-hope,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,\n248621,Board of Public Works Agenda,11/20/2017 10:00:00 AM,11/20/2017 10:00:00 AM,City Government,Board of Public Works,,,,http://calendar.lacity.org/event/board-public-works-agenda-258,,,,,,false,,,,,\n324221,Los Angeles Convention Center - Summer Fashion Show Presented by The Model Experience,07/01/2018 11:00:00 AM,07/01/2018 09:30:00 PM,\"General Events, Shows & Conventions\",Convention Center,The Model Experience (https://www.themodelexperience.net/),Los Angeles Convention Center,\"1201 S Figueroa St\nLos Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-summer-fashion-show-presented-model-experience-0,,,,\"<p>Come and enjoy back to back Fashion Shows. This event will showcase some of the hottest emerging brands, designers, and models. This is an all ages event. This pass gives you access to all 5 shows we are hosting this day. The pass includes front row seating and 1 drink voucher. This is a Red Carpet Event so let&#39;s dress to impress. </p>\",,true,\"$39.50, plus processing fee / Paid parking available in West Hall parking garage.\",,,,\n294866,Los Angeles Convention Center - Baisakhi Celebration 2018,04/08/2018 07:00:00 AM,04/08/2018 04:00:00 PM,General Events,Convention Center,Baisakhi Celebration 2018 (http://www.gururamdasashram.org/baisakhi),Los Angeles Convention Center,\"1201 S Figueroa St West Hall\nGilbert Lindsey Plaza Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-baisakhi-celebration-2018,Sat Daya Singh Khalsa,(310) 570-3558,,\"<p>Celebrate the Birth of the Khalsa at the Baisakhi Celebration through Kirtan (Spiritual Music), Nagar Kirtan (Parade), Langar (Community Meal), Baisakhi Bazaar and Seva (Service).</p><p>Thousands of Sikhs and friends from diverse communities gather at the Los Angeles Convention Center to attend the Celebration of the 319th Anniversary of Baisakhi coordinated by the Sikh Community of Southern California.</p>\",,false,,,,,\n268561,Board of Public Works Official Notice,01/15/2018 10:00:00 AM,01/15/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86117797_01152018.htm,,,http://calendar.lacity.org/event/board-public-works-official-notice-29,,,,,,false,,,,,\n359861,Office of Community Beautification - Friends of the Jungle Cleanup,09/22/2018 09:00:00 AM,09/22/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://www.laocb.org),,\"7025 Trolleyway\nPlaya Del Rey, CA 90293\n(33.955636, -118.448975)\",https://calendar.lacity.org/event/office-community-beautification-friends-jungle-cleanup,Anna Ruiz,,Anna.Ruiz@lacity.org,,,false,,,,,\n301026,Office of Community Beautification ~ Eagle Rock High School,04/21/2018 07:00:00 AM,04/21/2018 03:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Eagle Rock High School,\"1750 Yosemite Drive\nLos Angeles, CA 90042\n(34.133202, -118.204993)\",https://calendar.lacity.org/event/office-community-beautification-eagle-rock-high-school,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,\n271211,Los Angeles Convention Center - Jurassic Tour,01/27/2018 10:00:00 AM,01/27/2018 09:00:00 PM,\"General Events, Family Activity\",Convention Center,Jurassic Tour (https://jurassictour.ticketleap.com/los-angeles-convention-center/dates),Los Angeles Convention Center,\"1201 S Figueroa St West\nHall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-jurassic-tour,,,,\"<p>This fun-filled, family event will have a wide variety of fun and educational activities designed to engage all members of the entire family. Embark on a prehistoric journey from the Jurassic, Triassic, and Cretaceous periods and discover the dinosaurs that ruled the earth for more than 150 million years ago! The main exhibit features over 50 life size ultra-realistic dinosaurs in their natural habitat. Other exhibits include hands on interaction with these enormous Dinosaurs, ride a cute little baby Dinosaur, be courageous and ride a 12 foot animatronic T-Rex & Triceratops. Tracey, a friendly young T-Rex greets guests once every 3 hours and can be found walking and playing with the kids. There's a fossil dig where young paleontologists can dig up ancient bones, a Virtual Reality Zone designed to stimulate your child’s imagination, a Jurassic Themed Bounce area with dinosaur inflatable bounce houses, scale a Jungle Wall. Test your skills at basketball and darts, face painting, and much more.</p>\",,true,\"Adult $24 / Child $29 (Ages 2-12), plus on-line service fees / Paid parking available on site.\",,,,\n234496,Office of Community Beautification ~ West Adams Prep High School,12/02/2017 08:30:00 AM,12/02/2017 12:30:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),West Adams High School,\"1500 West Washington Boulevard\nLos Angeles, CA\n(34.04001, -118.289685)\",https://calendar.lacity.org/event/office-community-beautification-west-adams-prep-high-school-2,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,\n319496,Board of Public Works Agenda,06/04/2018 10:00:00 AM,06/04/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86121765_06042018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-449,,,,,,false,,,,,\n294871,Los Angeles Convention Center - Trending Home 2018: A New Home & Rental Extravaganza,04/14/2018 09:00:00 AM,04/14/2018 08:00:00 PM,General Events,Convention Center,Trending Home 2018: A New Home & Rental Extravaganza (https://laventura.biasc.org/events/trending-home-2018),Los Angeles Convention Center,\"1201 S Figueroa St\nConcourse Hall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-trending-home-2018-new-home-rental-extravaganza,,,,\"<p>Showcase your new developments to thousands of potential homeowners and renters. This new home and rental extravaganza will be an inspiring experience and a magnet for consumers interested in owning and renting. The exhibition will feature your new home and rental developments, the latest in design, trends, technology and panelists educating the public on the purchase and rental process, and more.</p><p>It's a medley of the building industry's newest developments under one roof.</p>\",,true,$75 and up (go to https://laventura.biasc.org/events/trending-home-2018 for details) / paid parking available on site (West Hall parking garage),,,,\n248181,Los Angeles Convention Center - LA Auto Show 2017,12/04/2017 09:00:00 AM,12/04/2017 09:00:00 PM,Shows & Conventions,Convention Center,LA Auto Show Tickets (https://laautoshow.com/tickets/#general-admission),Los Angeles Convention Center,\"1201 S Figueroa St\nLos Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-la-auto-show-2017-2,,,,\"<p>Whether you’re in-market for a new vehicle or planning for the future, the LA Auto Show is your one-stop-shop for comparison shopping cars, trucks, SUVs, electric vehicles and concepts. Hassle-free, stress-free, and about 1,000 vehicles to choose from.  Outside the LA Convention Center, attendees can enjoy pressure-free test drives of nearly 100 of the latest models.  ”The Garage\"\" - accessible via South Hall Atrium’s escalators - is one of the world's largest and most eclectic collections of renowned tuners, customizers, aftermarket goods and exotics.  While the adults shop, there is plenty for the kids to experience. From video games, virtual reality demos, and kids’ play zones, there is plenty to keep them entertained. Tickets for children ages 6-12 are $5 and children under 6 are free with a paying adult.</p>\",,true,Child (6-12): $5; Adult (13-64): $15; Senior (65+): $10 / Paid parking available.,,,,\n276136,Office of Community Beautification ~ Nature Parkway Cleanup ,02/19/2018 08:00:00 AM,02/19/2018 08:00:00 AM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),,\"Nature Parkway Devonshire Street Los Angeles, CA 91345\n(34.265253, -118.461801)\",https://calendar.lacity.org/event/office-community-beautification-nature-parkway-cleanup-0,Ana Huizar,213-978-0224,ana.huizar@lacity.org,,Culture and Community,false,,,All,,\n274011,Office of Community Beautification - Olympic Park NC,02/17/2018 10:00:00 AM,02/17/2018 02:00:00 PM,Culture & Community,Office of Community Beautification,,L.A. High School,\"4650 W Olympic\nBl Los Angeles, CA 90019\n(34.056479, -118.332211)\",https://calendar.lacity.org/event/office-community-beautification-olympic-park-nc,Anna Ruiz,213-978-0231,Anna.Ruiz@lacity.org,\"<p>Olympic Park Neighborhood Council is partnering with L.A. High, NID Housing Counseling Agency and LAPD.</p>\",,false,,,,,\n248486,Office of Community Beautification ~ Jefferson High School,11/18/2017 09:00:00 AM,11/18/2017 12:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://dpw.lacity.org/office-community-beautification),Jefferson High School,\"1319 East 41st Street\nLos Angeles, CA 90011\n(34.00913, -118.251168)\",https://calendar.lacity.org/event/office-community-beautification-jefferson-high-school,Thomas Corrales,2139780230,thomas.corrales@lacity.org,,,false,,,All,,\n336011,Los Angeles Convention Center - 2018 ASCA Annual Conference,07/14/2018 08:00:00 AM,07/14/2018 05:00:00 PM,General Events,Convention Center,ASCA (https://www.ascaconferences.org/),Los Angeles Convention Center,\"1201 S Figueroa St West\nHall A & Concourse EF Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-2018-asca-annual-conference,,,,,,true,Registration: $250 - $619 / Paid parking available on site.,,,,\n294886,Los Angeles Convention Center - World of Dance,04/14/2018 12:00:00 PM,04/14/2018 08:00:00 PM,\"General Events, Shows & Conventions\",Convention Center,World of Dance (https://wod.ticketspice.com/2018-los-angeles-ticketing),Los Angeles Convention Center,\"1201 S Figueroa St West\nHall & Petree Hall Los Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-world-dance,,,,\"<p>We’ve been making history since World of Dance launched for the first time in 2008. Ten years later, we’re not slowing down. This year, we’re celebrating a DECADE of style, competition, and artistry in motion in the world’s undisputed Capital of Dance.</p><p>Join WOD founders Dave Gonzalez and Myron Marten in Los Angeles for our toughest competition yet. We're adding two more elite judges to the panel, bringing the total number to seven. And with increased scrutiny comes more reward - the first place winner will take home the biggest prize we've ever offered: $3,000</p>\",,true,Admission Fee: $40 & up / paid parking available on site (West Hall parking garage),,,,\n274081,Board of Public Works Agenda,01/26/2018 10:00:00 AM,01/26/2018 10:00:00 AM,City Government,Board of Public Works,http://ens.lacity.org/bpw/agendas/bpwagendas86118112_01262018.htm,,,http://calendar.lacity.org/event/board-public-works-agenda-321,,,,,,false,,,,,\n366971,Office of Community Beautification - Coastal Clean Up Day - CD 6,09/15/2018 09:00:00 AM,09/15/2018 12:00:00 PM,Culture & Community,Office of Community Beautification,OCB Website (http://www.laocb.org),Lake Balboa Park,\"6300 Balboa\nBl Encino, CA 91436\",https://calendar.lacity.org/event/office-community-beautification-coastal-clean-day-cd-6,Anna Ruiz,,Anna.Ruiz@lacity.org,,,false,,,,,\n236011,Los Angeles Convention Center - Afrolicious,11/05/2017 11:00:00 AM,11/05/2017 05:00:00 PM,General Events,Convention Center,Afrolicious Event Tickets (http://www.afrolicioushairexpo.com/los-angeles.html),Los Angeles Convention Center,\"1201 S Figueroa St\nLos Angeles, CA 90015\n(34.040286, -118.268245)\",https://calendar.lacity.org/event/los-angeles-convention-center-afrolicious,,424-262-2376,,\"<p>Afrolicious is a natural hair convention that celebrates, educates, and demonstrates natural hair care tichniques and natural hairstyles.  Featuring an Afrocentric fashion show, professional hair panels, natural hair contest for adults, and a little Miss Afrolicious Pageant for girls 5 to 12 years old.</p>\",,true,$20 at the door.  Paid on site parking available.  Go to http://www.afrolicioushairexpo.com/tickets.html for additional details.,,,,\n"
  },
  {
    "path": "plugins/riot/src/test/resources/files/nobels.json",
    "content": "[\n  {\n    \"id\": \"1039\",\n    \"firstname\": \"David\",\n    \"surname\": \"Baker\",\n    \"motivation\": \"for computational protein design\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"2024\"\n  },\n  {\n    \"id\": \"1040\",\n    \"firstname\": \"Demis\",\n    \"surname\": \"Hassabis\",\n    \"motivation\": \"for protein structure prediction\",\n    \"share\": \"4\",\n    \"category\": \"chemistry\",\n    \"year\": \"2024\"\n  },\n  {\n    \"id\": \"1041\",\n    \"firstname\": \"John\",\n    \"surname\": \"Jumper\",\n    \"motivation\": \"for protein structure prediction\",\n    \"share\": \"4\",\n    \"category\": \"chemistry\",\n    \"year\": \"2024\"\n  },\n  {\n    \"id\": \"1044\",\n    \"firstname\": \"Daron\",\n    \"surname\": \"Acemoglu\",\n    \"motivation\": \"for studies of how institutions are formed and affect prosperity\",\n    \"share\": \"3\",\n    \"category\": \"economics\",\n    \"year\": \"2024\"\n  },\n  {\n    \"id\": \"1045\",\n    \"firstname\": \"Simon\",\n    \"surname\": \"Johnson\",\n    \"motivation\": \"for studies of how institutions are formed and affect prosperity\",\n    \"share\": \"3\",\n    \"category\": \"economics\",\n    \"year\": \"2024\"\n  },\n  {\n    \"id\": \"1046\",\n    \"firstname\": \"James\",\n    \"surname\": \"Robinson\",\n    \"motivation\": \"for studies of how institutions are formed and affect prosperity\",\n    \"share\": \"3\",\n    \"category\": \"economics\",\n    \"year\": \"2024\"\n  },\n  {\n    \"id\": \"1042\",\n    \"firstname\": \"Kang\",\n    \"surname\": \"Han\",\n    \"motivation\": \"for her intense poetic prose that confronts historical traumas and exposes the fragility of human life\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"2024\"\n  },\n  {\n    \"id\": \"1043\",\n    \"motivation\": \"for its efforts to achieve a world free of nuclear weapons and for demonstrating through witness testimony that nuclear weapons must never be used again\",\n    \"share\": \"1\",\n    \"firstname\": \"Nihon Hidankyo\",\n    \"category\": \"peace\",\n    \"year\": \"2024\"\n  },\n  {\n    \"id\": \"1037\",\n    \"firstname\": \"John\",\n    \"surname\": \"Hopfield\",\n    \"motivation\": \"for foundational discoveries and inventions that enable machine learning with artificial neural networks\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"2024\"\n  },\n  {\n    \"id\": \"1038\",\n    \"firstname\": \"Geoffrey\",\n    \"surname\": \"Hinton\",\n    \"motivation\": \"for foundational discoveries and inventions that enable machine learning with artificial neural networks\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"2024\"\n  },\n  {\n    \"id\": \"1035\",\n    \"firstname\": \"Victor\",\n    \"surname\": \"Ambros\",\n    \"motivation\": \"for the discovery of microRNA and its role in post-transcriptional gene regulation\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"2024\"\n  },\n  {\n    \"id\": \"1036\",\n    \"firstname\": \"Gary\",\n    \"surname\": \"Ruvkun\",\n    \"motivation\": \"for the discovery of microRNA and its role in post-transcriptional gene regulation\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"2024\"\n  },\n  {\n    \"id\": \"1029\",\n    \"firstname\": \"Moungi\",\n    \"surname\": \"Bawendi\",\n    \"motivation\": \"for the discovery and synthesis of quantum dots\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"2023\"\n  },\n  {\n    \"id\": \"1030\",\n    \"firstname\": \"Louis\",\n    \"surname\": \"Brus\",\n    \"motivation\": \"for the discovery and synthesis of quantum dots\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"2023\"\n  },\n  {\n    \"id\": \"1031\",\n    \"firstname\": \"Aleksey\",\n    \"surname\": \"Yekimov\",\n    \"motivation\": \"for the discovery and synthesis of quantum dots\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"2023\"\n  },\n  {\n    \"id\": \"1034\",\n    \"firstname\": \"Claudia\",\n    \"surname\": \"Goldin\",\n    \"motivation\": \"for having advanced our understanding of women's labour market outcomes\",\n    \"share\": \"1\",\n    \"category\": \"economics\",\n    \"year\": \"2023\"\n  },\n  {\n    \"id\": \"1032\",\n    \"firstname\": \"Jon\",\n    \"surname\": \"Fosse\",\n    \"motivation\": \"for his innovative plays and prose which give voice to the unsayable\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"2023\"\n  },\n  {\n    \"id\": \"1033\",\n    \"firstname\": \"Narges\",\n    \"surname\": \"Mohammadi\",\n    \"motivation\": \"for her fight against the oppression of women in Iran and her fight to promote human rights and freedom for all\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"2023\"\n  },\n  {\n    \"id\": \"1026\",\n    \"firstname\": \"Pierre\",\n    \"surname\": \"Agostini\",\n    \"motivation\": \"for experimental methods that generate attosecond pulses of light for the study of electron dynamics in matter\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"2023\"\n  },\n  {\n    \"id\": \"1027\",\n    \"firstname\": \"Ferenc\",\n    \"surname\": \"Krausz\",\n    \"motivation\": \"for experimental methods that generate attosecond pulses of light for the study of electron dynamics in matter\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"2023\"\n  },\n  {\n    \"id\": \"1028\",\n    \"firstname\": \"Anne\",\n    \"surname\": \"L'Huillier\",\n    \"motivation\": \"for experimental methods that generate attosecond pulses of light for the study of electron dynamics in matter\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"2023\"\n  },\n  {\n    \"id\": \"1024\",\n    \"firstname\": \"Katalin\",\n    \"surname\": \"Karikó\",\n    \"motivation\": \"for their discoveries concerning nucleoside base modifications that enabled the development of effective mRNA vaccines against COVID-19\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"2023\"\n  },\n  {\n    \"id\": \"1025\",\n    \"firstname\": \"Drew\",\n    \"surname\": \"Weissman\",\n    \"motivation\": \"for their discoveries concerning nucleoside base modifications that enabled the development of effective mRNA vaccines against COVID-19\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"2023\"\n  },\n  {\n    \"id\": \"1015\",\n    \"firstname\": \"Carolyn\",\n    \"surname\": \"Bertozzi\",\n    \"motivation\": \"for the development of click chemistry and bioorthogonal chemistry\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"2022\"\n  },\n  {\n    \"id\": \"1016\",\n    \"firstname\": \"Morten\",\n    \"surname\": \"Meldal\",\n    \"motivation\": \"for the development of click chemistry and bioorthogonal chemistry\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"2022\"\n  },\n  {\n    \"id\": \"743\",\n    \"firstname\": \"Barry\",\n    \"surname\": \"Sharpless\",\n    \"motivation\": \"for the development of click chemistry and bioorthogonal chemistry\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"2022\"\n  },\n  {\n    \"id\": \"1021\",\n    \"firstname\": \"Ben\",\n    \"surname\": \"Bernanke\",\n    \"motivation\": \"for research on banks and financial crises\",\n    \"share\": \"3\",\n    \"category\": \"economics\",\n    \"year\": \"2022\"\n  },\n  {\n    \"id\": \"1022\",\n    \"firstname\": \"Douglas\",\n    \"surname\": \"Diamond\",\n    \"motivation\": \"for research on banks and financial crises\",\n    \"share\": \"3\",\n    \"category\": \"economics\",\n    \"year\": \"2022\"\n  },\n  {\n    \"id\": \"1023\",\n    \"firstname\": \"Philip\",\n    \"surname\": \"Dybvig\",\n    \"motivation\": \"for research on banks and financial crises\",\n    \"share\": \"3\",\n    \"category\": \"economics\",\n    \"year\": \"2022\"\n  },\n  {\n    \"id\": \"1017\",\n    \"firstname\": \"Annie\",\n    \"surname\": \"Ernaux\",\n    \"motivation\": \"for the courage and clinical acuity with which she uncovers the roots, estrangements and collective restraints of personal memory\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"2022\"\n  },\n  {\n    \"id\": \"1018\",\n    \"firstname\": \"Ales\",\n    \"surname\": \"Bialiatski \",\n    \"motivation\": \"The Peace Prize laureates represent civil society in their home countries. They have for many years promoted the right to criticise power and protect the fundamental rights of citizens. They have made an outstanding effort to document war crimes, human right abuses and the abuse of power. Together they demonstrate the significance of civil society for peace and democracy.\",\n    \"share\": \"3\",\n    \"category\": \"peace\",\n    \"year\": \"2022\"\n  },\n  {\n    \"id\": \"1019\",\n    \"motivation\": \"The Peace Prize laureates represent civil society in their home countries. They have for many years promoted the right to criticise power and protect the fundamental rights of citizens. They have made an outstanding effort to document war crimes, human right abuses and the abuse of power. Together they demonstrate the significance of civil society for peace and democracy.\",\n    \"share\": \"3\",\n    \"firstname\": \"Memorial\",\n    \"category\": \"peace\",\n    \"year\": \"2022\"\n  },\n  {\n    \"id\": \"1020\",\n    \"motivation\": \"The Peace Prize laureates represent civil society in their home countries. They have for many years promoted the right to criticise power and protect the fundamental rights of citizens. They have made an outstanding effort to document war crimes, human right abuses and the abuse of power. Together they demonstrate the significance of civil society for peace and democracy.\",\n    \"share\": \"3\",\n    \"firstname\": \"Center for Civil Liberties\",\n    \"category\": \"peace\",\n    \"year\": \"2022\"\n  },\n  {\n    \"id\": \"1012\",\n    \"firstname\": \"Alain\",\n    \"surname\": \"Aspect\",\n    \"motivation\": \"for experiments with entangled photons, establishing the violation of Bell inequalities and pioneering quantum information science\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"2022\"\n  },\n  {\n    \"id\": \"1013\",\n    \"firstname\": \"John \",\n    \"surname\": \"Clauser\",\n    \"motivation\": \"for experiments with entangled photons, establishing the violation of Bell inequalities and pioneering quantum information science\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"2022\"\n  },\n  {\n    \"id\": \"1014\",\n    \"firstname\": \"Anton\",\n    \"surname\": \"Zeilinger\",\n    \"motivation\": \"for experiments with entangled photons, establishing the violation of Bell inequalities and pioneering quantum information science\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"2022\"\n  },\n  {\n    \"id\": \"1011\",\n    \"firstname\": \"Svante\",\n    \"surname\": \"Pääbo\",\n    \"motivation\": \"for his discoveries concerning the genomes of extinct hominins and human evolution\",\n    \"share\": \"1\",\n    \"category\": \"medicine\",\n    \"year\": \"2022\"\n  },\n  {\n    \"id\": \"1002\",\n    \"firstname\": \"Benjamin\",\n    \"surname\": \"List\",\n    \"motivation\": \"for the development of asymmetric organocatalysis\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"2021\"\n  },\n  {\n    \"id\": \"1003\",\n    \"firstname\": \"David\",\n    \"surname\": \"MacMillan\",\n    \"motivation\": \"for the development of asymmetric organocatalysis\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"2021\"\n  },\n  {\n    \"id\": \"1007\",\n    \"firstname\": \"David\",\n    \"surname\": \"Card\",\n    \"motivation\": \"for his empirical contributions to labour economics\",\n    \"share\": \"2\",\n    \"category\": \"economics\",\n    \"year\": \"2021\"\n  },\n  {\n    \"id\": \"1008\",\n    \"firstname\": \"Joshua\",\n    \"surname\": \"Angrist\",\n    \"motivation\": \"for their methodological contributions to the analysis of causal relationships\",\n    \"share\": \"4\",\n    \"category\": \"economics\",\n    \"year\": \"2021\"\n  },\n  {\n    \"id\": \"1009\",\n    \"firstname\": \"Guido\",\n    \"surname\": \"Imbens\",\n    \"motivation\": \"for their methodological contributions to the analysis of causal relationships\",\n    \"share\": \"4\",\n    \"category\": \"economics\",\n    \"year\": \"2021\"\n  },\n  {\n    \"id\": \"1004\",\n    \"firstname\": \"Abdulrazak\",\n    \"surname\": \"Gurnah\",\n    \"motivation\": \"for his uncompromising and compassionate penetration of the effects of colonialism and the fate of the refugee in the gulf between cultures and continents\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"2021\"\n  },\n  {\n    \"id\": \"1005\",\n    \"firstname\": \"Maria\",\n    \"surname\": \"Ressa\",\n    \"motivation\": \"for their efforts to safeguard freedom of expression, which is a precondition for democracy and lasting peace\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"2021\"\n  },\n  {\n    \"id\": \"1006\",\n    \"firstname\": \"Dmitry\",\n    \"surname\": \"Muratov\",\n    \"motivation\": \"for their efforts to safeguard freedom of expression, which is a precondition for democracy and lasting peace\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"2021\"\n  },\n  {\n    \"id\": \"999\",\n    \"firstname\": \"Syukuro\",\n    \"surname\": \"Manabe\",\n    \"motivation\": \"for the physical modelling of Earth's climate, quantifying variability and reliably predicting global warming\",\n    \"share\": \"4\",\n    \"category\": \"physics\",\n    \"year\": \"2021\"\n  },\n  {\n    \"id\": \"1000\",\n    \"firstname\": \"Klaus\",\n    \"surname\": \"Hasselmann\",\n    \"motivation\": \"for the physical modelling of Earth's climate, quantifying variability and reliably predicting global warming\",\n    \"share\": \"4\",\n    \"category\": \"physics\",\n    \"year\": \"2021\"\n  },\n  {\n    \"id\": \"1001\",\n    \"firstname\": \"Giorgio\",\n    \"surname\": \"Parisi\",\n    \"motivation\": \"for the discovery of the interplay of disorder and fluctuations in physical systems from atomic to planetary scales\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"2021\"\n  },\n  {\n    \"id\": \"997\",\n    \"firstname\": \"David\",\n    \"surname\": \"Julius\",\n    \"motivation\": \"for their discoveries of receptors for temperature and touch\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"2021\"\n  },\n  {\n    \"id\": \"998\",\n    \"firstname\": \"Ardem\",\n    \"surname\": \"Patapoutian\",\n    \"motivation\": \"for their discoveries of receptors for temperature and touch\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"2021\"\n  },\n  {\n    \"id\": \"991\",\n    \"firstname\": \"Emmanuelle\",\n    \"surname\": \"Charpentier\",\n    \"motivation\": \"for the development of a method for genome editing\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"2020\"\n  },\n  {\n    \"id\": \"992\",\n    \"firstname\": \"Jennifer A.\",\n    \"surname\": \"Doudna\",\n    \"motivation\": \"for the development of a method for genome editing\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"2020\"\n  },\n  {\n    \"id\": \"995\",\n    \"firstname\": \"Paul\",\n    \"surname\": \"Milgrom\",\n    \"motivation\": \"for improvements to auction theory and inventions of new auction formats\",\n    \"share\": \"2\",\n    \"category\": \"economics\",\n    \"year\": \"2020\"\n  },\n  {\n    \"id\": \"996\",\n    \"firstname\": \"Robert\",\n    \"surname\": \"Wilson\",\n    \"motivation\": \"for improvements to auction theory and inventions of new auction formats\",\n    \"share\": \"2\",\n    \"category\": \"economics\",\n    \"year\": \"2020\"\n  },\n  {\n    \"id\": \"993\",\n    \"firstname\": \"Louise\",\n    \"surname\": \"Glück\",\n    \"motivation\": \"for her unmistakable poetic voice that with austere beauty makes individual existence universal\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"2020\"\n  },\n  {\n    \"id\": \"994\",\n    \"motivation\": \"for its efforts to combat hunger, for its contribution to bettering conditions for peace in conflict-affected areas and for acting as a driving force in efforts to prevent the use of hunger as a weapon of war and conflict\",\n    \"share\": \"1\",\n    \"firstname\": \"World Food Programme\",\n    \"category\": \"peace\",\n    \"year\": \"2020\"\n  },\n  {\n    \"id\": \"988\",\n    \"firstname\": \"Roger\",\n    \"surname\": \"Penrose\",\n    \"motivation\": \"for the discovery that black hole formation is a robust prediction of the general theory of relativity\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"2020\"\n  },\n  {\n    \"id\": \"989\",\n    \"firstname\": \"Reinhard\",\n    \"surname\": \"Genzel\",\n    \"motivation\": \"for the discovery of a supermassive compact object at the centre of our galaxy\",\n    \"share\": \"4\",\n    \"category\": \"physics\",\n    \"year\": \"2020\"\n  },\n  {\n    \"id\": \"990\",\n    \"firstname\": \"Andrea\",\n    \"surname\": \"Ghez\",\n    \"motivation\": \"for the discovery of a supermassive compact object at the centre of our galaxy\",\n    \"share\": \"4\",\n    \"category\": \"physics\",\n    \"year\": \"2020\"\n  },\n  {\n    \"id\": \"985\",\n    \"firstname\": \"Harvey\",\n    \"surname\": \"Alter\",\n    \"motivation\": \"for the discovery of Hepatitis C virus\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"2020\"\n  },\n  {\n    \"id\": \"986\",\n    \"firstname\": \"Michael\",\n    \"surname\": \"Houghton\",\n    \"motivation\": \"for the discovery of Hepatitis C virus\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"2020\"\n  },\n  {\n    \"id\": \"987\",\n    \"firstname\": \"Charles\",\n    \"surname\": \"Rice\",\n    \"motivation\": \"for the discovery of Hepatitis C virus\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"2020\"\n  },\n  {\n    \"id\": \"976\",\n    \"firstname\": \"John\",\n    \"surname\": \"Goodenough\",\n    \"motivation\": \"for the development of lithium-ion batteries\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"2019\"\n  },\n  {\n    \"id\": \"977\",\n    \"firstname\": \"M. Stanley\",\n    \"surname\": \"Whittingham\",\n    \"motivation\": \"for the development of lithium-ion batteries\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"2019\"\n  },\n  {\n    \"id\": \"978\",\n    \"firstname\": \"Akira\",\n    \"surname\": \"Yoshino\",\n    \"motivation\": \"for the development of lithium-ion batteries\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"2019\"\n  },\n  {\n    \"id\": \"982\",\n    \"firstname\": \"Abhijit\",\n    \"surname\": \"Banerjee\",\n    \"motivation\": \"for their experimental approach to alleviating global poverty\",\n    \"share\": \"3\",\n    \"category\": \"economics\",\n    \"year\": \"2019\"\n  },\n  {\n    \"id\": \"983\",\n    \"firstname\": \"Esther\",\n    \"surname\": \"Duflo\",\n    \"motivation\": \"for their experimental approach to alleviating global poverty\",\n    \"share\": \"3\",\n    \"category\": \"economics\",\n    \"year\": \"2019\"\n  },\n  {\n    \"id\": \"984\",\n    \"firstname\": \"Michael\",\n    \"surname\": \"Kremer\",\n    \"motivation\": \"for their experimental approach to alleviating global poverty\",\n    \"share\": \"3\",\n    \"category\": \"economics\",\n    \"year\": \"2019\"\n  },\n  {\n    \"id\": \"980\",\n    \"firstname\": \"Peter\",\n    \"surname\": \"Handke\",\n    \"motivation\": \"for an influential work that with linguistic ingenuity has explored the periphery and the specificity of human experience\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"2019\"\n  },\n  {\n    \"id\": \"981\",\n    \"firstname\": \"Abiy\",\n    \"surname\": \"Ahmed Ali\",\n    \"motivation\": \"for his efforts to achieve peace and international cooperation, and in particular for his decisive initiative to resolve the border conflict with neighbouring Eritrea\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"2019\"\n  },\n  {\n    \"id\": \"973\",\n    \"firstname\": \"James\",\n    \"surname\": \"Peebles\",\n    \"motivation\": \"for theoretical discoveries in physical cosmology\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"2019\"\n  },\n  {\n    \"id\": \"974\",\n    \"firstname\": \"Michel\",\n    \"surname\": \"Mayor\",\n    \"motivation\": \"for the discovery of an exoplanet orbiting a solar-type star\",\n    \"share\": \"4\",\n    \"category\": \"physics\",\n    \"year\": \"2019\"\n  },\n  {\n    \"id\": \"975\",\n    \"firstname\": \"Didier\",\n    \"surname\": \"Queloz\",\n    \"motivation\": \"for the discovery of an exoplanet orbiting a solar-type star\",\n    \"share\": \"4\",\n    \"category\": \"physics\",\n    \"year\": \"2019\"\n  },\n  {\n    \"id\": \"970\",\n    \"firstname\": \"William\",\n    \"surname\": \"Kaelin\",\n    \"motivation\": \"for their discoveries of how cells sense and adapt to oxygen availability\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"2019\"\n  },\n  {\n    \"id\": \"971\",\n    \"firstname\": \"Peter\",\n    \"surname\": \"Ratcliffe\",\n    \"motivation\": \"for their discoveries of how cells sense and adapt to oxygen availability\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"2019\"\n  },\n  {\n    \"id\": \"972\",\n    \"firstname\": \"Gregg\",\n    \"surname\": \"Semenza\",\n    \"motivation\": \"for their discoveries of how cells sense and adapt to oxygen availability\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"2019\"\n  },\n  {\n    \"id\": \"963\",\n    \"firstname\": \"Frances H.\",\n    \"surname\": \"Arnold\",\n    \"motivation\": \"for the directed evolution of enzymes\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"2018\"\n  },\n  {\n    \"id\": \"964\",\n    \"firstname\": \"George P.\",\n    \"surname\": \"Smith\",\n    \"motivation\": \"for the phage display of peptides and antibodies\",\n    \"share\": \"4\",\n    \"category\": \"chemistry\",\n    \"year\": \"2018\"\n  },\n  {\n    \"id\": \"965\",\n    \"firstname\": \"Sir Gregory P.\",\n    \"surname\": \"Winter\",\n    \"motivation\": \"for the phage display of peptides and antibodies\",\n    \"share\": \"4\",\n    \"category\": \"chemistry\",\n    \"year\": \"2018\"\n  },\n  {\n    \"id\": \"968\",\n    \"firstname\": \"William D.\",\n    \"surname\": \"Nordhaus\",\n    \"motivation\": \"for integrating climate change into long-run macroeconomic analysis\",\n    \"share\": \"2\",\n    \"category\": \"economics\",\n    \"year\": \"2018\"\n  },\n  {\n    \"id\": \"969\",\n    \"firstname\": \"Paul M.\",\n    \"surname\": \"Romer\",\n    \"motivation\": \"for integrating technological innovations into long-run macroeconomic analysis\",\n    \"share\": \"2\",\n    \"category\": \"economics\",\n    \"year\": \"2018\"\n  },\n  {\n    \"id\": \"979\",\n    \"firstname\": \"Olga\",\n    \"surname\": \"Tokarczuk\",\n    \"motivation\": \"for a narrative imagination that with encyclopedic passion represents the crossing of boundaries as a form of life\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"2018\"\n  },\n  {\n    \"id\": \"966\",\n    \"firstname\": \"Denis\",\n    \"surname\": \"Mukwege\",\n    \"motivation\": \"for their efforts to end the use of sexual violence as a weapon of war and armed conflict\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"2018\"\n  },\n  {\n    \"id\": \"967\",\n    \"firstname\": \"Nadia\",\n    \"surname\": \"Murad\",\n    \"motivation\": \"for their efforts to end the use of sexual violence as a weapon of war and armed conflict\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"2018\"\n  },\n  {\n    \"id\": \"960\",\n    \"firstname\": \"Arthur\",\n    \"surname\": \"Ashkin\",\n    \"motivation\": \"for the optical tweezers and their application to biological systems\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"2018\"\n  },\n  {\n    \"id\": \"961\",\n    \"firstname\": \"Gérard\",\n    \"surname\": \"Mourou\",\n    \"motivation\": \"for their method of generating high-intensity, ultra-short optical pulses\",\n    \"share\": \"4\",\n    \"category\": \"physics\",\n    \"year\": \"2018\"\n  },\n  {\n    \"id\": \"962\",\n    \"firstname\": \"Donna\",\n    \"surname\": \"Strickland\",\n    \"motivation\": \"for their method of generating high-intensity, ultra-short optical pulses\",\n    \"share\": \"4\",\n    \"category\": \"physics\",\n    \"year\": \"2018\"\n  },\n  {\n    \"id\": \"958\",\n    \"firstname\": \"James P.\",\n    \"surname\": \"Allison\",\n    \"motivation\": \"for their discovery of cancer therapy by inhibition of negative immune regulation\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"2018\"\n  },\n  {\n    \"id\": \"959\",\n    \"firstname\": \"Tasuku\",\n    \"surname\": \"Honjo\",\n    \"motivation\": \"for their discovery of cancer therapy by inhibition of negative immune regulation\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"2018\"\n  },\n  {\n    \"id\": \"944\",\n    \"firstname\": \"Jacques\",\n    \"surname\": \"Dubochet\",\n    \"motivation\": \"for developing cryo-electron microscopy for the high-resolution structure determination of biomolecules in solution\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"2017\"\n  },\n  {\n    \"id\": \"945\",\n    \"firstname\": \"Joachim\",\n    \"surname\": \"Frank\",\n    \"motivation\": \"for developing cryo-electron microscopy for the high-resolution structure determination of biomolecules in solution\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"2017\"\n  },\n  {\n    \"id\": \"946\",\n    \"firstname\": \"Richard\",\n    \"surname\": \"Henderson\",\n    \"motivation\": \"for developing cryo-electron microscopy for the high-resolution structure determination of biomolecules in solution\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"2017\"\n  },\n  {\n    \"id\": \"949\",\n    \"firstname\": \"Richard H.\",\n    \"surname\": \"Thaler\",\n    \"motivation\": \"for his contributions to behavioural economics\",\n    \"share\": \"1\",\n    \"category\": \"economics\",\n    \"year\": \"2017\"\n  },\n  {\n    \"id\": \"947\",\n    \"firstname\": \"Kazuo\",\n    \"surname\": \"Ishiguro\",\n    \"motivation\": \"who, in novels of great emotional force, has uncovered the abyss beneath our illusory sense of connection with the world\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"2017\"\n  },\n  {\n    \"id\": \"948\",\n    \"motivation\": \"for its work to draw attention to the catastrophic humanitarian consequences of any use of nuclear weapons and for its ground-breaking efforts to achieve a treaty-based prohibition of such weapons\",\n    \"share\": \"1\",\n    \"firstname\": \"International Campaign to Abolish Nuclear Weapons\",\n    \"category\": \"peace\",\n    \"year\": \"2017\"\n  },\n  {\n    \"id\": \"941\",\n    \"firstname\": \"Rainer\",\n    \"surname\": \"Weiss\",\n    \"motivation\": \"for decisive contributions to the LIGO detector and the observation of gravitational waves\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"2017\"\n  },\n  {\n    \"id\": \"942\",\n    \"firstname\": \"Barry C.\",\n    \"surname\": \"Barish\",\n    \"motivation\": \"for decisive contributions to the LIGO detector and the observation of gravitational waves\",\n    \"share\": \"4\",\n    \"category\": \"physics\",\n    \"year\": \"2017\"\n  },\n  {\n    \"id\": \"943\",\n    \"firstname\": \"Kip S.\",\n    \"surname\": \"Thorne\",\n    \"motivation\": \"for decisive contributions to the LIGO detector and the observation of gravitational waves\",\n    \"share\": \"4\",\n    \"category\": \"physics\",\n    \"year\": \"2017\"\n  },\n  {\n    \"id\": \"938\",\n    \"firstname\": \"Jeffrey C.\",\n    \"surname\": \"Hall\",\n    \"motivation\": \"for their discoveries of molecular mechanisms controlling the circadian rhythm\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"2017\"\n  },\n  {\n    \"id\": \"939\",\n    \"firstname\": \"Michael\",\n    \"surname\": \"Rosbash\",\n    \"motivation\": \"for their discoveries of molecular mechanisms controlling the circadian rhythm\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"2017\"\n  },\n  {\n    \"id\": \"940\",\n    \"firstname\": \"Michael W.\",\n    \"surname\": \"Young\",\n    \"motivation\": \"for their discoveries of molecular mechanisms controlling the circadian rhythm\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"2017\"\n  },\n  {\n    \"id\": \"931\",\n    \"firstname\": \"Jean-Pierre\",\n    \"surname\": \"Sauvage\",\n    \"motivation\": \"for the design and synthesis of molecular machines\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"2016\"\n  },\n  {\n    \"id\": \"932\",\n    \"firstname\": \"Sir J. Fraser\",\n    \"surname\": \"Stoddart\",\n    \"motivation\": \"for the design and synthesis of molecular machines\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"2016\"\n  },\n  {\n    \"id\": \"933\",\n    \"firstname\": \"Bernard L.\",\n    \"surname\": \"Feringa\",\n    \"motivation\": \"for the design and synthesis of molecular machines\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"2016\"\n  },\n  {\n    \"id\": \"935\",\n    \"firstname\": \"Oliver\",\n    \"surname\": \"Hart\",\n    \"motivation\": \"for their contributions to contract theory\",\n    \"share\": \"2\",\n    \"category\": \"economics\",\n    \"year\": \"2016\"\n  },\n  {\n    \"id\": \"936\",\n    \"firstname\": \"Bengt\",\n    \"surname\": \"Holmström\",\n    \"motivation\": \"for their contributions to contract theory\",\n    \"share\": \"2\",\n    \"category\": \"economics\",\n    \"year\": \"2016\"\n  },\n  {\n    \"id\": \"937\",\n    \"firstname\": \"Bob\",\n    \"surname\": \"Dylan\",\n    \"motivation\": \"for having created new poetic expressions within the great American song tradition\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"2016\"\n  },\n  {\n    \"id\": \"934\",\n    \"firstname\": \"Juan Manuel\",\n    \"surname\": \"Santos\",\n    \"motivation\": \"for his resolute efforts to bring the country's more than 50-year-long civil war to an end\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"2016\"\n  },\n  {\n    \"id\": \"928\",\n    \"firstname\": \"David J.\",\n    \"surname\": \"Thouless\",\n    \"motivation\": \"for theoretical discoveries of topological phase transitions and topological phases of matter\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"2016\"\n  },\n  {\n    \"id\": \"929\",\n    \"firstname\": \"F. Duncan M.\",\n    \"surname\": \"Haldane\",\n    \"motivation\": \"for theoretical discoveries of topological phase transitions and topological phases of matter\",\n    \"share\": \"4\",\n    \"category\": \"physics\",\n    \"year\": \"2016\"\n  },\n  {\n    \"id\": \"930\",\n    \"firstname\": \"J. Michael\",\n    \"surname\": \"Kosterlitz\",\n    \"motivation\": \"for theoretical discoveries of topological phase transitions and topological phases of matter\",\n    \"share\": \"4\",\n    \"category\": \"physics\",\n    \"year\": \"2016\"\n  },\n  {\n    \"id\": \"927\",\n    \"firstname\": \"Yoshinori\",\n    \"surname\": \"Ohsumi\",\n    \"motivation\": \"for his discoveries of mechanisms for autophagy\",\n    \"share\": \"1\",\n    \"category\": \"medicine\",\n    \"year\": \"2016\"\n  },\n  {\n    \"id\": \"921\",\n    \"firstname\": \"Tomas\",\n    \"surname\": \"Lindahl\",\n    \"motivation\": \"for mechanistic studies of DNA repair\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"2015\"\n  },\n  {\n    \"id\": \"922\",\n    \"firstname\": \"Paul\",\n    \"surname\": \"Modrich\",\n    \"motivation\": \"for mechanistic studies of DNA repair\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"2015\"\n  },\n  {\n    \"id\": \"923\",\n    \"firstname\": \"Aziz\",\n    \"surname\": \"Sancar\",\n    \"motivation\": \"for mechanistic studies of DNA repair\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"2015\"\n  },\n  {\n    \"id\": \"926\",\n    \"firstname\": \"Angus\",\n    \"surname\": \"Deaton\",\n    \"motivation\": \"for his analysis of consumption, poverty, and welfare\",\n    \"share\": \"1\",\n    \"category\": \"economics\",\n    \"year\": \"2015\"\n  },\n  {\n    \"id\": \"924\",\n    \"firstname\": \"Svetlana\",\n    \"surname\": \"Alexievich\",\n    \"motivation\": \"for her polyphonic writings, a monument to suffering and courage in our time\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"2015\"\n  },\n  {\n    \"id\": \"925\",\n    \"motivation\": \"for its decisive contribution to the building of a pluralistic democracy in Tunisia in the wake of the Jasmine Revolution of 2011\",\n    \"share\": \"1\",\n    \"firstname\": \"National Dialogue Quartet\",\n    \"category\": \"peace\",\n    \"year\": \"2015\"\n  },\n  {\n    \"id\": \"919\",\n    \"firstname\": \"Takaaki\",\n    \"surname\": \"Kajita\",\n    \"motivation\": \"for the discovery of neutrino oscillations, which shows that neutrinos have mass\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"2015\"\n  },\n  {\n    \"id\": \"920\",\n    \"firstname\": \"Arthur B.\",\n    \"surname\": \"McDonald\",\n    \"motivation\": \"for the discovery of neutrino oscillations, which shows that neutrinos have mass\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"2015\"\n  },\n  {\n    \"id\": \"916\",\n    \"firstname\": \"William C.\",\n    \"surname\": \"Campbell\",\n    \"motivation\": \"for their discoveries concerning a novel therapy against infections caused by roundworm parasites\",\n    \"share\": \"4\",\n    \"category\": \"medicine\",\n    \"year\": \"2015\"\n  },\n  {\n    \"id\": \"917\",\n    \"firstname\": \"Satoshi\",\n    \"surname\": \"Ōmura\",\n    \"motivation\": \"for their discoveries concerning a novel therapy against infections caused by roundworm parasites\",\n    \"share\": \"4\",\n    \"category\": \"medicine\",\n    \"year\": \"2015\"\n  },\n  {\n    \"id\": \"918\",\n    \"firstname\": \"Youyou\",\n    \"surname\": \"Tu\",\n    \"motivation\": \"for her discoveries concerning a novel therapy against Malaria\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"2015\"\n  },\n  {\n    \"id\": \"909\",\n    \"firstname\": \"Eric\",\n    \"surname\": \"Betzig\",\n    \"motivation\": \"for the development of super-resolved fluorescence microscopy\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"2014\"\n  },\n  {\n    \"id\": \"910\",\n    \"firstname\": \"Stefan W.\",\n    \"surname\": \"Hell\",\n    \"motivation\": \"for the development of super-resolved fluorescence microscopy\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"2014\"\n  },\n  {\n    \"id\": \"911\",\n    \"firstname\": \"William E.\",\n    \"surname\": \"Moerner\",\n    \"motivation\": \"for the development of super-resolved fluorescence microscopy\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"2014\"\n  },\n  {\n    \"id\": \"915\",\n    \"firstname\": \"Jean\",\n    \"surname\": \"Tirole\",\n    \"motivation\": \"for his analysis of market power and regulation\",\n    \"share\": \"1\",\n    \"category\": \"economics\",\n    \"year\": \"2014\"\n  },\n  {\n    \"id\": \"912\",\n    \"firstname\": \"Patrick\",\n    \"surname\": \"Modiano\",\n    \"motivation\": \"for the art of memory with which he has evoked the most ungraspable human destinies and uncovered the life-world of the occupation\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"2014\"\n  },\n  {\n    \"id\": \"913\",\n    \"firstname\": \"Kailash\",\n    \"surname\": \"Satyarthi\",\n    \"motivation\": \"for their struggle against the suppression of children and young people and for the right of all children to education\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"2014\"\n  },\n  {\n    \"id\": \"914\",\n    \"firstname\": \"Malala\",\n    \"surname\": \"Yousafzai\",\n    \"motivation\": \"for their struggle against the suppression of children and young people and for the right of all children to education\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"2014\"\n  },\n  {\n    \"id\": \"906\",\n    \"firstname\": \"Isamu\",\n    \"surname\": \"Akasaki\",\n    \"motivation\": \"for the invention of efficient blue light-emitting diodes which has enabled bright and energy-saving white light sources\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"2014\"\n  },\n  {\n    \"id\": \"907\",\n    \"firstname\": \"Hiroshi\",\n    \"surname\": \"Amano\",\n    \"motivation\": \"for the invention of efficient blue light-emitting diodes which has enabled bright and energy-saving white light sources\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"2014\"\n  },\n  {\n    \"id\": \"908\",\n    \"firstname\": \"Shuji\",\n    \"surname\": \"Nakamura\",\n    \"motivation\": \"for the invention of efficient blue light-emitting diodes which has enabled bright and energy-saving white light sources\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"2014\"\n  },\n  {\n    \"id\": \"903\",\n    \"firstname\": \"John\",\n    \"surname\": \"O'Keefe\",\n    \"motivation\": \"for their discoveries of cells that constitute a positioning system in the brain\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"2014\"\n  },\n  {\n    \"id\": \"904\",\n    \"firstname\": \"May-Britt\",\n    \"surname\": \"Moser\",\n    \"motivation\": \"for their discoveries of cells that constitute a positioning system in the brain\",\n    \"share\": \"4\",\n    \"category\": \"medicine\",\n    \"year\": \"2014\"\n  },\n  {\n    \"id\": \"905\",\n    \"firstname\": \"Edvard I.\",\n    \"surname\": \"Moser\",\n    \"motivation\": \"for their discoveries of cells that constitute a positioning system in the brain\",\n    \"share\": \"4\",\n    \"category\": \"medicine\",\n    \"year\": \"2014\"\n  },\n  {\n    \"id\": \"889\",\n    \"firstname\": \"Martin\",\n    \"surname\": \"Karplus\",\n    \"motivation\": \"for the development of multiscale models for complex chemical systems\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"2013\"\n  },\n  {\n    \"id\": \"890\",\n    \"firstname\": \"Michael\",\n    \"surname\": \"Levitt\",\n    \"motivation\": \"for the development of multiscale models for complex chemical systems\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"2013\"\n  },\n  {\n    \"id\": \"891\",\n    \"firstname\": \"Arieh\",\n    \"surname\": \"Warshel\",\n    \"motivation\": \"for the development of multiscale models for complex chemical systems\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"2013\"\n  },\n  {\n    \"id\": \"894\",\n    \"firstname\": \"Eugene F.\",\n    \"surname\": \"Fama\",\n    \"motivation\": \"for their empirical analysis of asset prices\",\n    \"share\": \"3\",\n    \"category\": \"economics\",\n    \"year\": \"2013\"\n  },\n  {\n    \"id\": \"895\",\n    \"firstname\": \"Lars Peter\",\n    \"surname\": \"Hansen\",\n    \"motivation\": \"for their empirical analysis of asset prices\",\n    \"share\": \"3\",\n    \"category\": \"economics\",\n    \"year\": \"2013\"\n  },\n  {\n    \"id\": \"896\",\n    \"firstname\": \"Robert J.\",\n    \"surname\": \"Shiller\",\n    \"motivation\": \"for their empirical analysis of asset prices\",\n    \"share\": \"3\",\n    \"category\": \"economics\",\n    \"year\": \"2013\"\n  },\n  {\n    \"id\": \"892\",\n    \"firstname\": \"Alice\",\n    \"surname\": \"Munro\",\n    \"motivation\": \"master of the contemporary short story\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"2013\"\n  },\n  {\n    \"id\": \"893\",\n    \"motivation\": \"for its extensive efforts to eliminate chemical weapons\",\n    \"share\": \"1\",\n    \"firstname\": \"Organisation for the Prohibition of Chemical Weapons\",\n    \"category\": \"peace\",\n    \"year\": \"2013\"\n  },\n  {\n    \"id\": \"887\",\n    \"firstname\": \"François\",\n    \"surname\": \"Englert\",\n    \"motivation\": \"for the theoretical discovery of a mechanism that contributes to our understanding of the origin of mass of subatomic particles, and which recently was confirmed through the discovery of the predicted fundamental particle, by the ATLAS and CMS experiments at CERN's Large Hadron Collider\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"2013\"\n  },\n  {\n    \"id\": \"888\",\n    \"firstname\": \"Peter\",\n    \"surname\": \"Higgs\",\n    \"motivation\": \"for the theoretical discovery of a mechanism that contributes to our understanding of the origin of mass of subatomic particles, and which recently was confirmed through the discovery of the predicted fundamental particle, by the ATLAS and CMS experiments at CERN's Large Hadron Collider\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"2013\"\n  },\n  {\n    \"id\": \"884\",\n    \"firstname\": \"James E.\",\n    \"surname\": \"Rothman\",\n    \"motivation\": \"for their discoveries of machinery regulating vesicle traffic, a major transport system in our cells\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"2013\"\n  },\n  {\n    \"id\": \"885\",\n    \"firstname\": \"Randy W.\",\n    \"surname\": \"Schekman\",\n    \"motivation\": \"for their discoveries of machinery regulating vesicle traffic, a major transport system in our cells\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"2013\"\n  },\n  {\n    \"id\": \"886\",\n    \"firstname\": \"Thomas C.\",\n    \"surname\": \"Südhof\",\n    \"motivation\": \"for their discoveries of machinery regulating vesicle traffic, a major transport system in our cells\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"2013\"\n  },\n  {\n    \"id\": \"878\",\n    \"firstname\": \"Robert J.\",\n    \"surname\": \"Lefkowitz\",\n    \"motivation\": \"for studies of G-protein-coupled receptors\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"2012\"\n  },\n  {\n    \"id\": \"879\",\n    \"firstname\": \"Brian\",\n    \"surname\": \"Kobilka\",\n    \"motivation\": \"for studies of G-protein-coupled receptors\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"2012\"\n  },\n  {\n    \"id\": \"882\",\n    \"firstname\": \"Alvin E.\",\n    \"surname\": \"Roth\",\n    \"motivation\": \"for the theory of stable allocations and the practice of market design\",\n    \"share\": \"2\",\n    \"category\": \"economics\",\n    \"year\": \"2012\"\n  },\n  {\n    \"id\": \"883\",\n    \"firstname\": \"Lloyd S.\",\n    \"surname\": \"Shapley\",\n    \"motivation\": \"for the theory of stable allocations and the practice of market design\",\n    \"share\": \"2\",\n    \"category\": \"economics\",\n    \"year\": \"2012\"\n  },\n  {\n    \"id\": \"880\",\n    \"firstname\": \"Mo\",\n    \"surname\": \"Yan\",\n    \"motivation\": \"who with hallucinatory realism merges folk tales, history and the contemporary\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"2012\"\n  },\n  {\n    \"id\": \"881\",\n    \"motivation\": \"for over six decades contributed to the advancement of peace and reconciliation, democracy and human rights in Europe\",\n    \"share\": \"1\",\n    \"firstname\": \"European Union\",\n    \"category\": \"peace\",\n    \"year\": \"2012\"\n  },\n  {\n    \"id\": \"876\",\n    \"firstname\": \"Serge\",\n    \"surname\": \"Haroche\",\n    \"motivation\": \"for ground-breaking experimental methods that enable measuring and manipulation of individual quantum systems\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"2012\"\n  },\n  {\n    \"id\": \"877\",\n    \"firstname\": \"David J.\",\n    \"surname\": \"Wineland\",\n    \"motivation\": \"for ground-breaking experimental methods that enable measuring and manipulation of individual quantum systems\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"2012\"\n  },\n  {\n    \"id\": \"874\",\n    \"firstname\": \"Sir John B.\",\n    \"surname\": \"Gurdon\",\n    \"motivation\": \"for the discovery that mature cells can be reprogrammed to become pluripotent\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"2012\"\n  },\n  {\n    \"id\": \"875\",\n    \"firstname\": \"Shinya\",\n    \"surname\": \"Yamanaka\",\n    \"motivation\": \"for the discovery that mature cells can be reprogrammed to become pluripotent\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"2012\"\n  },\n  {\n    \"id\": \"867\",\n    \"firstname\": \"Dan\",\n    \"surname\": \"Shechtman\",\n    \"motivation\": \"for the discovery of quasicrystals\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"2011\"\n  },\n  {\n    \"id\": \"872\",\n    \"firstname\": \"Thomas J.\",\n    \"surname\": \"Sargent\",\n    \"motivation\": \"for their empirical research on cause and effect in the macroeconomy\",\n    \"share\": \"2\",\n    \"category\": \"economics\",\n    \"year\": \"2011\"\n  },\n  {\n    \"id\": \"873\",\n    \"firstname\": \"Christopher A.\",\n    \"surname\": \"Sims\",\n    \"motivation\": \"for their empirical research on cause and effect in the macroeconomy\",\n    \"share\": \"2\",\n    \"category\": \"economics\",\n    \"year\": \"2011\"\n  },\n  {\n    \"id\": \"868\",\n    \"firstname\": \"Tomas\",\n    \"surname\": \"Tranströmer\",\n    \"motivation\": \"because, through his condensed, translucent images, he gives us fresh access to reality\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"2011\"\n  },\n  {\n    \"id\": \"869\",\n    \"firstname\": \"Ellen\",\n    \"surname\": \"Johnson Sirleaf\",\n    \"motivation\": \"for their non-violent struggle for the safety of women and for women's rights to full participation in peace-building work\",\n    \"share\": \"3\",\n    \"category\": \"peace\",\n    \"year\": \"2011\"\n  },\n  {\n    \"id\": \"870\",\n    \"firstname\": \"Leymah\",\n    \"surname\": \"Gbowee\",\n    \"motivation\": \"for their non-violent struggle for the safety of women and for women's rights to full participation in peace-building work\",\n    \"share\": \"3\",\n    \"category\": \"peace\",\n    \"year\": \"2011\"\n  },\n  {\n    \"id\": \"871\",\n    \"firstname\": \"Tawakkol\",\n    \"surname\": \"Karman\",\n    \"motivation\": \"for their non-violent struggle for the safety of women and for women's rights to full participation in peace-building work\",\n    \"share\": \"3\",\n    \"category\": \"peace\",\n    \"year\": \"2011\"\n  },\n  {\n    \"id\": \"864\",\n    \"firstname\": \"Saul\",\n    \"surname\": \"Perlmutter\",\n    \"motivation\": \"for the discovery of the accelerating expansion of the Universe through observations of distant supernovae\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"2011\"\n  },\n  {\n    \"id\": \"865\",\n    \"firstname\": \"Brian P.\",\n    \"surname\": \"Schmidt\",\n    \"motivation\": \"for the discovery of the accelerating expansion of the Universe through observations of distant supernovae\",\n    \"share\": \"4\",\n    \"category\": \"physics\",\n    \"year\": \"2011\"\n  },\n  {\n    \"id\": \"866\",\n    \"firstname\": \"Adam G.\",\n    \"surname\": \"Riess\",\n    \"motivation\": \"for the discovery of the accelerating expansion of the Universe through observations of distant supernovae\",\n    \"share\": \"4\",\n    \"category\": \"physics\",\n    \"year\": \"2011\"\n  },\n  {\n    \"id\": \"861\",\n    \"firstname\": \"Bruce A.\",\n    \"surname\": \"Beutler\",\n    \"motivation\": \"for their discoveries concerning the activation of innate immunity\",\n    \"share\": \"4\",\n    \"category\": \"medicine\",\n    \"year\": \"2011\"\n  },\n  {\n    \"id\": \"862\",\n    \"firstname\": \"Jules A.\",\n    \"surname\": \"Hoffmann\",\n    \"motivation\": \"for their discoveries concerning the activation of innate immunity\",\n    \"share\": \"4\",\n    \"category\": \"medicine\",\n    \"year\": \"2011\"\n  },\n  {\n    \"id\": \"863\",\n    \"firstname\": \"Ralph M.\",\n    \"surname\": \"Steinman\",\n    \"motivation\": \"for his discovery of the dendritic cell and its role in adaptive immunity\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"2011\"\n  },\n  {\n    \"id\": \"851\",\n    \"firstname\": \"Richard F.\",\n    \"surname\": \"Heck\",\n    \"motivation\": \"for palladium-catalyzed cross couplings in organic synthesis\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"2010\"\n  },\n  {\n    \"id\": \"852\",\n    \"firstname\": \"Ei-ichi\",\n    \"surname\": \"Negishi\",\n    \"motivation\": \"for palladium-catalyzed cross couplings in organic synthesis\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"2010\"\n  },\n  {\n    \"id\": \"853\",\n    \"firstname\": \"Akira\",\n    \"surname\": \"Suzuki\",\n    \"motivation\": \"for palladium-catalyzed cross couplings in organic synthesis\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"2010\"\n  },\n  {\n    \"id\": \"856\",\n    \"firstname\": \"Peter A.\",\n    \"surname\": \"Diamond\",\n    \"motivation\": \"for their analysis of markets with search frictions\",\n    \"share\": \"3\",\n    \"category\": \"economics\",\n    \"year\": \"2010\"\n  },\n  {\n    \"id\": \"857\",\n    \"firstname\": \"Dale T.\",\n    \"surname\": \"Mortensen\",\n    \"motivation\": \"for their analysis of markets with search frictions\",\n    \"share\": \"3\",\n    \"category\": \"economics\",\n    \"year\": \"2010\"\n  },\n  {\n    \"id\": \"858\",\n    \"firstname\": \"Christopher A.\",\n    \"surname\": \"Pissarides\",\n    \"motivation\": \"for their analysis of markets with search frictions\",\n    \"share\": \"3\",\n    \"category\": \"economics\",\n    \"year\": \"2010\"\n  },\n  {\n    \"id\": \"854\",\n    \"firstname\": \"Mario\",\n    \"surname\": \"Vargas Llosa\",\n    \"motivation\": \"for his cartography of structures of power and his trenchant images of the individual's resistance, revolt, and defeat\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"2010\"\n  },\n  {\n    \"id\": \"855\",\n    \"firstname\": \"Xiaobo\",\n    \"surname\": \"Liu\",\n    \"motivation\": \"for his long and non-violent struggle for fundamental human rights in China\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"2010\"\n  },\n  {\n    \"id\": \"849\",\n    \"firstname\": \"Andre\",\n    \"surname\": \"Geim\",\n    \"motivation\": \"for groundbreaking experiments regarding the two-dimensional material graphene\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"2010\"\n  },\n  {\n    \"id\": \"850\",\n    \"firstname\": \"Konstantin\",\n    \"surname\": \"Novoselov\",\n    \"motivation\": \"for groundbreaking experiments regarding the two-dimensional material graphene\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"2010\"\n  },\n  {\n    \"id\": \"848\",\n    \"firstname\": \"Robert G.\",\n    \"surname\": \"Edwards\",\n    \"motivation\": \"for the development of in vitro fertilization\",\n    \"share\": \"1\",\n    \"category\": \"medicine\",\n    \"year\": \"2010\"\n  },\n  {\n    \"id\": \"841\",\n    \"firstname\": \"Venkatraman\",\n    \"surname\": \"Ramakrishnan\",\n    \"motivation\": \"for studies of the structure and function of the ribosome\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"2009\"\n  },\n  {\n    \"id\": \"842\",\n    \"firstname\": \"Thomas A.\",\n    \"surname\": \"Steitz\",\n    \"motivation\": \"for studies of the structure and function of the ribosome\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"2009\"\n  },\n  {\n    \"id\": \"843\",\n    \"firstname\": \"Ada E.\",\n    \"surname\": \"Yonath\",\n    \"motivation\": \"for studies of the structure and function of the ribosome\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"2009\"\n  },\n  {\n    \"id\": \"846\",\n    \"firstname\": \"Elinor\",\n    \"surname\": \"Ostrom\",\n    \"motivation\": \"for her analysis of economic governance, especially the commons\",\n    \"share\": \"2\",\n    \"category\": \"economics\",\n    \"year\": \"2009\"\n  },\n  {\n    \"id\": \"847\",\n    \"firstname\": \"Oliver E.\",\n    \"surname\": \"Williamson\",\n    \"motivation\": \"for his analysis of economic governance, especially the boundaries of the firm\",\n    \"share\": \"2\",\n    \"category\": \"economics\",\n    \"year\": \"2009\"\n  },\n  {\n    \"id\": \"844\",\n    \"firstname\": \"Herta\",\n    \"surname\": \"Müller\",\n    \"motivation\": \"who, with the concentration of poetry and the frankness of prose, depicts the landscape of the dispossessed\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"2009\"\n  },\n  {\n    \"id\": \"845\",\n    \"firstname\": \"Barack\",\n    \"surname\": \"Obama\",\n    \"motivation\": \"for his extraordinary efforts to strengthen international diplomacy and cooperation between peoples\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"2009\"\n  },\n  {\n    \"id\": \"838\",\n    \"firstname\": \"Charles K.\",\n    \"surname\": \"Kao\",\n    \"motivation\": \"for groundbreaking achievements concerning the transmission of light in fibers for optical communication\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"2009\"\n  },\n  {\n    \"id\": \"839\",\n    \"firstname\": \"Willard S.\",\n    \"surname\": \"Boyle\",\n    \"motivation\": \"for the invention of an imaging semiconductor circuit - the CCD sensor\",\n    \"share\": \"4\",\n    \"category\": \"physics\",\n    \"year\": \"2009\"\n  },\n  {\n    \"id\": \"840\",\n    \"firstname\": \"George E.\",\n    \"surname\": \"Smith\",\n    \"motivation\": \"for the invention of an imaging semiconductor circuit - the CCD sensor\",\n    \"share\": \"4\",\n    \"category\": \"physics\",\n    \"year\": \"2009\"\n  },\n  {\n    \"id\": \"835\",\n    \"firstname\": \"Elizabeth H.\",\n    \"surname\": \"Blackburn\",\n    \"motivation\": \"for the discovery of how chromosomes are protected by telomeres and the enzyme telomerase\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"2009\"\n  },\n  {\n    \"id\": \"836\",\n    \"firstname\": \"Carol W.\",\n    \"surname\": \"Greider\",\n    \"motivation\": \"for the discovery of how chromosomes are protected by telomeres and the enzyme telomerase\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"2009\"\n  },\n  {\n    \"id\": \"837\",\n    \"firstname\": \"Jack W.\",\n    \"surname\": \"Szostak\",\n    \"motivation\": \"for the discovery of how chromosomes are protected by telomeres and the enzyme telomerase\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"2009\"\n  },\n  {\n    \"id\": \"829\",\n    \"firstname\": \"Osamu\",\n    \"surname\": \"Shimomura\",\n    \"motivation\": \"for the discovery and development of the green fluorescent protein, GFP\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"2008\"\n  },\n  {\n    \"id\": \"830\",\n    \"firstname\": \"Martin\",\n    \"surname\": \"Chalfie\",\n    \"motivation\": \"for the discovery and development of the green fluorescent protein, GFP\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"2008\"\n  },\n  {\n    \"id\": \"831\",\n    \"firstname\": \"Roger Y.\",\n    \"surname\": \"Tsien\",\n    \"motivation\": \"for the discovery and development of the green fluorescent protein, GFP\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"2008\"\n  },\n  {\n    \"id\": \"834\",\n    \"firstname\": \"Paul\",\n    \"surname\": \"Krugman\",\n    \"motivation\": \"for his analysis of trade patterns and location of economic activity\",\n    \"share\": \"1\",\n    \"category\": \"economics\",\n    \"year\": \"2008\"\n  },\n  {\n    \"id\": \"832\",\n    \"firstname\": \"Jean-Marie Gustave\",\n    \"surname\": \"Le Clézio\",\n    \"motivation\": \"author of new departures, poetic adventure and sensual ecstasy, explorer of a humanity beyond and below the reigning civilization\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"2008\"\n  },\n  {\n    \"id\": \"833\",\n    \"firstname\": \"Martti\",\n    \"surname\": \"Ahtisaari\",\n    \"motivation\": \"for his important efforts, on several continents and over more than three decades, to resolve international conflicts\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"2008\"\n  },\n  {\n    \"id\": \"826\",\n    \"firstname\": \"Yoichiro\",\n    \"surname\": \"Nambu\",\n    \"motivation\": \"for the discovery of the mechanism of spontaneous broken symmetry in subatomic physics\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"2008\"\n  },\n  {\n    \"id\": \"827\",\n    \"firstname\": \"Makoto\",\n    \"surname\": \"Kobayashi\",\n    \"motivation\": \"for the discovery of the origin of the broken symmetry which predicts the existence of at least three families of quarks in nature\",\n    \"share\": \"4\",\n    \"category\": \"physics\",\n    \"year\": \"2008\"\n  },\n  {\n    \"id\": \"828\",\n    \"firstname\": \"Toshihide\",\n    \"surname\": \"Maskawa\",\n    \"motivation\": \"for the discovery of the origin of the broken symmetry which predicts the existence of at least three families of quarks in nature\",\n    \"share\": \"4\",\n    \"category\": \"physics\",\n    \"year\": \"2008\"\n  },\n  {\n    \"id\": \"823\",\n    \"firstname\": \"Harald\",\n    \"surname\": \"zur Hausen\",\n    \"motivation\": \"for his discovery of human papilloma viruses causing cervical cancer\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"2008\"\n  },\n  {\n    \"id\": \"824\",\n    \"firstname\": \"Françoise\",\n    \"surname\": \"Barré-Sinoussi\",\n    \"motivation\": \"for their discovery of human immunodeficiency virus\",\n    \"share\": \"4\",\n    \"category\": \"medicine\",\n    \"year\": \"2008\"\n  },\n  {\n    \"id\": \"825\",\n    \"firstname\": \"Luc\",\n    \"surname\": \"Montagnier\",\n    \"motivation\": \"for their discovery of human immunodeficiency virus\",\n    \"share\": \"4\",\n    \"category\": \"medicine\",\n    \"year\": \"2008\"\n  },\n  {\n    \"id\": \"816\",\n    \"firstname\": \"Gerhard\",\n    \"surname\": \"Ertl\",\n    \"motivation\": \"for his studies of chemical processes on solid surfaces\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"2007\"\n  },\n  {\n    \"id\": \"820\",\n    \"firstname\": \"Leonid\",\n    \"surname\": \"Hurwicz\",\n    \"motivation\": \"for having laid the foundations of mechanism design theory\",\n    \"share\": \"3\",\n    \"category\": \"economics\",\n    \"year\": \"2007\"\n  },\n  {\n    \"id\": \"821\",\n    \"firstname\": \"Eric S.\",\n    \"surname\": \"Maskin\",\n    \"motivation\": \"for having laid the foundations of mechanism design theory\",\n    \"share\": \"3\",\n    \"category\": \"economics\",\n    \"year\": \"2007\"\n  },\n  {\n    \"id\": \"822\",\n    \"firstname\": \"Roger B.\",\n    \"surname\": \"Myerson\",\n    \"motivation\": \"for having laid the foundations of mechanism design theory\",\n    \"share\": \"3\",\n    \"category\": \"economics\",\n    \"year\": \"2007\"\n  },\n  {\n    \"id\": \"817\",\n    \"firstname\": \"Doris\",\n    \"surname\": \"Lessing\",\n    \"motivation\": \"that epicist of the female experience, who with scepticism, fire and visionary power has subjected a divided civilisation to scrutiny\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"2007\"\n  },\n  {\n    \"id\": \"818\",\n    \"motivation\": \"for their efforts to build up and disseminate greater knowledge about man-made climate change, and to lay the foundations for the measures that are needed to counteract such change\",\n    \"share\": \"2\",\n    \"firstname\": \"Intergovernmental Panel on Climate Change\",\n    \"category\": \"peace\",\n    \"year\": \"2007\"\n  },\n  {\n    \"id\": \"819\",\n    \"firstname\": \"Al\",\n    \"surname\": \"Gore\",\n    \"motivation\": \"for their efforts to build up and disseminate greater knowledge about man-made climate change, and to lay the foundations for the measures that are needed to counteract such change\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"2007\"\n  },\n  {\n    \"id\": \"814\",\n    \"firstname\": \"Albert\",\n    \"surname\": \"Fert\",\n    \"motivation\": \"for the discovery of Giant Magnetoresistance\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"2007\"\n  },\n  {\n    \"id\": \"815\",\n    \"firstname\": \"Peter\",\n    \"surname\": \"Grünberg\",\n    \"motivation\": \"for the discovery of Giant Magnetoresistance\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"2007\"\n  },\n  {\n    \"id\": \"811\",\n    \"firstname\": \"Mario R.\",\n    \"surname\": \"Capecchi\",\n    \"motivation\": \"for their discoveries of principles for introducing specific gene modifications in mice by the use of embryonic stem cells\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"2007\"\n  },\n  {\n    \"id\": \"812\",\n    \"firstname\": \"Sir Martin J.\",\n    \"surname\": \"Evans\",\n    \"motivation\": \"for their discoveries of principles for introducing specific gene modifications in mice by the use of embryonic stem cells\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"2007\"\n  },\n  {\n    \"id\": \"813\",\n    \"firstname\": \"Oliver\",\n    \"surname\": \"Smithies\",\n    \"motivation\": \"for their discoveries of principles for introducing specific gene modifications in mice by the use of embryonic stem cells\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"2007\"\n  },\n  {\n    \"id\": \"806\",\n    \"firstname\": \"Roger D.\",\n    \"surname\": \"Kornberg\",\n    \"motivation\": \"for his studies of the molecular basis of eukaryotic transcription\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"2006\"\n  },\n  {\n    \"id\": \"807\",\n    \"firstname\": \"Edmund S.\",\n    \"surname\": \"Phelps\",\n    \"motivation\": \"for his analysis of intertemporal tradeoffs in macroeconomic policy\",\n    \"share\": \"1\",\n    \"category\": \"economics\",\n    \"year\": \"2006\"\n  },\n  {\n    \"id\": \"808\",\n    \"firstname\": \"Orhan\",\n    \"surname\": \"Pamuk\",\n    \"motivation\": \"who in the quest for the melancholic soul of his native city has discovered new symbols for the clash and interlacing of cultures\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"2006\"\n  },\n  {\n    \"id\": \"809\",\n    \"firstname\": \"Muhammad\",\n    \"surname\": \"Yunus\",\n    \"motivation\": \"for their efforts to create economic and social development from below\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"2006\"\n  },\n  {\n    \"id\": \"810\",\n    \"motivation\": \"for their efforts to create economic and social development from below\",\n    \"share\": \"2\",\n    \"firstname\": \"Grameen Bank\",\n    \"category\": \"peace\",\n    \"year\": \"2006\"\n  },\n  {\n    \"id\": \"804\",\n    \"firstname\": \"John C.\",\n    \"surname\": \"Mather\",\n    \"motivation\": \"for their discovery of the blackbody form and anisotropy of the cosmic microwave background radiation\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"2006\"\n  },\n  {\n    \"id\": \"805\",\n    \"firstname\": \"George F.\",\n    \"surname\": \"Smoot\",\n    \"motivation\": \"for their discovery of the blackbody form and anisotropy of the cosmic microwave background radiation\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"2006\"\n  },\n  {\n    \"id\": \"802\",\n    \"firstname\": \"Andrew Z.\",\n    \"surname\": \"Fire\",\n    \"motivation\": \"for their discovery of RNA interference - gene silencing by double-stranded RNA\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"2006\"\n  },\n  {\n    \"id\": \"803\",\n    \"firstname\": \"Craig C.\",\n    \"surname\": \"Mello\",\n    \"motivation\": \"for their discovery of RNA interference - gene silencing by double-stranded RNA\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"2006\"\n  },\n  {\n    \"id\": \"794\",\n    \"firstname\": \"Yves\",\n    \"surname\": \"Chauvin\",\n    \"motivation\": \"for the development of the metathesis method in organic synthesis\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"2005\"\n  },\n  {\n    \"id\": \"795\",\n    \"firstname\": \"Robert H.\",\n    \"surname\": \"Grubbs\",\n    \"motivation\": \"for the development of the metathesis method in organic synthesis\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"2005\"\n  },\n  {\n    \"id\": \"796\",\n    \"firstname\": \"Richard R.\",\n    \"surname\": \"Schrock\",\n    \"motivation\": \"for the development of the metathesis method in organic synthesis\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"2005\"\n  },\n  {\n    \"id\": \"799\",\n    \"firstname\": \"Robert J.\",\n    \"surname\": \"Aumann\",\n    \"motivation\": \"for having enhanced our understanding of conflict and cooperation through game-theory analysis\",\n    \"share\": \"2\",\n    \"category\": \"economics\",\n    \"year\": \"2005\"\n  },\n  {\n    \"id\": \"800\",\n    \"firstname\": \"Thomas C.\",\n    \"surname\": \"Schelling\",\n    \"motivation\": \"for having enhanced our understanding of conflict and cooperation through game-theory analysis\",\n    \"share\": \"2\",\n    \"category\": \"economics\",\n    \"year\": \"2005\"\n  },\n  {\n    \"id\": \"801\",\n    \"firstname\": \"Harold\",\n    \"surname\": \"Pinter\",\n    \"motivation\": \"who in his plays uncovers the precipice under everyday prattle and forces entry into oppression's closed rooms\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"2005\"\n  },\n  {\n    \"id\": \"797\",\n    \"motivation\": \"for their efforts to prevent nuclear energy from being used for military purposes and to ensure that nuclear energy for peaceful purposes is used in the safest possible way\",\n    \"share\": \"2\",\n    \"firstname\": \"International Atomic Energy Agency\",\n    \"category\": \"peace\",\n    \"year\": \"2005\"\n  },\n  {\n    \"id\": \"798\",\n    \"firstname\": \"Mohamed\",\n    \"surname\": \"ElBaradei\",\n    \"motivation\": \"for their efforts to prevent nuclear energy from being used for military purposes and to ensure that nuclear energy for peaceful purposes is used in the safest possible way\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"2005\"\n  },\n  {\n    \"id\": \"791\",\n    \"firstname\": \"Roy J.\",\n    \"surname\": \"Glauber\",\n    \"motivation\": \"for his contribution to the quantum theory of optical coherence\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"2005\"\n  },\n  {\n    \"id\": \"792\",\n    \"firstname\": \"John L.\",\n    \"surname\": \"Hall\",\n    \"motivation\": \"for their contributions to the development of laser-based precision spectroscopy, including the optical frequency comb technique\",\n    \"share\": \"4\",\n    \"category\": \"physics\",\n    \"year\": \"2005\"\n  },\n  {\n    \"id\": \"793\",\n    \"firstname\": \"Theodor W.\",\n    \"surname\": \"Hänsch\",\n    \"motivation\": \"for their contributions to the development of laser-based precision spectroscopy, including the optical frequency comb technique\",\n    \"share\": \"4\",\n    \"category\": \"physics\",\n    \"year\": \"2005\"\n  },\n  {\n    \"id\": \"789\",\n    \"firstname\": \"Barry J.\",\n    \"surname\": \"Marshall\",\n    \"motivation\": \"for their discovery of the bacterium <i>Helicobacter pylori</i> and its role in gastritis and peptic ulcer disease\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"2005\"\n  },\n  {\n    \"id\": \"790\",\n    \"firstname\": \"J. Robin\",\n    \"surname\": \"Warren\",\n    \"motivation\": \"for their discovery of the bacterium <i>Helicobacter pylori</i> and its role in gastritis and peptic ulcer disease\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"2005\"\n  },\n  {\n    \"id\": \"779\",\n    \"firstname\": \"Aaron\",\n    \"surname\": \"Ciechanover\",\n    \"motivation\": \"for the discovery of ubiquitin-mediated protein degradation\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"2004\"\n  },\n  {\n    \"id\": \"780\",\n    \"firstname\": \"Avram\",\n    \"surname\": \"Hershko\",\n    \"motivation\": \"for the discovery of ubiquitin-mediated protein degradation\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"2004\"\n  },\n  {\n    \"id\": \"781\",\n    \"firstname\": \"Irwin\",\n    \"surname\": \"Rose\",\n    \"motivation\": \"for the discovery of ubiquitin-mediated protein degradation\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"2004\"\n  },\n  {\n    \"id\": \"786\",\n    \"firstname\": \"Finn E.\",\n    \"surname\": \"Kydland\",\n    \"motivation\": \"for their contributions to dynamic macroeconomics: the time consistency of economic policy and the driving forces behind business cycles\",\n    \"share\": \"2\",\n    \"category\": \"economics\",\n    \"year\": \"2004\"\n  },\n  {\n    \"id\": \"787\",\n    \"firstname\": \"Edward C.\",\n    \"surname\": \"Prescott\",\n    \"motivation\": \"for their contributions to dynamic macroeconomics: the time consistency of economic policy and the driving forces behind business cycles\",\n    \"share\": \"2\",\n    \"category\": \"economics\",\n    \"year\": \"2004\"\n  },\n  {\n    \"id\": \"782\",\n    \"firstname\": \"Elfriede\",\n    \"surname\": \"Jelinek\",\n    \"motivation\": \"for her musical flow of voices and counter-voices in novels and plays that with extraordinary linguistic zeal reveal the absurdity of society's clich&eacute;s and their subjugating power\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"2004\"\n  },\n  {\n    \"id\": \"783\",\n    \"firstname\": \"Wangari\",\n    \"surname\": \"Maathai\",\n    \"motivation\": \"for her contribution to sustainable development, democracy and peace\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"2004\"\n  },\n  {\n    \"id\": \"776\",\n    \"firstname\": \"David J.\",\n    \"surname\": \"Gross\",\n    \"motivation\": \"for the discovery of asymptotic freedom in the theory of the strong interaction\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"2004\"\n  },\n  {\n    \"id\": \"777\",\n    \"firstname\": \"H. David\",\n    \"surname\": \"Politzer\",\n    \"motivation\": \"for the discovery of asymptotic freedom in the theory of the strong interaction\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"2004\"\n  },\n  {\n    \"id\": \"778\",\n    \"firstname\": \"Frank\",\n    \"surname\": \"Wilczek\",\n    \"motivation\": \"for the discovery of asymptotic freedom in the theory of the strong interaction\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"2004\"\n  },\n  {\n    \"id\": \"774\",\n    \"firstname\": \"Richard\",\n    \"surname\": \"Axel\",\n    \"motivation\": \"for their discoveries of odorant receptors and the organization of the olfactory system\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"2004\"\n  },\n  {\n    \"id\": \"775\",\n    \"firstname\": \"Linda B.\",\n    \"surname\": \"Buck\",\n    \"motivation\": \"for their discoveries of odorant receptors and the organization of the olfactory system\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"2004\"\n  },\n  {\n    \"id\": \"769\",\n    \"firstname\": \"Peter\",\n    \"surname\": \"Agre\",\n    \"motivation\": \"for the discovery of water channels\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"2003\"\n  },\n  {\n    \"id\": \"770\",\n    \"firstname\": \"Roderick\",\n    \"surname\": \"MacKinnon\",\n    \"motivation\": \"for structural and mechanistic studies of ion channels\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"2003\"\n  },\n  {\n    \"id\": \"771\",\n    \"firstname\": \"Robert F.\",\n    \"surname\": \"Engle III\",\n    \"motivation\": \"for methods of analyzing economic time series with time-varying volatility (ARCH)\",\n    \"share\": \"2\",\n    \"category\": \"economics\",\n    \"year\": \"2003\"\n  },\n  {\n    \"id\": \"772\",\n    \"firstname\": \"Clive W.J.\",\n    \"surname\": \"Granger\",\n    \"motivation\": \"for methods of analyzing economic time series with common trends (cointegration)\",\n    \"share\": \"2\",\n    \"category\": \"economics\",\n    \"year\": \"2003\"\n  },\n  {\n    \"id\": \"763\",\n    \"firstname\": \"J. M.\",\n    \"surname\": \"Coetzee\",\n    \"motivation\": \"who in innumerable guises portrays the surprising involvement of the outsider\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"2003\"\n  },\n  {\n    \"id\": \"773\",\n    \"firstname\": \"Shirin\",\n    \"surname\": \"Ebadi\",\n    \"motivation\": \"for her efforts for democracy and human rights. She has focused especially on the struggle for the rights of women and children\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"2003\"\n  },\n  {\n    \"id\": \"766\",\n    \"firstname\": \"Alexei\",\n    \"surname\": \"Abrikosov\",\n    \"motivation\": \"for pioneering contributions to the theory of superconductors and superfluids\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"2003\"\n  },\n  {\n    \"id\": \"767\",\n    \"firstname\": \"Vitaly L.\",\n    \"surname\": \"Ginzburg\",\n    \"motivation\": \"for pioneering contributions to the theory of superconductors and superfluids\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"2003\"\n  },\n  {\n    \"id\": \"768\",\n    \"firstname\": \"Anthony J.\",\n    \"surname\": \"Leggett\",\n    \"motivation\": \"for pioneering contributions to the theory of superconductors and superfluids\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"2003\"\n  },\n  {\n    \"id\": \"764\",\n    \"firstname\": \"Paul C.\",\n    \"surname\": \"Lauterbur\",\n    \"motivation\": \"for their discoveries concerning magnetic resonance imaging\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"2003\"\n  },\n  {\n    \"id\": \"765\",\n    \"firstname\": \"Sir Peter\",\n    \"surname\": \"Mansfield\",\n    \"motivation\": \"for their discoveries concerning magnetic resonance imaging\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"2003\"\n  },\n  {\n    \"id\": \"756\",\n    \"firstname\": \"John B.\",\n    \"surname\": \"Fenn\",\n    \"motivation\": \"for their development of soft desorption ionisation methods for mass spectrometric analyses of biological macromolecules\",\n    \"share\": \"4\",\n    \"category\": \"chemistry\",\n    \"year\": \"2002\"\n  },\n  {\n    \"id\": \"757\",\n    \"firstname\": \"Koichi\",\n    \"surname\": \"Tanaka\",\n    \"motivation\": \"for their development of soft desorption ionisation methods for mass spectrometric analyses of biological macromolecules\",\n    \"share\": \"4\",\n    \"category\": \"chemistry\",\n    \"year\": \"2002\"\n  },\n  {\n    \"id\": \"758\",\n    \"firstname\": \"Kurt\",\n    \"surname\": \"Wüthrich\",\n    \"motivation\": \"for his development of nuclear magnetic resonance spectroscopy for determining the three-dimensional structure of biological macromolecules in solution\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"2002\"\n  },\n  {\n    \"id\": \"759\",\n    \"firstname\": \"Daniel\",\n    \"surname\": \"Kahneman\",\n    \"motivation\": \"for having integrated insights from psychological research into economic science, especially concerning human judgment and decision-making under uncertainty\",\n    \"share\": \"2\",\n    \"category\": \"economics\",\n    \"year\": \"2002\"\n  },\n  {\n    \"id\": \"760\",\n    \"firstname\": \"Vernon L.\",\n    \"surname\": \"Smith\",\n    \"motivation\": \"for having established laboratory experiments as a tool in empirical economic analysis, especially in the study of alternative market mechanisms\",\n    \"share\": \"2\",\n    \"category\": \"economics\",\n    \"year\": \"2002\"\n  },\n  {\n    \"id\": \"761\",\n    \"firstname\": \"Imre\",\n    \"surname\": \"Kertész\",\n    \"motivation\": \"for writing that upholds the fragile experience of the individual against the barbaric arbitrariness of history\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"2002\"\n  },\n  {\n    \"id\": \"762\",\n    \"firstname\": \"Jimmy\",\n    \"surname\": \"Carter\",\n    \"motivation\": \"for his decades of untiring effort to find peaceful solutions to international conflicts, to advance democracy and human rights, and to promote economic and social development\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"2002\"\n  },\n  {\n    \"id\": \"753\",\n    \"firstname\": \"Raymond\",\n    \"surname\": \"Davis Jr.\",\n    \"motivation\": \"for pioneering contributions to astrophysics, in particular for the detection of cosmic neutrinos\",\n    \"share\": \"4\",\n    \"category\": \"physics\",\n    \"year\": \"2002\"\n  },\n  {\n    \"id\": \"754\",\n    \"firstname\": \"Masatoshi\",\n    \"surname\": \"Koshiba\",\n    \"motivation\": \"for pioneering contributions to astrophysics, in particular for the detection of cosmic neutrinos\",\n    \"share\": \"4\",\n    \"category\": \"physics\",\n    \"year\": \"2002\"\n  },\n  {\n    \"id\": \"755\",\n    \"firstname\": \"Riccardo\",\n    \"surname\": \"Giacconi\",\n    \"motivation\": \"for pioneering contributions to astrophysics, which have led to the discovery of cosmic X-ray sources\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"2002\"\n  },\n  {\n    \"id\": \"750\",\n    \"firstname\": \"Sydney\",\n    \"surname\": \"Brenner\",\n    \"motivation\": \"for their discoveries concerning genetic regulation of organ development and programmed cell death\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"2002\"\n  },\n  {\n    \"id\": \"751\",\n    \"firstname\": \"H. Robert\",\n    \"surname\": \"Horvitz\",\n    \"motivation\": \"for their discoveries concerning genetic regulation of organ development and programmed cell death\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"2002\"\n  },\n  {\n    \"id\": \"752\",\n    \"firstname\": \"John E.\",\n    \"surname\": \"Sulston\",\n    \"motivation\": \"for their discoveries concerning genetic regulation of organ development and programmed cell death\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"2002\"\n  },\n  {\n    \"id\": \"741\",\n    \"firstname\": \"William\",\n    \"surname\": \"Knowles\",\n    \"motivation\": \"for their work on chirally catalysed hydrogenation reactions\",\n    \"share\": \"4\",\n    \"category\": \"chemistry\",\n    \"year\": \"2001\"\n  },\n  {\n    \"id\": \"742\",\n    \"firstname\": \"Ryoji\",\n    \"surname\": \"Noyori\",\n    \"motivation\": \"for their work on chirally catalysed hydrogenation reactions\",\n    \"share\": \"4\",\n    \"category\": \"chemistry\",\n    \"year\": \"2001\"\n  },\n  {\n    \"id\": \"743\",\n    \"firstname\": \"Barry\",\n    \"surname\": \"Sharpless\",\n    \"motivation\": \"for his work on chirally catalysed oxidation reactions\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"2001\"\n  },\n  {\n    \"id\": \"744\",\n    \"firstname\": \"George A.\",\n    \"surname\": \"Akerlof\",\n    \"motivation\": \"for their analyses of markets with asymmetric information\",\n    \"share\": \"3\",\n    \"category\": \"economics\",\n    \"year\": \"2001\"\n  },\n  {\n    \"id\": \"745\",\n    \"firstname\": \"A. Michael\",\n    \"surname\": \"Spence\",\n    \"motivation\": \"for their analyses of markets with asymmetric information\",\n    \"share\": \"3\",\n    \"category\": \"economics\",\n    \"year\": \"2001\"\n  },\n  {\n    \"id\": \"746\",\n    \"firstname\": \"Joseph E.\",\n    \"surname\": \"Stiglitz\",\n    \"motivation\": \"for their analyses of markets with asymmetric information\",\n    \"share\": \"3\",\n    \"category\": \"economics\",\n    \"year\": \"2001\"\n  },\n  {\n    \"id\": \"747\",\n    \"firstname\": \"V. S.\",\n    \"surname\": \"Naipaul\",\n    \"motivation\": \"for having united perceptive narrative and incorruptible scrutiny in works that compel us to see the presence of suppressed histories\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"2001\"\n  },\n  {\n    \"id\": \"748\",\n    \"motivation\": \"for their work for a better organized and more peaceful world\",\n    \"share\": \"2\",\n    \"firstname\": \"United Nations\",\n    \"category\": \"peace\",\n    \"year\": \"2001\"\n  },\n  {\n    \"id\": \"749\",\n    \"firstname\": \"Kofi\",\n    \"surname\": \"Annan\",\n    \"motivation\": \"for their work for a better organized and more peaceful world\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"2001\"\n  },\n  {\n    \"id\": \"738\",\n    \"firstname\": \"Eric\",\n    \"surname\": \"Cornell\",\n    \"motivation\": \"for the achievement of Bose-Einstein condensation in dilute gases of alkali atoms, and for early fundamental studies of the properties of the condensates\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"2001\"\n  },\n  {\n    \"id\": \"739\",\n    \"firstname\": \"Wolfgang\",\n    \"surname\": \"Ketterle\",\n    \"motivation\": \"for the achievement of Bose-Einstein condensation in dilute gases of alkali atoms, and for early fundamental studies of the properties of the condensates\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"2001\"\n  },\n  {\n    \"id\": \"740\",\n    \"firstname\": \"Carl\",\n    \"surname\": \"Wieman\",\n    \"motivation\": \"for the achievement of Bose-Einstein condensation in dilute gases of alkali atoms, and for early fundamental studies of the properties of the condensates\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"2001\"\n  },\n  {\n    \"id\": \"737\",\n    \"firstname\": \"Sir Paul\",\n    \"surname\": \"Nurse\",\n    \"motivation\": \"for their discoveries of key regulators of the cell cycle\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"2001\"\n  },\n  {\n    \"id\": \"735\",\n    \"firstname\": \"Leland\",\n    \"surname\": \"Hartwell\",\n    \"motivation\": \"for their discoveries of key regulators of the cell cycle\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"2001\"\n  },\n  {\n    \"id\": \"736\",\n    \"firstname\": \"Tim\",\n    \"surname\": \"Hunt\",\n    \"motivation\": \"for their discoveries of key regulators of the cell cycle\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"2001\"\n  },\n  {\n    \"id\": \"729\",\n    \"firstname\": \"Alan\",\n    \"surname\": \"Heeger\",\n    \"motivation\": \"for the discovery and development of conductive polymers\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"2000\"\n  },\n  {\n    \"id\": \"730\",\n    \"firstname\": \"Alan\",\n    \"surname\": \"MacDiarmid\",\n    \"motivation\": \"for the discovery and development of conductive polymers\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"2000\"\n  },\n  {\n    \"id\": \"731\",\n    \"firstname\": \"Hideki\",\n    \"surname\": \"Shirakawa\",\n    \"motivation\": \"for the discovery and development of conductive polymers\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"2000\"\n  },\n  {\n    \"id\": \"732\",\n    \"firstname\": \"James J.\",\n    \"surname\": \"Heckman\",\n    \"motivation\": \"for his development of theory and methods for analyzing selective samples\",\n    \"share\": \"2\",\n    \"category\": \"economics\",\n    \"year\": \"2000\"\n  },\n  {\n    \"id\": \"733\",\n    \"firstname\": \"Daniel L.\",\n    \"surname\": \"McFadden\",\n    \"motivation\": \"for his development of theory and methods for analyzing discrete choice\",\n    \"share\": \"2\",\n    \"category\": \"economics\",\n    \"year\": \"2000\"\n  },\n  {\n    \"id\": \"734\",\n    \"firstname\": \"Xingjian\",\n    \"surname\": \"Gao\",\n    \"motivation\": \"for an œuvre of universal validity, bitter insights and linguistic ingenuity, which has opened new paths for the Chinese novel and drama\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"2000\"\n  },\n  {\n    \"id\": \"725\",\n    \"firstname\": \"Kim\",\n    \"surname\": \"Dae-jung\",\n    \"motivation\": \"for his work for democracy and human rights in South Korea and in East Asia in general, and for peace and reconciliation with North Korea in particular\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"2000\"\n  },\n  {\n    \"id\": \"726\",\n    \"firstname\": \"Zhores\",\n    \"surname\": \"Alferov\",\n    \"motivation\": \"for developing semiconductor heterostructures used in high-speed- and opto-electronics\",\n    \"share\": \"4\",\n    \"category\": \"physics\",\n    \"year\": \"2000\"\n  },\n  {\n    \"id\": \"727\",\n    \"firstname\": \"Herbert\",\n    \"surname\": \"Kroemer\",\n    \"motivation\": \"for developing semiconductor heterostructures used in high-speed- and opto-electronics\",\n    \"share\": \"4\",\n    \"category\": \"physics\",\n    \"year\": \"2000\"\n  },\n  {\n    \"id\": \"728\",\n    \"firstname\": \"Jack\",\n    \"surname\": \"Kilby\",\n    \"motivation\": \"for his part in the invention of the integrated circuit\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"2000\"\n  },\n  {\n    \"id\": \"722\",\n    \"firstname\": \"Arvid\",\n    \"surname\": \"Carlsson\",\n    \"motivation\": \"for their discoveries concerning signal transduction in the nervous system\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"2000\"\n  },\n  {\n    \"id\": \"723\",\n    \"firstname\": \"Paul\",\n    \"surname\": \"Greengard\",\n    \"motivation\": \"for their discoveries concerning signal transduction in the nervous system\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"2000\"\n  },\n  {\n    \"id\": \"724\",\n    \"firstname\": \"Eric\",\n    \"surname\": \"Kandel\",\n    \"motivation\": \"for their discoveries concerning signal transduction in the nervous system\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"2000\"\n  },\n  {\n    \"id\": \"292\",\n    \"firstname\": \"Ahmed\",\n    \"surname\": \"Zewail\",\n    \"motivation\": \"for his studies of the transition states of chemical reactions using femtosecond spectroscopy\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1999\"\n  },\n  {\n    \"id\": \"720\",\n    \"firstname\": \"Robert\",\n    \"surname\": \"Mundell\",\n    \"motivation\": \"for his analysis of monetary and fiscal policy under different exchange rate regimes and his analysis of optimum currency areas\",\n    \"share\": \"1\",\n    \"category\": \"economics\",\n    \"year\": \"1999\"\n  },\n  {\n    \"id\": \"676\",\n    \"firstname\": \"Günter\",\n    \"surname\": \"Grass\",\n    \"motivation\": \"whose frolicsome black fables portray the forgotten face of history\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1999\"\n  },\n  {\n    \"id\": \"568\",\n    \"motivation\": \"in recognition of the organisation's pioneering humanitarian work on several continents\",\n    \"share\": \"1\",\n    \"firstname\": \"Doctors Without Borders\",\n    \"category\": \"peace\",\n    \"year\": \"1999\"\n  },\n  {\n    \"id\": \"158\",\n    \"firstname\": \"Gerardus\",\n    \"surname\": \"'t Hooft\",\n    \"motivation\": \"for elucidating the quantum structure of electroweak interactions in physics\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1999\"\n  },\n  {\n    \"id\": \"159\",\n    \"firstname\": \"Martinus J.G.\",\n    \"surname\": \"Veltman\",\n    \"motivation\": \"for elucidating the quantum structure of electroweak interactions in physics\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1999\"\n  },\n  {\n    \"id\": \"461\",\n    \"firstname\": \"Günter\",\n    \"surname\": \"Blobel\",\n    \"motivation\": \"for the discovery that proteins have intrinsic signals that govern their transport and localization in the cell\",\n    \"share\": \"1\",\n    \"category\": \"medicine\",\n    \"year\": \"1999\"\n  },\n  {\n    \"id\": \"290\",\n    \"firstname\": \"Walter\",\n    \"surname\": \"Kohn\",\n    \"motivation\": \"for his development of the density-functional theory\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"1998\"\n  },\n  {\n    \"id\": \"291\",\n    \"firstname\": \"John\",\n    \"surname\": \"Pople\",\n    \"motivation\": \"for his development of computational methods in quantum chemistry\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"1998\"\n  },\n  {\n    \"id\": \"719\",\n    \"firstname\": \"Amartya\",\n    \"surname\": \"Sen\",\n    \"motivation\": \"for his contributions to welfare economics\",\n    \"share\": \"1\",\n    \"category\": \"economics\",\n    \"year\": \"1998\"\n  },\n  {\n    \"id\": \"675\",\n    \"firstname\": \"José\",\n    \"surname\": \"Saramago\",\n    \"motivation\": \"who with parables sustained by imagination, compassion and irony continually enables us once again to apprehend an elusory reality\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1998\"\n  },\n  {\n    \"id\": \"566\",\n    \"firstname\": \"John\",\n    \"surname\": \"Hume\",\n    \"motivation\": \"for their efforts to find a peaceful solution to the conflict in Northern Ireland\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"1998\"\n  },\n  {\n    \"id\": \"567\",\n    \"firstname\": \"David\",\n    \"surname\": \"Trimble\",\n    \"motivation\": \"for their efforts to find a peaceful solution to the conflict in Northern Ireland\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"1998\"\n  },\n  {\n    \"id\": \"155\",\n    \"firstname\": \"Robert B.\",\n    \"surname\": \"Laughlin\",\n    \"motivation\": \"for their discovery of a new form of quantum fluid with fractionally charged excitations\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"1998\"\n  },\n  {\n    \"id\": \"156\",\n    \"firstname\": \"Horst L.\",\n    \"surname\": \"Störmer\",\n    \"motivation\": \"for their discovery of a new form of quantum fluid with fractionally charged excitations\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"1998\"\n  },\n  {\n    \"id\": \"157\",\n    \"firstname\": \"Daniel C.\",\n    \"surname\": \"Tsui\",\n    \"motivation\": \"for their discovery of a new form of quantum fluid with fractionally charged excitations\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"1998\"\n  },\n  {\n    \"id\": \"458\",\n    \"firstname\": \"Robert F.\",\n    \"surname\": \"Furchgott\",\n    \"motivation\": \"for their discoveries concerning nitric oxide as a signalling molecule in the cardiovascular system\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1998\"\n  },\n  {\n    \"id\": \"459\",\n    \"firstname\": \"Louis J.\",\n    \"surname\": \"Ignarro\",\n    \"motivation\": \"for their discoveries concerning nitric oxide as a signalling molecule in the cardiovascular system\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1998\"\n  },\n  {\n    \"id\": \"460\",\n    \"firstname\": \"Ferid\",\n    \"surname\": \"Murad\",\n    \"motivation\": \"for their discoveries concerning nitric oxide as a signalling molecule in the cardiovascular system\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1998\"\n  },\n  {\n    \"id\": \"287\",\n    \"firstname\": \"Paul D.\",\n    \"surname\": \"Boyer\",\n    \"motivation\": \"for their elucidation of the enzymatic mechanism underlying the synthesis of adenosine triphosphate (ATP)\",\n    \"share\": \"4\",\n    \"category\": \"chemistry\",\n    \"year\": \"1997\"\n  },\n  {\n    \"id\": \"288\",\n    \"firstname\": \"John E.\",\n    \"surname\": \"Walker\",\n    \"motivation\": \"for their elucidation of the enzymatic mechanism underlying the synthesis of adenosine triphosphate (ATP)\",\n    \"share\": \"4\",\n    \"category\": \"chemistry\",\n    \"year\": \"1997\"\n  },\n  {\n    \"id\": \"289\",\n    \"firstname\": \"Jens C.\",\n    \"surname\": \"Skou\",\n    \"motivation\": \"for the first discovery of an ion-transporting enzyme, Na+, K+ -ATPase\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"1997\"\n  },\n  {\n    \"id\": \"717\",\n    \"firstname\": \"Robert C.\",\n    \"surname\": \"Merton\",\n    \"motivation\": \"for a new method to determine the value of derivatives\",\n    \"share\": \"2\",\n    \"category\": \"economics\",\n    \"year\": \"1997\"\n  },\n  {\n    \"id\": \"718\",\n    \"firstname\": \"Myron\",\n    \"surname\": \"Scholes\",\n    \"motivation\": \"for a new method to determine the value of derivatives\",\n    \"share\": \"2\",\n    \"category\": \"economics\",\n    \"year\": \"1997\"\n  },\n  {\n    \"id\": \"674\",\n    \"firstname\": \"Dario\",\n    \"surname\": \"Fo\",\n    \"motivation\": \"who emulates the jesters of the Middle Ages in scourging authority and upholding the dignity of the downtrodden\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1997\"\n  },\n  {\n    \"id\": \"564\",\n    \"motivation\": \"for their work for the banning and clearing of anti-personnel mines\",\n    \"share\": \"2\",\n    \"firstname\": \"International Campaign to Ban Landmines\",\n    \"category\": \"peace\",\n    \"year\": \"1997\"\n  },\n  {\n    \"id\": \"565\",\n    \"firstname\": \"Jody\",\n    \"surname\": \"Williams\",\n    \"motivation\": \"for their work for the banning and clearing of anti-personnel mines\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"1997\"\n  },\n  {\n    \"id\": \"152\",\n    \"firstname\": \"Steven\",\n    \"surname\": \"Chu\",\n    \"motivation\": \"for development of methods to cool and trap atoms with laser light\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"1997\"\n  },\n  {\n    \"id\": \"153\",\n    \"firstname\": \"Claude\",\n    \"surname\": \"Cohen-Tannoudji\",\n    \"motivation\": \"for development of methods to cool and trap atoms with laser light\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"1997\"\n  },\n  {\n    \"id\": \"154\",\n    \"firstname\": \"William D.\",\n    \"surname\": \"Phillips\",\n    \"motivation\": \"for development of methods to cool and trap atoms with laser light\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"1997\"\n  },\n  {\n    \"id\": \"457\",\n    \"firstname\": \"Stanley B.\",\n    \"surname\": \"Prusiner\",\n    \"motivation\": \"for his discovery of Prions - a new biological principle of infection\",\n    \"share\": \"1\",\n    \"category\": \"medicine\",\n    \"year\": \"1997\"\n  },\n  {\n    \"id\": \"284\",\n    \"firstname\": \"Robert F.\",\n    \"surname\": \"Curl Jr.\",\n    \"motivation\": \"for their discovery of fullerenes\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"1996\"\n  },\n  {\n    \"id\": \"285\",\n    \"firstname\": \"Sir Harold\",\n    \"surname\": \"Kroto\",\n    \"motivation\": \"for their discovery of fullerenes\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"1996\"\n  },\n  {\n    \"id\": \"286\",\n    \"firstname\": \"Richard E.\",\n    \"surname\": \"Smalley\",\n    \"motivation\": \"for their discovery of fullerenes\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"1996\"\n  },\n  {\n    \"id\": \"715\",\n    \"firstname\": \"James A.\",\n    \"surname\": \"Mirrlees\",\n    \"motivation\": \"for their fundamental contributions to the economic theory of incentives under asymmetric information\",\n    \"share\": \"2\",\n    \"category\": \"economics\",\n    \"year\": \"1996\"\n  },\n  {\n    \"id\": \"716\",\n    \"firstname\": \"William\",\n    \"surname\": \"Vickrey\",\n    \"motivation\": \"for their fundamental contributions to the economic theory of incentives under asymmetric information\",\n    \"share\": \"2\",\n    \"category\": \"economics\",\n    \"year\": \"1996\"\n  },\n  {\n    \"id\": \"673\",\n    \"firstname\": \"Wisława\",\n    \"surname\": \"Szymborska\",\n    \"motivation\": \"for poetry that with ironic precision allows the historical and biological context to come to light in fragments of human reality\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1996\"\n  },\n  {\n    \"id\": \"562\",\n    \"firstname\": \"Carlos Filipe Ximenes\",\n    \"surname\": \"Belo\",\n    \"motivation\": \"for their work towards a just and peaceful solution to the conflict in East Timor\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"1996\"\n  },\n  {\n    \"id\": \"563\",\n    \"firstname\": \"José\",\n    \"surname\": \"Ramos-Horta\",\n    \"motivation\": \"for their work towards a just and peaceful solution to the conflict in East Timor\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"1996\"\n  },\n  {\n    \"id\": \"149\",\n    \"firstname\": \"David M.\",\n    \"surname\": \"Lee\",\n    \"motivation\": \"for their discovery of superfluidity in helium-3\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"1996\"\n  },\n  {\n    \"id\": \"150\",\n    \"firstname\": \"Douglas D.\",\n    \"surname\": \"Osheroff\",\n    \"motivation\": \"for their discovery of superfluidity in helium-3\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"1996\"\n  },\n  {\n    \"id\": \"151\",\n    \"firstname\": \"Robert C.\",\n    \"surname\": \"Richardson\",\n    \"motivation\": \"for their discovery of superfluidity in helium-3\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"1996\"\n  },\n  {\n    \"id\": \"455\",\n    \"firstname\": \"Peter C.\",\n    \"surname\": \"Doherty\",\n    \"motivation\": \"for their discoveries concerning the specificity of the cell mediated immune defence\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1996\"\n  },\n  {\n    \"id\": \"456\",\n    \"firstname\": \"Rolf M.\",\n    \"surname\": \"Zinkernagel\",\n    \"motivation\": \"for their discoveries concerning the specificity of the cell mediated immune defence\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1996\"\n  },\n  {\n    \"id\": \"281\",\n    \"firstname\": \"Paul J.\",\n    \"surname\": \"Crutzen\",\n    \"motivation\": \"for their work in atmospheric chemistry, particularly concerning the formation and decomposition of ozone\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"1995\"\n  },\n  {\n    \"id\": \"282\",\n    \"firstname\": \"Mario J.\",\n    \"surname\": \"Molina\",\n    \"motivation\": \"for their work in atmospheric chemistry, particularly concerning the formation and decomposition of ozone\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"1995\"\n  },\n  {\n    \"id\": \"283\",\n    \"firstname\": \"F. Sherwood\",\n    \"surname\": \"Rowland\",\n    \"motivation\": \"for their work in atmospheric chemistry, particularly concerning the formation and decomposition of ozone\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"1995\"\n  },\n  {\n    \"id\": \"714\",\n    \"firstname\": \"Robert E.\",\n    \"surname\": \"Lucas Jr.\",\n    \"motivation\": \"for having developed and applied the hypothesis of rational expectations, and thereby having transformed macroeconomic analysis and deepened our understanding of economic policy\",\n    \"share\": \"1\",\n    \"category\": \"economics\",\n    \"year\": \"1995\"\n  },\n  {\n    \"id\": \"672\",\n    \"firstname\": \"Seamus\",\n    \"surname\": \"Heaney\",\n    \"motivation\": \"for works of lyrical beauty and ethical depth, which exalt everyday miracles and the living past\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1995\"\n  },\n  {\n    \"id\": \"560\",\n    \"firstname\": \"Joseph\",\n    \"surname\": \"Rotblat\",\n    \"motivation\": \"for their efforts to diminish the part played by nuclear arms in international politics and, in the longer run, to eliminate such arms\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"1995\"\n  },\n  {\n    \"id\": \"561\",\n    \"motivation\": \"for their efforts to diminish the part played by nuclear arms in international politics and, in the longer run, to eliminate such arms\",\n    \"share\": \"2\",\n    \"firstname\": \"Pugwash Conferences on Science and World Affairs\",\n    \"category\": \"peace\",\n    \"year\": \"1995\"\n  },\n  {\n    \"id\": \"147\",\n    \"firstname\": \"Martin L.\",\n    \"surname\": \"Perl\",\n    \"motivation\": \"for the discovery of the tau lepton\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1995\"\n  },\n  {\n    \"id\": \"148\",\n    \"firstname\": \"Frederick\",\n    \"surname\": \"Reines\",\n    \"motivation\": \"for the detection of the neutrino\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1995\"\n  },\n  {\n    \"id\": \"452\",\n    \"firstname\": \"Edward B.\",\n    \"surname\": \"Lewis\",\n    \"motivation\": \"for their discoveries concerning the genetic control of early embryonic development\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1995\"\n  },\n  {\n    \"id\": \"453\",\n    \"firstname\": \"Christiane\",\n    \"surname\": \"Nüsslein-Volhard\",\n    \"motivation\": \"for their discoveries concerning the genetic control of early embryonic development\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1995\"\n  },\n  {\n    \"id\": \"454\",\n    \"firstname\": \"Eric F.\",\n    \"surname\": \"Wieschaus\",\n    \"motivation\": \"for their discoveries concerning the genetic control of early embryonic development\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1995\"\n  },\n  {\n    \"id\": \"280\",\n    \"firstname\": \"George A.\",\n    \"surname\": \"Olah\",\n    \"motivation\": \"for his contribution to carbocation chemistry\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1994\"\n  },\n  {\n    \"id\": \"711\",\n    \"firstname\": \"John C.\",\n    \"surname\": \"Harsanyi\",\n    \"motivation\": \"for their pioneering analysis of equilibria in the theory of non-cooperative games\",\n    \"share\": \"3\",\n    \"category\": \"economics\",\n    \"year\": \"1994\"\n  },\n  {\n    \"id\": \"712\",\n    \"firstname\": \"John F.\",\n    \"surname\": \"Nash Jr.\",\n    \"motivation\": \"for their pioneering analysis of equilibria in the theory of non-cooperative games\",\n    \"share\": \"3\",\n    \"category\": \"economics\",\n    \"year\": \"1994\"\n  },\n  {\n    \"id\": \"713\",\n    \"firstname\": \"Reinhard\",\n    \"surname\": \"Selten\",\n    \"motivation\": \"for their pioneering analysis of equilibria in the theory of non-cooperative games\",\n    \"share\": \"3\",\n    \"category\": \"economics\",\n    \"year\": \"1994\"\n  },\n  {\n    \"id\": \"671\",\n    \"firstname\": \"Kenzaburo\",\n    \"surname\": \"Oe\",\n    \"motivation\": \"who with poetic force creates an imagined world, where life and myth condense to form a disconcerting picture of the human predicament today\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1994\"\n  },\n  {\n    \"id\": \"557\",\n    \"firstname\": \"Yasser\",\n    \"surname\": \"Arafat\",\n    \"motivation\": \"for their efforts to create peace in the Middle East\",\n    \"share\": \"3\",\n    \"category\": \"peace\",\n    \"year\": \"1994\"\n  },\n  {\n    \"id\": \"558\",\n    \"firstname\": \"Shimon\",\n    \"surname\": \"Peres\",\n    \"motivation\": \"for their efforts to create peace in the Middle East\",\n    \"share\": \"3\",\n    \"category\": \"peace\",\n    \"year\": \"1994\"\n  },\n  {\n    \"id\": \"559\",\n    \"firstname\": \"Yitzhak\",\n    \"surname\": \"Rabin\",\n    \"motivation\": \"for their efforts to create peace in the Middle East\",\n    \"share\": \"3\",\n    \"category\": \"peace\",\n    \"year\": \"1994\"\n  },\n  {\n    \"id\": \"145\",\n    \"firstname\": \"Bertram N.\",\n    \"surname\": \"Brockhouse\",\n    \"motivation\": \"for the development of neutron spectroscopy\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1994\"\n  },\n  {\n    \"id\": \"146\",\n    \"firstname\": \"Clifford G.\",\n    \"surname\": \"Shull\",\n    \"motivation\": \"for the development of the neutron diffraction technique\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1994\"\n  },\n  {\n    \"id\": \"450\",\n    \"firstname\": \"Alfred G.\",\n    \"surname\": \"Gilman\",\n    \"motivation\": \"for their discovery of G-proteins and the role of these proteins in signal transduction in cells\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1994\"\n  },\n  {\n    \"id\": \"451\",\n    \"firstname\": \"Martin\",\n    \"surname\": \"Rodbell\",\n    \"motivation\": \"for their discovery of G-proteins and the role of these proteins in signal transduction in cells\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1994\"\n  },\n  {\n    \"id\": \"278\",\n    \"firstname\": \"Kary B.\",\n    \"surname\": \"Mullis\",\n    \"motivation\": \"for his invention of the polymerase chain reaction (PCR) method\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"1993\"\n  },\n  {\n    \"id\": \"279\",\n    \"firstname\": \"Michael\",\n    \"surname\": \"Smith\",\n    \"motivation\": \"for his fundamental contributions to the establishment of oligonucleotide-based, site-directed mutagenesis and its development for protein studies\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"1993\"\n  },\n  {\n    \"id\": \"709\",\n    \"firstname\": \"Robert W.\",\n    \"surname\": \"Fogel\",\n    \"motivation\": \"for having renewed research in economic history by applying economic theory and quantitative methods in order to explain economic and institutional change\",\n    \"share\": \"2\",\n    \"category\": \"economics\",\n    \"year\": \"1993\"\n  },\n  {\n    \"id\": \"710\",\n    \"firstname\": \"Douglass C.\",\n    \"surname\": \"North\",\n    \"motivation\": \"for having renewed research in economic history by applying economic theory and quantitative methods in order to explain economic and institutional change\",\n    \"share\": \"2\",\n    \"category\": \"economics\",\n    \"year\": \"1993\"\n  },\n  {\n    \"id\": \"670\",\n    \"firstname\": \"Toni\",\n    \"surname\": \"Morrison\",\n    \"motivation\": \"who in novels characterized by visionary force and poetic import, gives life to an essential aspect of American reality\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1993\"\n  },\n  {\n    \"id\": \"555\",\n    \"firstname\": \"Nelson\",\n    \"surname\": \"Mandela\",\n    \"motivation\": \"for their work for the peaceful termination of the apartheid regime, and for laying the foundations for a new democratic South Africa\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"1993\"\n  },\n  {\n    \"id\": \"556\",\n    \"firstname\": \"F.W.\",\n    \"surname\": \"de Klerk\",\n    \"motivation\": \"for their work for the peaceful termination of the apartheid regime, and for laying the foundations for a new democratic South Africa\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"1993\"\n  },\n  {\n    \"id\": \"143\",\n    \"firstname\": \"Russell A.\",\n    \"surname\": \"Hulse\",\n    \"motivation\": \"for the discovery of a new type of pulsar, a discovery that has opened up new possibilities for the study of gravitation\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1993\"\n  },\n  {\n    \"id\": \"144\",\n    \"firstname\": \"Joseph H.\",\n    \"surname\": \"Taylor Jr.\",\n    \"motivation\": \"for the discovery of a new type of pulsar, a discovery that has opened up new possibilities for the study of gravitation\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1993\"\n  },\n  {\n    \"id\": \"448\",\n    \"firstname\": \"Richard J.\",\n    \"surname\": \"Roberts\",\n    \"motivation\": \"for their discoveries of split genes\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1993\"\n  },\n  {\n    \"id\": \"449\",\n    \"firstname\": \"Phillip A.\",\n    \"surname\": \"Sharp\",\n    \"motivation\": \"for their discoveries of split genes\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1993\"\n  },\n  {\n    \"id\": \"277\",\n    \"firstname\": \"Rudolph A.\",\n    \"surname\": \"Marcus\",\n    \"motivation\": \"for his contributions to the theory of electron transfer reactions in chemical systems\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1992\"\n  },\n  {\n    \"id\": \"708\",\n    \"firstname\": \"Gary\",\n    \"surname\": \"Becker\",\n    \"motivation\": \"for having extended the domain of microeconomic analysis to a wide range of human behaviour and interaction, including nonmarket behaviour\",\n    \"share\": \"1\",\n    \"category\": \"economics\",\n    \"year\": \"1992\"\n  },\n  {\n    \"id\": \"669\",\n    \"firstname\": \"Derek\",\n    \"surname\": \"Walcott\",\n    \"motivation\": \"for a poetic oeuvre of great luminosity, sustained by a historical vision, the outcome of a multicultural commitment\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1992\"\n  },\n  {\n    \"id\": \"554\",\n    \"firstname\": \"Rigoberta\",\n    \"surname\": \"Menchú Tum\",\n    \"motivation\": \"for her struggle for social justice and ethno-cultural reconciliation based on respect for the rights of indigenous peoples\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"1992\"\n  },\n  {\n    \"id\": \"142\",\n    \"firstname\": \"Georges\",\n    \"surname\": \"Charpak\",\n    \"motivation\": \"for his invention and development of particle detectors, in particular the multiwire proportional chamber\",\n    \"share\": \"1\",\n    \"category\": \"physics\",\n    \"year\": \"1992\"\n  },\n  {\n    \"id\": \"446\",\n    \"firstname\": \"Edmond H.\",\n    \"surname\": \"Fischer\",\n    \"motivation\": \"for their discoveries concerning reversible protein phosphorylation as a biological regulatory mechanism\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1992\"\n  },\n  {\n    \"id\": \"447\",\n    \"firstname\": \"Edwin G.\",\n    \"surname\": \"Krebs\",\n    \"motivation\": \"for their discoveries concerning reversible protein phosphorylation as a biological regulatory mechanism\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1992\"\n  },\n  {\n    \"id\": \"276\",\n    \"firstname\": \"Richard R.\",\n    \"surname\": \"Ernst\",\n    \"motivation\": \"for his contributions to the development of the methodology of high resolution nuclear magnetic resonance (NMR) spectroscopy\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1991\"\n  },\n  {\n    \"id\": \"707\",\n    \"firstname\": \"Ronald H.\",\n    \"surname\": \"Coase\",\n    \"motivation\": \"for his discovery and clarification of the significance of transaction costs and property rights for the institutional structure and functioning of the economy\",\n    \"share\": \"1\",\n    \"category\": \"economics\",\n    \"year\": \"1991\"\n  },\n  {\n    \"id\": \"668\",\n    \"firstname\": \"Nadine\",\n    \"surname\": \"Gordimer\",\n    \"motivation\": \"who through her magnificent epic writing has - in the words of Alfred Nobel - been of very great benefit to humanity\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1991\"\n  },\n  {\n    \"id\": \"553\",\n    \"firstname\": \"Aung San Suu Kyi\",\n    \"motivation\": \"for her non-violent struggle for democracy and human rights\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"1991\"\n  },\n  {\n    \"id\": \"141\",\n    \"firstname\": \"Pierre-Gilles\",\n    \"surname\": \"de Gennes\",\n    \"motivation\": \"for discovering that methods developed for studying order phenomena in simple systems can be generalized to more complex forms of matter, in particular to liquid crystals and polymers\",\n    \"share\": \"1\",\n    \"category\": \"physics\",\n    \"year\": \"1991\"\n  },\n  {\n    \"id\": \"444\",\n    \"firstname\": \"Erwin\",\n    \"surname\": \"Neher\",\n    \"motivation\": \"for their discoveries concerning the function of single ion channels in cells\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1991\"\n  },\n  {\n    \"id\": \"445\",\n    \"firstname\": \"Bert\",\n    \"surname\": \"Sakmann\",\n    \"motivation\": \"for their discoveries concerning the function of single ion channels in cells\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1991\"\n  },\n  {\n    \"id\": \"275\",\n    \"firstname\": \"Elias James\",\n    \"surname\": \"Corey\",\n    \"motivation\": \"for his development of the theory and methodology of organic synthesis\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1990\"\n  },\n  {\n    \"id\": \"704\",\n    \"firstname\": \"Harry M.\",\n    \"surname\": \"Markowitz\",\n    \"motivation\": \"for their pioneering work in the theory of financial economics\",\n    \"share\": \"3\",\n    \"category\": \"economics\",\n    \"year\": \"1990\"\n  },\n  {\n    \"id\": \"705\",\n    \"firstname\": \"Merton H.\",\n    \"surname\": \"Miller\",\n    \"motivation\": \"for their pioneering work in the theory of financial economics\",\n    \"share\": \"3\",\n    \"category\": \"economics\",\n    \"year\": \"1990\"\n  },\n  {\n    \"id\": \"706\",\n    \"firstname\": \"William F.\",\n    \"surname\": \"Sharpe\",\n    \"motivation\": \"for their pioneering work in the theory of financial economics\",\n    \"share\": \"3\",\n    \"category\": \"economics\",\n    \"year\": \"1990\"\n  },\n  {\n    \"id\": \"667\",\n    \"firstname\": \"Octavio\",\n    \"surname\": \"Paz\",\n    \"motivation\": \"for impassioned writing with wide horizons, characterized by sensuous intelligence and humanistic integrity\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1990\"\n  },\n  {\n    \"id\": \"552\",\n    \"firstname\": \"Mikhail\",\n    \"surname\": \"Gorbachev\",\n    \"motivation\": \"for the leading role he played in the radical changes in East-West relations\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"1990\"\n  },\n  {\n    \"id\": \"138\",\n    \"firstname\": \"Jerome I.\",\n    \"surname\": \"Friedman\",\n    \"motivation\": \"for their pioneering investigations concerning deep inelastic scattering of electrons on protons and bound neutrons, which have been of essential importance for the development of the quark model in particle physics\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"1990\"\n  },\n  {\n    \"id\": \"139\",\n    \"firstname\": \"Henry W.\",\n    \"surname\": \"Kendall\",\n    \"motivation\": \"for their pioneering investigations concerning deep inelastic scattering of electrons on protons and bound neutrons, which have been of essential importance for the development of the quark model in particle physics\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"1990\"\n  },\n  {\n    \"id\": \"140\",\n    \"firstname\": \"Richard E.\",\n    \"surname\": \"Taylor\",\n    \"motivation\": \"for their pioneering investigations concerning deep inelastic scattering of electrons on protons and bound neutrons, which have been of essential importance for the development of the quark model in particle physics\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"1990\"\n  },\n  {\n    \"id\": \"442\",\n    \"firstname\": \"Joseph E.\",\n    \"surname\": \"Murray\",\n    \"motivation\": \"for their discoveries concerning organ and cell transplantation in the treatment of human disease\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1990\"\n  },\n  {\n    \"id\": \"443\",\n    \"firstname\": \"E. Donnall\",\n    \"surname\": \"Thomas\",\n    \"motivation\": \"for their discoveries concerning organ and cell transplantation in the treatment of human disease\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1990\"\n  },\n  {\n    \"id\": \"273\",\n    \"firstname\": \"Sidney\",\n    \"surname\": \"Altman\",\n    \"motivation\": \"for their discovery of catalytic properties of RNA\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"1989\"\n  },\n  {\n    \"id\": \"274\",\n    \"firstname\": \"Thomas R.\",\n    \"surname\": \"Cech\",\n    \"motivation\": \"for their discovery of catalytic properties of RNA\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"1989\"\n  },\n  {\n    \"id\": \"703\",\n    \"firstname\": \"Trygve\",\n    \"surname\": \"Haavelmo\",\n    \"motivation\": \"for his clarification of the probability theory foundations of econometrics and his analyses of simultaneous economic structures\",\n    \"share\": \"1\",\n    \"category\": \"economics\",\n    \"year\": \"1989\"\n  },\n  {\n    \"id\": \"666\",\n    \"firstname\": \"Camilo José\",\n    \"surname\": \"Cela\",\n    \"motivation\": \"for a rich and intensive prose, which with restrained compassion forms a challenging vision of man's vulnerability\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1989\"\n  },\n  {\n    \"id\": \"551\",\n    \"firstname\": \"Lhamo\",\n    \"surname\": \"Thondup\",\n    \"motivation\": \"for advocating peaceful solutions based upon tolerance and mutual respect in order to preserve the historical and cultural heritage of his people\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"1989\"\n  },\n  {\n    \"id\": \"135\",\n    \"firstname\": \"Norman F.\",\n    \"surname\": \"Ramsey\",\n    \"motivation\": \"for the invention of the separated oscillatory fields method and its use in the hydrogen maser and other atomic clocks\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1989\"\n  },\n  {\n    \"id\": \"136\",\n    \"firstname\": \"Hans G.\",\n    \"surname\": \"Dehmelt\",\n    \"motivation\": \"for the development of the ion trap technique\",\n    \"share\": \"4\",\n    \"category\": \"physics\",\n    \"year\": \"1989\"\n  },\n  {\n    \"id\": \"137\",\n    \"firstname\": \"Wolfgang\",\n    \"surname\": \"Paul\",\n    \"motivation\": \"for the development of the ion trap technique\",\n    \"share\": \"4\",\n    \"category\": \"physics\",\n    \"year\": \"1989\"\n  },\n  {\n    \"id\": \"440\",\n    \"firstname\": \"J. Michael\",\n    \"surname\": \"Bishop\",\n    \"motivation\": \"for their discovery of the cellular origin of retroviral oncogenes\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1989\"\n  },\n  {\n    \"id\": \"441\",\n    \"firstname\": \"Harold E.\",\n    \"surname\": \"Varmus\",\n    \"motivation\": \"for their discovery of the cellular origin of retroviral oncogenes\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1989\"\n  },\n  {\n    \"id\": \"270\",\n    \"firstname\": \"Johann\",\n    \"surname\": \"Deisenhofer\",\n    \"motivation\": \"for the determination of the three-dimensional structure of a photosynthetic reaction centre\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"1988\"\n  },\n  {\n    \"id\": \"271\",\n    \"firstname\": \"Robert\",\n    \"surname\": \"Huber\",\n    \"motivation\": \"for the determination of the three-dimensional structure of a photosynthetic reaction centre\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"1988\"\n  },\n  {\n    \"id\": \"272\",\n    \"firstname\": \"Hartmut\",\n    \"surname\": \"Michel\",\n    \"motivation\": \"for the determination of the three-dimensional structure of a photosynthetic reaction centre\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"1988\"\n  },\n  {\n    \"id\": \"702\",\n    \"firstname\": \"Maurice\",\n    \"surname\": \"Allais\",\n    \"motivation\": \"for his pioneering contributions to the theory of markets and efficient utilization of resources\",\n    \"share\": \"1\",\n    \"category\": \"economics\",\n    \"year\": \"1988\"\n  },\n  {\n    \"id\": \"665\",\n    \"firstname\": \"Naguib\",\n    \"surname\": \"Mahfouz\",\n    \"motivation\": \"who, through works rich in nuance - now clear-sightedly realistic, now evocatively ambiguous - has formed an Arabian narrative art that applies to all mankind\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1988\"\n  },\n  {\n    \"id\": \"550\",\n    \"motivation\": \"for preventing armed clashes and creating conditions for negotiations\",\n    \"share\": \"1\",\n    \"firstname\": \"United Nations Peacekeeping Forces\",\n    \"category\": \"peace\",\n    \"year\": \"1988\"\n  },\n  {\n    \"id\": \"132\",\n    \"firstname\": \"Leon M.\",\n    \"surname\": \"Lederman\",\n    \"motivation\": \"for the neutrino beam method and the demonstration of the doublet structure of the leptons through the discovery of the muon neutrino\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"1988\"\n  },\n  {\n    \"id\": \"133\",\n    \"firstname\": \"Melvin\",\n    \"surname\": \"Schwartz\",\n    \"motivation\": \"for the neutrino beam method and the demonstration of the doublet structure of the leptons through the discovery of the muon neutrino\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"1988\"\n  },\n  {\n    \"id\": \"134\",\n    \"firstname\": \"Jack\",\n    \"surname\": \"Steinberger\",\n    \"motivation\": \"for the neutrino beam method and the demonstration of the doublet structure of the leptons through the discovery of the muon neutrino\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"1988\"\n  },\n  {\n    \"id\": \"437\",\n    \"firstname\": \"Sir James W.\",\n    \"surname\": \"Black\",\n    \"motivation\": \"for their discoveries of important principles for drug treatment\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1988\"\n  },\n  {\n    \"id\": \"438\",\n    \"firstname\": \"Gertrude B.\",\n    \"surname\": \"Elion\",\n    \"motivation\": \"for their discoveries of important principles for drug treatment\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1988\"\n  },\n  {\n    \"id\": \"439\",\n    \"firstname\": \"George H.\",\n    \"surname\": \"Hitchings\",\n    \"motivation\": \"for their discoveries of important principles for drug treatment\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1988\"\n  },\n  {\n    \"id\": \"267\",\n    \"firstname\": \"Donald J.\",\n    \"surname\": \"Cram\",\n    \"motivation\": \"for their development and use of molecules with structure-specific interactions of high selectivity\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"1987\"\n  },\n  {\n    \"id\": \"268\",\n    \"firstname\": \"Jean-Marie\",\n    \"surname\": \"Lehn\",\n    \"motivation\": \"for their development and use of molecules with structure-specific interactions of high selectivity\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"1987\"\n  },\n  {\n    \"id\": \"269\",\n    \"firstname\": \"Charles J.\",\n    \"surname\": \"Pedersen\",\n    \"motivation\": \"for their development and use of molecules with structure-specific interactions of high selectivity\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"1987\"\n  },\n  {\n    \"id\": \"701\",\n    \"firstname\": \"Robert M.\",\n    \"surname\": \"Solow\",\n    \"motivation\": \"for his contributions to the theory of economic growth\",\n    \"share\": \"1\",\n    \"category\": \"economics\",\n    \"year\": \"1987\"\n  },\n  {\n    \"id\": \"664\",\n    \"firstname\": \"Joseph\",\n    \"surname\": \"Brodsky\",\n    \"motivation\": \"for an all-embracing authorship, imbued with clarity of thought and poetic intensity\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1987\"\n  },\n  {\n    \"id\": \"549\",\n    \"firstname\": \"Oscar\",\n    \"surname\": \"Arias Sánchez\",\n    \"motivation\": \"for his work for lasting peace in Central America\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"1987\"\n  },\n  {\n    \"id\": \"130\",\n    \"firstname\": \"J. Georg\",\n    \"surname\": \"Bednorz\",\n    \"motivation\": \"for their important break-through in the discovery of superconductivity in ceramic materials\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1987\"\n  },\n  {\n    \"id\": \"131\",\n    \"firstname\": \"K. Alex\",\n    \"surname\": \"Müller\",\n    \"motivation\": \"for their important break-through in the discovery of superconductivity in ceramic materials\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1987\"\n  },\n  {\n    \"id\": \"436\",\n    \"firstname\": \"Susumu\",\n    \"surname\": \"Tonegawa\",\n    \"motivation\": \"for his discovery of the genetic principle for generation of antibody diversity\",\n    \"share\": \"1\",\n    \"category\": \"medicine\",\n    \"year\": \"1987\"\n  },\n  {\n    \"id\": \"264\",\n    \"firstname\": \"Dudley R.\",\n    \"surname\": \"Herschbach\",\n    \"motivation\": \"for their contributions concerning the dynamics of chemical elementary processes\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"1986\"\n  },\n  {\n    \"id\": \"265\",\n    \"firstname\": \"Yuan T.\",\n    \"surname\": \"Lee\",\n    \"motivation\": \"for their contributions concerning the dynamics of chemical elementary processes\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"1986\"\n  },\n  {\n    \"id\": \"266\",\n    \"firstname\": \"John C.\",\n    \"surname\": \"Polanyi\",\n    \"motivation\": \"for their contributions concerning the dynamics of chemical elementary processes\",\n    \"share\": \"3\",\n    \"category\": \"chemistry\",\n    \"year\": \"1986\"\n  },\n  {\n    \"id\": \"700\",\n    \"firstname\": \"James M.\",\n    \"surname\": \"Buchanan Jr.\",\n    \"motivation\": \"for his development of the contractual and constitutional bases for the theory of economic and political decision-making\",\n    \"share\": \"1\",\n    \"category\": \"economics\",\n    \"year\": \"1986\"\n  },\n  {\n    \"id\": \"663\",\n    \"firstname\": \"Wole\",\n    \"surname\": \"Soyinka\",\n    \"motivation\": \"who in a wide cultural perspective and with poetic overtones fashions the drama of existence\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1986\"\n  },\n  {\n    \"id\": \"548\",\n    \"firstname\": \"Elie\",\n    \"surname\": \"Wiesel\",\n    \"motivation\": \"for being a messenger to mankind: his message is one of peace, atonement and dignity\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"1986\"\n  },\n  {\n    \"id\": \"127\",\n    \"firstname\": \"Ernst\",\n    \"surname\": \"Ruska\",\n    \"motivation\": \"for his fundamental work in electron optics, and for the design of the first electron microscope\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1986\"\n  },\n  {\n    \"id\": \"128\",\n    \"firstname\": \"Gerd\",\n    \"surname\": \"Binnig\",\n    \"motivation\": \"for their design of the scanning tunneling microscope\",\n    \"share\": \"4\",\n    \"category\": \"physics\",\n    \"year\": \"1986\"\n  },\n  {\n    \"id\": \"129\",\n    \"firstname\": \"Heinrich\",\n    \"surname\": \"Rohrer\",\n    \"motivation\": \"for their design of the scanning tunneling microscope\",\n    \"share\": \"4\",\n    \"category\": \"physics\",\n    \"year\": \"1986\"\n  },\n  {\n    \"id\": \"434\",\n    \"firstname\": \"Stanley\",\n    \"surname\": \"Cohen\",\n    \"motivation\": \"for their discoveries of growth factors\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1986\"\n  },\n  {\n    \"id\": \"435\",\n    \"firstname\": \"Rita\",\n    \"surname\": \"Levi-Montalcini\",\n    \"motivation\": \"for their discoveries of growth factors\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1986\"\n  },\n  {\n    \"id\": \"262\",\n    \"firstname\": \"Herbert A.\",\n    \"surname\": \"Hauptman\",\n    \"motivation\": \"for their outstanding achievements in the development of direct methods for the determination of crystal structures\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"1985\"\n  },\n  {\n    \"id\": \"263\",\n    \"firstname\": \"Jerome\",\n    \"surname\": \"Karle\",\n    \"motivation\": \"for their outstanding achievements in the development of direct methods for the determination of crystal structures\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"1985\"\n  },\n  {\n    \"id\": \"699\",\n    \"firstname\": \"Franco\",\n    \"surname\": \"Modigliani\",\n    \"motivation\": \"for his pioneering analyses of saving and of financial markets\",\n    \"share\": \"1\",\n    \"category\": \"economics\",\n    \"year\": \"1985\"\n  },\n  {\n    \"id\": \"662\",\n    \"firstname\": \"Claude\",\n    \"surname\": \"Simon\",\n    \"motivation\": \"who in his novel combines the poet's and the painter's creativeness with a deepened awareness of time in the depiction of the human condition\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1985\"\n  },\n  {\n    \"id\": \"547\",\n    \"motivation\": \"for spreading authoritative information and by creating awareness of the catastrophic consequences of nuclear war\",\n    \"share\": \"1\",\n    \"firstname\": \"International Physicians for the Prevention of Nuclear War\",\n    \"category\": \"peace\",\n    \"year\": \"1985\"\n  },\n  {\n    \"id\": \"126\",\n    \"firstname\": \"Klaus\",\n    \"surname\": \"von Klitzing\",\n    \"motivation\": \"for the discovery of the quantized Hall effect\",\n    \"share\": \"1\",\n    \"category\": \"physics\",\n    \"year\": \"1985\"\n  },\n  {\n    \"id\": \"432\",\n    \"firstname\": \"Michael S.\",\n    \"surname\": \"Brown\",\n    \"motivation\": \"for their discoveries concerning the regulation of cholesterol metabolism\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1985\"\n  },\n  {\n    \"id\": \"433\",\n    \"firstname\": \"Joseph L.\",\n    \"surname\": \"Goldstein\",\n    \"motivation\": \"for their discoveries concerning the regulation of cholesterol metabolism\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1985\"\n  },\n  {\n    \"id\": \"261\",\n    \"firstname\": \"Bruce\",\n    \"surname\": \"Merrifield\",\n    \"motivation\": \"for his development of methodology for chemical synthesis on a solid matrix\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1984\"\n  },\n  {\n    \"id\": \"698\",\n    \"firstname\": \"Richard\",\n    \"surname\": \"Stone\",\n    \"motivation\": \"for having made fundamental contributions to the development of systems of national accounts and hence greatly improved the basis for empirical economic analysis\",\n    \"share\": \"1\",\n    \"category\": \"economics\",\n    \"year\": \"1984\"\n  },\n  {\n    \"id\": \"661\",\n    \"firstname\": \"Jaroslav\",\n    \"surname\": \"Seifert\",\n    \"motivation\": \"for his poetry which endowed with freshness, sensuality and rich inventiveness provides a liberating image of the indomitable spirit and versatility of man\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1984\"\n  },\n  {\n    \"id\": \"546\",\n    \"firstname\": \"Desmond\",\n    \"surname\": \"Tutu\",\n    \"motivation\": \"for his role as a unifying leader figure in the non-violent campaign to resolve the problem of apartheid in South Africa\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"1984\"\n  },\n  {\n    \"id\": \"124\",\n    \"firstname\": \"Carlo\",\n    \"surname\": \"Rubbia\",\n    \"motivation\": \"for their decisive contributions to the large project, which led to the discovery of the field particles W and Z, communicators of weak interaction\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1984\"\n  },\n  {\n    \"id\": \"125\",\n    \"firstname\": \"Simon\",\n    \"surname\": \"van der Meer\",\n    \"motivation\": \"for their decisive contributions to the large project, which led to the discovery of the field particles W and Z, communicators of weak interaction\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1984\"\n  },\n  {\n    \"id\": \"429\",\n    \"firstname\": \"Niels K.\",\n    \"surname\": \"Jerne\",\n    \"motivation\": \"for theories concerning the specificity in development and control of the immune system and the discovery of the principle for production of monoclonal antibodies\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1984\"\n  },\n  {\n    \"id\": \"430\",\n    \"firstname\": \"Georges J.F.\",\n    \"surname\": \"Köhler\",\n    \"motivation\": \"for theories concerning the specificity in development and control of the immune system and the discovery of the principle for production of monoclonal antibodies\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1984\"\n  },\n  {\n    \"id\": \"431\",\n    \"firstname\": \"César\",\n    \"surname\": \"Milstein\",\n    \"motivation\": \"for theories concerning the specificity in development and control of the immune system and the discovery of the principle for production of monoclonal antibodies\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1984\"\n  },\n  {\n    \"id\": \"260\",\n    \"firstname\": \"Henry\",\n    \"surname\": \"Taube\",\n    \"motivation\": \"for his work on the mechanisms of electron transfer reactions, especially in metal complexes\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1983\"\n  },\n  {\n    \"id\": \"697\",\n    \"firstname\": \"Gerard\",\n    \"surname\": \"Debreu\",\n    \"motivation\": \"for having incorporated new analytical methods into economic theory and for his rigorous reformulation of the theory of general equilibrium\",\n    \"share\": \"1\",\n    \"category\": \"economics\",\n    \"year\": \"1983\"\n  },\n  {\n    \"id\": \"660\",\n    \"firstname\": \"William\",\n    \"surname\": \"Golding\",\n    \"motivation\": \"for his novels which, with the perspicuity of realistic narrative art and the diversity and universality of myth, illuminate the human condition in the world of today\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1983\"\n  },\n  {\n    \"id\": \"545\",\n    \"firstname\": \"Lech\",\n    \"surname\": \"Wałęsa\",\n    \"motivation\": \"for non-violent struggle for free trade unions and human rights in Poland\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"1983\"\n  },\n  {\n    \"id\": \"122\",\n    \"firstname\": \"Subrahmanyan\",\n    \"surname\": \"Chandrasekhar\",\n    \"motivation\": \"for his theoretical studies of the physical processes of importance to the structure and evolution of the stars\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1983\"\n  },\n  {\n    \"id\": \"123\",\n    \"firstname\": \"William A.\",\n    \"surname\": \"Fowler\",\n    \"motivation\": \"for his theoretical and experimental studies of the nuclear reactions of importance in the formation of the chemical elements in the universe\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1983\"\n  },\n  {\n    \"id\": \"428\",\n    \"firstname\": \"Barbara\",\n    \"surname\": \"McClintock\",\n    \"motivation\": \"for her discovery of mobile genetic elements\",\n    \"share\": \"1\",\n    \"category\": \"medicine\",\n    \"year\": \"1983\"\n  },\n  {\n    \"id\": \"259\",\n    \"firstname\": \"Aaron\",\n    \"surname\": \"Klug\",\n    \"motivation\": \"for his development of crystallographic electron microscopy and his structural elucidation of biologically important nucleic acid-protein complexes\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1982\"\n  },\n  {\n    \"id\": \"696\",\n    \"firstname\": \"George J.\",\n    \"surname\": \"Stigler\",\n    \"motivation\": \"for his seminal studies of industrial structures, functioning of markets and causes and effects of public regulation\",\n    \"share\": \"1\",\n    \"category\": \"economics\",\n    \"year\": \"1982\"\n  },\n  {\n    \"id\": \"659\",\n    \"firstname\": \"Gabriel\",\n    \"surname\": \"García Márquez\",\n    \"motivation\": \"for his novels and short stories, in which the fantastic and the realistic are combined in a richly composed world of imagination, reflecting a continent's life and conflicts\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1982\"\n  },\n  {\n    \"id\": \"543\",\n    \"firstname\": \"Alva\",\n    \"surname\": \"Myrdal\",\n    \"motivation\": \"for their work for disarmament and nuclear and weapon-free zones\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"1982\"\n  },\n  {\n    \"id\": \"544\",\n    \"firstname\": \"Alfonso\",\n    \"surname\": \"García Robles\",\n    \"motivation\": \"for their work for disarmament and nuclear and weapon-free zones\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"1982\"\n  },\n  {\n    \"id\": \"121\",\n    \"firstname\": \"Kenneth G.\",\n    \"surname\": \"Wilson\",\n    \"motivation\": \"for his theory for critical phenomena in connection with phase transitions\",\n    \"share\": \"1\",\n    \"category\": \"physics\",\n    \"year\": \"1982\"\n  },\n  {\n    \"id\": \"425\",\n    \"firstname\": \"Sune K.\",\n    \"surname\": \"Bergström\",\n    \"motivation\": \"for their discoveries concerning prostaglandins and related biologically active substances\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1982\"\n  },\n  {\n    \"id\": \"426\",\n    \"firstname\": \"Bengt I.\",\n    \"surname\": \"Samuelsson\",\n    \"motivation\": \"for their discoveries concerning prostaglandins and related biologically active substances\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1982\"\n  },\n  {\n    \"id\": \"427\",\n    \"firstname\": \"John R.\",\n    \"surname\": \"Vane\",\n    \"motivation\": \"for their discoveries concerning prostaglandins and related biologically active substances\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1982\"\n  },\n  {\n    \"id\": \"257\",\n    \"firstname\": \"Kenichi\",\n    \"surname\": \"Fukui\",\n    \"motivation\": \"for their theories, developed independently, concerning the course of chemical reactions\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"1981\"\n  },\n  {\n    \"id\": \"258\",\n    \"firstname\": \"Roald\",\n    \"surname\": \"Hoffmann\",\n    \"motivation\": \"for their theories, developed independently, concerning the course of chemical reactions\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"1981\"\n  },\n  {\n    \"id\": \"695\",\n    \"firstname\": \"James\",\n    \"surname\": \"Tobin\",\n    \"motivation\": \"for his analysis of financial markets and their relations to expenditure decisions, employment, production and prices\",\n    \"share\": \"1\",\n    \"category\": \"economics\",\n    \"year\": \"1981\"\n  },\n  {\n    \"id\": \"658\",\n    \"firstname\": \"Elias\",\n    \"surname\": \"Canetti\",\n    \"motivation\": \"for writings marked by a broad outlook, a wealth of ideas and artistic power\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1981\"\n  },\n  {\n    \"id\": \"515\",\n    \"motivation\": \"for promoting the fundamental rights of refugees\",\n    \"share\": \"1\",\n    \"firstname\": \"Office of the United Nations High Commissioner for Refugees\",\n    \"category\": \"peace\",\n    \"year\": \"1981\"\n  },\n  {\n    \"id\": \"118\",\n    \"firstname\": \"Nicolaas\",\n    \"surname\": \"Bloembergen\",\n    \"motivation\": \"for their contribution to the development of laser spectroscopy\",\n    \"share\": \"4\",\n    \"category\": \"physics\",\n    \"year\": \"1981\"\n  },\n  {\n    \"id\": \"119\",\n    \"firstname\": \"Arthur L.\",\n    \"surname\": \"Schawlow\",\n    \"motivation\": \"for their contribution to the development of laser spectroscopy\",\n    \"share\": \"4\",\n    \"category\": \"physics\",\n    \"year\": \"1981\"\n  },\n  {\n    \"id\": \"120\",\n    \"firstname\": \"Kai M.\",\n    \"surname\": \"Siegbahn\",\n    \"motivation\": \"for his contribution to the development of high-resolution electron spectroscopy\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1981\"\n  },\n  {\n    \"id\": \"422\",\n    \"firstname\": \"Roger W.\",\n    \"surname\": \"Sperry\",\n    \"motivation\": \"for his discoveries concerning the functional specialization of the cerebral hemispheres\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1981\"\n  },\n  {\n    \"id\": \"423\",\n    \"firstname\": \"David H.\",\n    \"surname\": \"Hubel\",\n    \"motivation\": \"for their discoveries concerning information processing in the visual system\",\n    \"share\": \"4\",\n    \"category\": \"medicine\",\n    \"year\": \"1981\"\n  },\n  {\n    \"id\": \"424\",\n    \"firstname\": \"Torsten N.\",\n    \"surname\": \"Wiesel\",\n    \"motivation\": \"for their discoveries concerning information processing in the visual system\",\n    \"share\": \"4\",\n    \"category\": \"medicine\",\n    \"year\": \"1981\"\n  },\n  {\n    \"id\": \"254\",\n    \"firstname\": \"Paul\",\n    \"surname\": \"Berg\",\n    \"motivation\": \"for his fundamental studies of the biochemistry of nucleic acids, with particular regard to recombinant-DNA\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"1980\"\n  },\n  {\n    \"id\": \"255\",\n    \"firstname\": \"Walter\",\n    \"surname\": \"Gilbert\",\n    \"motivation\": \"for their contributions concerning the determination of base sequences in nucleic acids\",\n    \"share\": \"4\",\n    \"category\": \"chemistry\",\n    \"year\": \"1980\"\n  },\n  {\n    \"id\": \"222\",\n    \"firstname\": \"Frederick\",\n    \"surname\": \"Sanger\",\n    \"motivation\": \"for their contributions concerning the determination of base sequences in nucleic acids\",\n    \"share\": \"4\",\n    \"category\": \"chemistry\",\n    \"year\": \"1980\"\n  },\n  {\n    \"id\": \"694\",\n    \"firstname\": \"Lawrence R.\",\n    \"surname\": \"Klein\",\n    \"motivation\": \"for the creation of econometric models and the application to the analysis of economic fluctuations and economic policies\",\n    \"share\": \"1\",\n    \"category\": \"economics\",\n    \"year\": \"1980\"\n  },\n  {\n    \"id\": \"657\",\n    \"firstname\": \"Czesław\",\n    \"surname\": \"Miłosz\",\n    \"motivation\": \"who with uncompromising clear-sightedness voices man's exposed condition in a world of severe conflicts\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1980\"\n  },\n  {\n    \"id\": \"541\",\n    \"firstname\": \"Adolfo\",\n    \"surname\": \"Pérez Esquivel\",\n    \"motivation\": \"for being a source of inspiration to repressed people, especially in Latin America\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"1980\"\n  },\n  {\n    \"id\": \"116\",\n    \"firstname\": \"James\",\n    \"surname\": \"Cronin\",\n    \"motivation\": \"for the discovery of violations of fundamental symmetry principles in the decay of neutral K-mesons\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1980\"\n  },\n  {\n    \"id\": \"117\",\n    \"firstname\": \"Val\",\n    \"surname\": \"Fitch\",\n    \"motivation\": \"for the discovery of violations of fundamental symmetry principles in the decay of neutral K-mesons\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1980\"\n  },\n  {\n    \"id\": \"419\",\n    \"firstname\": \"Baruj\",\n    \"surname\": \"Benacerraf\",\n    \"motivation\": \"for their discoveries concerning genetically determined structures on the cell surface that regulate immunological reactions\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1980\"\n  },\n  {\n    \"id\": \"420\",\n    \"firstname\": \"Jean\",\n    \"surname\": \"Dausset\",\n    \"motivation\": \"for their discoveries concerning genetically determined structures on the cell surface that regulate immunological reactions\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1980\"\n  },\n  {\n    \"id\": \"421\",\n    \"firstname\": \"George D.\",\n    \"surname\": \"Snell\",\n    \"motivation\": \"for their discoveries concerning genetically determined structures on the cell surface that regulate immunological reactions\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1980\"\n  },\n  {\n    \"id\": \"252\",\n    \"firstname\": \"Herbert C.\",\n    \"surname\": \"Brown\",\n    \"motivation\": \"for their development of the use of boron- and phosphorus-containing compounds, respectively, into important reagents in organic synthesis\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"1979\"\n  },\n  {\n    \"id\": \"253\",\n    \"firstname\": \"Georg\",\n    \"surname\": \"Wittig\",\n    \"motivation\": \"for their development of the use of boron- and phosphorus-containing compounds, respectively, into important reagents in organic synthesis\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"1979\"\n  },\n  {\n    \"id\": \"692\",\n    \"firstname\": \"Theodore W.\",\n    \"surname\": \"Schultz\",\n    \"motivation\": \"for their pioneering research into economic development research with particular consideration of the problems of developing countries\",\n    \"share\": \"2\",\n    \"category\": \"economics\",\n    \"year\": \"1979\"\n  },\n  {\n    \"id\": \"693\",\n    \"firstname\": \"Sir Arthur\",\n    \"surname\": \"Lewis\",\n    \"motivation\": \"for their pioneering research into economic development research with particular consideration of the problems of developing countries\",\n    \"share\": \"2\",\n    \"category\": \"economics\",\n    \"year\": \"1979\"\n  },\n  {\n    \"id\": \"655\",\n    \"firstname\": \"Odysseus\",\n    \"surname\": \"Elytis\",\n    \"motivation\": \"for his poetry, which, against the background of Greek tradition, depicts with sensuous strength and intellectual clear-sightedness modern man's struggle for freedom and creativeness\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1979\"\n  },\n  {\n    \"id\": \"540\",\n    \"firstname\": \"Anjezë Gonxhe\",\n    \"surname\": \"Bojaxhiu\",\n    \"motivation\": \"for her work for bringing help to suffering humanity\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"1979\"\n  },\n  {\n    \"id\": \"113\",\n    \"firstname\": \"Sheldon\",\n    \"surname\": \"Glashow\",\n    \"motivation\": \"for their contributions to the theory of the unified weak and electromagnetic interaction between elementary particles, including, inter alia, the prediction of the weak neutral current\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"1979\"\n  },\n  {\n    \"id\": \"114\",\n    \"firstname\": \"Abdus\",\n    \"surname\": \"Salam\",\n    \"motivation\": \"for their contributions to the theory of the unified weak and electromagnetic interaction between elementary particles, including, inter alia, the prediction of the weak neutral current\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"1979\"\n  },\n  {\n    \"id\": \"115\",\n    \"firstname\": \"Steven\",\n    \"surname\": \"Weinberg\",\n    \"motivation\": \"for their contributions to the theory of the unified weak and electromagnetic interaction between elementary particles, including, inter alia, the prediction of the weak neutral current\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"1979\"\n  },\n  {\n    \"id\": \"417\",\n    \"firstname\": \"Allan M.\",\n    \"surname\": \"Cormack\",\n    \"motivation\": \"for the development of computer assisted tomography\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1979\"\n  },\n  {\n    \"id\": \"418\",\n    \"firstname\": \"Godfrey N.\",\n    \"surname\": \"Hounsfield\",\n    \"motivation\": \"for the development of computer assisted tomography\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1979\"\n  },\n  {\n    \"id\": \"251\",\n    \"firstname\": \"Peter\",\n    \"surname\": \"Mitchell\",\n    \"motivation\": \"for his contribution to the understanding of biological energy transfer through the formulation of the chemiosmotic theory\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1978\"\n  },\n  {\n    \"id\": \"691\",\n    \"firstname\": \"Herbert\",\n    \"surname\": \"Simon\",\n    \"motivation\": \"for his pioneering research into the decision-making process within economic organizations\",\n    \"share\": \"1\",\n    \"category\": \"economics\",\n    \"year\": \"1978\"\n  },\n  {\n    \"id\": \"654\",\n    \"firstname\": \"Isaac Bashevis\",\n    \"surname\": \"Singer\",\n    \"motivation\": \"for his impassioned narrative art which, with roots in a Polish-Jewish cultural tradition, brings universal human conditions to life\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1978\"\n  },\n  {\n    \"id\": \"538\",\n    \"firstname\": \"Anwar\",\n    \"surname\": \"al-Sadat\",\n    \"motivation\": \"for jointly having negotiated peace between Egypt and Israel in 1978\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"1978\"\n  },\n  {\n    \"id\": \"539\",\n    \"firstname\": \"Menachem\",\n    \"surname\": \"Begin\",\n    \"motivation\": \"for jointly having negotiated peace between Egypt and Israel in 1978\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"1978\"\n  },\n  {\n    \"id\": \"110\",\n    \"firstname\": \"Pyotr\",\n    \"surname\": \"Kapitsa\",\n    \"motivation\": \"for his basic inventions and discoveries in the area of low-temperature physics\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1978\"\n  },\n  {\n    \"id\": \"111\",\n    \"firstname\": \"Arno\",\n    \"surname\": \"Penzias\",\n    \"motivation\": \"for their discovery of cosmic microwave background radiation\",\n    \"share\": \"4\",\n    \"category\": \"physics\",\n    \"year\": \"1978\"\n  },\n  {\n    \"id\": \"112\",\n    \"firstname\": \"Robert Woodrow\",\n    \"surname\": \"Wilson\",\n    \"motivation\": \"for their discovery of cosmic microwave background radiation\",\n    \"share\": \"4\",\n    \"category\": \"physics\",\n    \"year\": \"1978\"\n  },\n  {\n    \"id\": \"414\",\n    \"firstname\": \"Werner\",\n    \"surname\": \"Arber\",\n    \"motivation\": \"for the discovery of restriction enzymes and their application to problems of molecular genetics\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1978\"\n  },\n  {\n    \"id\": \"415\",\n    \"firstname\": \"Daniel\",\n    \"surname\": \"Nathans\",\n    \"motivation\": \"for the discovery of restriction enzymes and their application to problems of molecular genetics\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1978\"\n  },\n  {\n    \"id\": \"416\",\n    \"firstname\": \"Hamilton O.\",\n    \"surname\": \"Smith\",\n    \"motivation\": \"for the discovery of restriction enzymes and their application to problems of molecular genetics\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1978\"\n  },\n  {\n    \"id\": \"250\",\n    \"firstname\": \"Ilya\",\n    \"surname\": \"Prigogine\",\n    \"motivation\": \"for his contributions to non-equilibrium thermodynamics, particularly the theory of dissipative structures\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1977\"\n  },\n  {\n    \"id\": \"689\",\n    \"firstname\": \"Bertil\",\n    \"surname\": \"Ohlin\",\n    \"motivation\": \"for their pathbreaking contribution to the theory of international trade and international capital movements\",\n    \"share\": \"2\",\n    \"category\": \"economics\",\n    \"year\": \"1977\"\n  },\n  {\n    \"id\": \"690\",\n    \"firstname\": \"James E.\",\n    \"surname\": \"Meade\",\n    \"motivation\": \"for their pathbreaking contribution to the theory of international trade and international capital movements\",\n    \"share\": \"2\",\n    \"category\": \"economics\",\n    \"year\": \"1977\"\n  },\n  {\n    \"id\": \"653\",\n    \"firstname\": \"Vicente\",\n    \"surname\": \"Aleixandre\",\n    \"motivation\": \"for a creative poetic writing which illuminates man's condition in the cosmos and in present-day society, at the same time representing the great renewal of the traditions of Spanish poetry between the wars\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1977\"\n  },\n  {\n    \"id\": \"537\",\n    \"motivation\": \"for worldwide respect for human rights\",\n    \"share\": \"1\",\n    \"firstname\": \"Amnesty International\",\n    \"category\": \"peace\",\n    \"year\": \"1977\"\n  },\n  {\n    \"id\": \"107\",\n    \"firstname\": \"Philip W.\",\n    \"surname\": \"Anderson\",\n    \"motivation\": \"for their fundamental theoretical investigations of the electronic structure of magnetic and disordered systems\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"1977\"\n  },\n  {\n    \"id\": \"108\",\n    \"firstname\": \"Sir Nevill F.\",\n    \"surname\": \"Mott\",\n    \"motivation\": \"for their fundamental theoretical investigations of the electronic structure of magnetic and disordered systems\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"1977\"\n  },\n  {\n    \"id\": \"109\",\n    \"firstname\": \"John H.\",\n    \"surname\": \"Van Vleck\",\n    \"motivation\": \"for their fundamental theoretical investigations of the electronic structure of magnetic and disordered systems\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"1977\"\n  },\n  {\n    \"id\": \"411\",\n    \"firstname\": \"Roger\",\n    \"surname\": \"Guillemin\",\n    \"motivation\": \"for their discoveries concerning the peptide hormone production of the brain\",\n    \"share\": \"4\",\n    \"category\": \"medicine\",\n    \"year\": \"1977\"\n  },\n  {\n    \"id\": \"412\",\n    \"firstname\": \"Andrew V.\",\n    \"surname\": \"Schally\",\n    \"motivation\": \"for their discoveries concerning the peptide hormone production of the brain\",\n    \"share\": \"4\",\n    \"category\": \"medicine\",\n    \"year\": \"1977\"\n  },\n  {\n    \"id\": \"413\",\n    \"firstname\": \"Rosalyn\",\n    \"surname\": \"Yalow\",\n    \"motivation\": \"for the development of radioimmunoassays of peptide hormones\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1977\"\n  },\n  {\n    \"id\": \"249\",\n    \"firstname\": \"William\",\n    \"surname\": \"Lipscomb\",\n    \"motivation\": \"for his studies on the structure of boranes illuminating problems of chemical bonding\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1976\"\n  },\n  {\n    \"id\": \"688\",\n    \"firstname\": \"Milton\",\n    \"surname\": \"Friedman\",\n    \"motivation\": \"for his achievements in the fields of consumption analysis, monetary history and theory and for his demonstration of the complexity of stabilization policy\",\n    \"share\": \"1\",\n    \"category\": \"economics\",\n    \"year\": \"1976\"\n  },\n  {\n    \"id\": \"652\",\n    \"firstname\": \"Saul\",\n    \"surname\": \"Bellow\",\n    \"motivation\": \"for the human understanding and subtle analysis of contemporary culture that are combined in his work\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1976\"\n  },\n  {\n    \"id\": \"535\",\n    \"firstname\": \"Betty\",\n    \"surname\": \"Williams\",\n    \"motivation\": \"for the courageous efforts in founding a movement to put an end to the violent conflict in Northern Ireland\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"1976\"\n  },\n  {\n    \"id\": \"536\",\n    \"firstname\": \"Mairead\",\n    \"surname\": \"Corrigan\",\n    \"motivation\": \"for the courageous efforts in founding a movement to put an end to the violent conflict in Northern Ireland\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"1976\"\n  },\n  {\n    \"id\": \"105\",\n    \"firstname\": \"Burton\",\n    \"surname\": \"Richter\",\n    \"motivation\": \"for their pioneering work in the discovery of a heavy elementary particle of a new kind\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1976\"\n  },\n  {\n    \"id\": \"106\",\n    \"firstname\": \"Samuel C.C.\",\n    \"surname\": \"Ting\",\n    \"motivation\": \"for their pioneering work in the discovery of a heavy elementary particle of a new kind\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1976\"\n  },\n  {\n    \"id\": \"409\",\n    \"firstname\": \"Baruch S.\",\n    \"surname\": \"Blumberg\",\n    \"motivation\": \"for their discoveries concerning new mechanisms for the origin and dissemination of infectious diseases\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1976\"\n  },\n  {\n    \"id\": \"410\",\n    \"firstname\": \"D. Carleton\",\n    \"surname\": \"Gajdusek\",\n    \"motivation\": \"for their discoveries concerning new mechanisms for the origin and dissemination of infectious diseases\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1976\"\n  },\n  {\n    \"id\": \"247\",\n    \"firstname\": \"John\",\n    \"surname\": \"Cornforth\",\n    \"motivation\": \"for his work on the stereochemistry of enzyme-catalyzed reactions\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"1975\"\n  },\n  {\n    \"id\": \"248\",\n    \"firstname\": \"Vladimir\",\n    \"surname\": \"Prelog\",\n    \"motivation\": \"for his research into the stereochemistry of organic molecules and reactions\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"1975\"\n  },\n  {\n    \"id\": \"686\",\n    \"firstname\": \"Leonid Vitaliyevich\",\n    \"surname\": \"Kantorovich\",\n    \"motivation\": \"for their contributions to the theory of optimum allocation of resources\",\n    \"share\": \"2\",\n    \"category\": \"economics\",\n    \"year\": \"1975\"\n  },\n  {\n    \"id\": \"687\",\n    \"firstname\": \"Tjalling C.\",\n    \"surname\": \"Koopmans\",\n    \"motivation\": \"for their contributions to the theory of optimum allocation of resources\",\n    \"share\": \"2\",\n    \"category\": \"economics\",\n    \"year\": \"1975\"\n  },\n  {\n    \"id\": \"651\",\n    \"firstname\": \"Eugenio\",\n    \"surname\": \"Montale\",\n    \"motivation\": \"for his distinctive poetry which, with great artistic sensitivity, has interpreted human values under the sign of an outlook on life with no illusions\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1975\"\n  },\n  {\n    \"id\": \"534\",\n    \"firstname\": \"Andrei\",\n    \"surname\": \"Sakharov\",\n    \"motivation\": \"for his struggle for human rights in the Soviet Union, for disarmament and cooperation between all nations\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"1975\"\n  },\n  {\n    \"id\": \"102\",\n    \"firstname\": \"Aage N.\",\n    \"surname\": \"Bohr\",\n    \"motivation\": \"for the discovery of the connection between collective motion and particle motion in atomic nuclei and the development of the theory of the structure of the atomic nucleus based on this connection\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"1975\"\n  },\n  {\n    \"id\": \"103\",\n    \"firstname\": \"Ben R.\",\n    \"surname\": \"Mottelson\",\n    \"motivation\": \"for the discovery of the connection between collective motion and particle motion in atomic nuclei and the development of the theory of the structure of the atomic nucleus based on this connection\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"1975\"\n  },\n  {\n    \"id\": \"104\",\n    \"firstname\": \"James\",\n    \"surname\": \"Rainwater\",\n    \"motivation\": \"for the discovery of the connection between collective motion and particle motion in atomic nuclei and the development of the theory of the structure of the atomic nucleus based on this connection\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"1975\"\n  },\n  {\n    \"id\": \"406\",\n    \"firstname\": \"David\",\n    \"surname\": \"Baltimore\",\n    \"motivation\": \"for their discoveries concerning the interaction between tumour viruses and the genetic material of the cell\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1975\"\n  },\n  {\n    \"id\": \"407\",\n    \"firstname\": \"Renato\",\n    \"surname\": \"Dulbecco\",\n    \"motivation\": \"for their discoveries concerning the interaction between tumour viruses and the genetic material of the cell\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1975\"\n  },\n  {\n    \"id\": \"408\",\n    \"firstname\": \"Howard M.\",\n    \"surname\": \"Temin\",\n    \"motivation\": \"for their discoveries concerning the interaction between tumour viruses and the genetic material of the cell\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1975\"\n  },\n  {\n    \"id\": \"246\",\n    \"firstname\": \"Paul J.\",\n    \"surname\": \"Flory\",\n    \"motivation\": \"for his fundamental achievements, both theoretical and experimental, in the physical chemistry of the macromolecules\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1974\"\n  },\n  {\n    \"id\": \"684\",\n    \"firstname\": \"Gunnar\",\n    \"surname\": \"Myrdal\",\n    \"motivation\": \"for their pioneering work in the theory of money and economic fluctuations and for their penetrating analysis of the interdependence of economic, social and institutional phenomena\",\n    \"share\": \"2\",\n    \"category\": \"economics\",\n    \"year\": \"1974\"\n  },\n  {\n    \"id\": \"685\",\n    \"firstname\": \"Friedrich\",\n    \"surname\": \"von Hayek\",\n    \"motivation\": \"for their pioneering work in the theory of money and economic fluctuations and for their penetrating analysis of the interdependence of economic, social and institutional phenomena\",\n    \"share\": \"2\",\n    \"category\": \"economics\",\n    \"year\": \"1974\"\n  },\n  {\n    \"id\": \"649\",\n    \"firstname\": \"Eyvind\",\n    \"surname\": \"Johnson\",\n    \"motivation\": \"for a narrative art, far-seeing in lands and ages, in the service of freedom\",\n    \"share\": \"2\",\n    \"category\": \"literature\",\n    \"year\": \"1974\"\n  },\n  {\n    \"id\": \"650\",\n    \"firstname\": \"Harry\",\n    \"surname\": \"Martinson\",\n    \"motivation\": \"for writings that catch the dewdrop and reflect the cosmos\",\n    \"share\": \"2\",\n    \"category\": \"literature\",\n    \"year\": \"1974\"\n  },\n  {\n    \"id\": \"532\",\n    \"firstname\": \"Seán\",\n    \"surname\": \"MacBride\",\n    \"motivation\": \"for his efforts to secure and develop human rights throughout the world\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"1974\"\n  },\n  {\n    \"id\": \"533\",\n    \"firstname\": \"Eisaku\",\n    \"surname\": \"Satō\",\n    \"motivation\": \"for his contribution to stabilize conditions in the Pacific rim area and for signing the Nuclear Non-Proliferation Treaty\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"1974\"\n  },\n  {\n    \"id\": \"100\",\n    \"firstname\": \"Martin\",\n    \"surname\": \"Ryle\",\n    \"motivation\": \"for their pioneering research in radio astrophysics: Ryle for his observations and inventions, in particular of the aperture synthesis technique, and Hewish for his decisive role in the discovery of pulsars\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1974\"\n  },\n  {\n    \"id\": \"101\",\n    \"firstname\": \"Antony\",\n    \"surname\": \"Hewish\",\n    \"motivation\": \"for their pioneering research in radio astrophysics: Ryle for his observations and inventions, in particular of the aperture synthesis technique, and Hewish for his decisive role in the discovery of pulsars\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1974\"\n  },\n  {\n    \"id\": \"403\",\n    \"firstname\": \"Albert\",\n    \"surname\": \"Claude\",\n    \"motivation\": \"for their discoveries concerning the structural and functional organization of the cell\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1974\"\n  },\n  {\n    \"id\": \"404\",\n    \"firstname\": \"Christian\",\n    \"surname\": \"de Duve\",\n    \"motivation\": \"for their discoveries concerning the structural and functional organization of the cell\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1974\"\n  },\n  {\n    \"id\": \"405\",\n    \"firstname\": \"George E.\",\n    \"surname\": \"Palade\",\n    \"motivation\": \"for their discoveries concerning the structural and functional organization of the cell\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1974\"\n  },\n  {\n    \"id\": \"244\",\n    \"firstname\": \"Ernst Otto\",\n    \"surname\": \"Fischer\",\n    \"motivation\": \"for their pioneering work, performed independently, on the chemistry of the organometallic, so called sandwich compounds\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"1973\"\n  },\n  {\n    \"id\": \"245\",\n    \"firstname\": \"Geoffrey\",\n    \"surname\": \"Wilkinson\",\n    \"motivation\": \"for their pioneering work, performed independently, on the chemistry of the organometallic, so called sandwich compounds\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"1973\"\n  },\n  {\n    \"id\": \"683\",\n    \"firstname\": \"Wassily\",\n    \"surname\": \"Leontief\",\n    \"motivation\": \"for the development of the input-output method and for its application to important economic problems\",\n    \"share\": \"1\",\n    \"category\": \"economics\",\n    \"year\": \"1973\"\n  },\n  {\n    \"id\": \"648\",\n    \"firstname\": \"Patrick\",\n    \"surname\": \"White\",\n    \"motivation\": \"for an epic and psychological narrative art which has introduced a new continent into literature\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1973\"\n  },\n  {\n    \"id\": \"530\",\n    \"firstname\": \"Henry\",\n    \"surname\": \"Kissinger\",\n    \"motivation\": \"for jointly having negotiated a cease fire in Vietnam in 1973\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"1973\"\n  },\n  {\n    \"id\": \"531\",\n    \"firstname\": \"Le Duc Tho\",\n    \"motivation\": \"for jointly having negotiated a cease fire in Vietnam in 1973\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"1973\"\n  },\n  {\n    \"id\": \"97\",\n    \"firstname\": \"Leo\",\n    \"surname\": \"Esaki\",\n    \"motivation\": \"for their experimental discoveries regarding tunneling phenomena in semiconductors and superconductors, respectively\",\n    \"share\": \"4\",\n    \"category\": \"physics\",\n    \"year\": \"1973\"\n  },\n  {\n    \"id\": \"98\",\n    \"firstname\": \"Ivar\",\n    \"surname\": \"Giaever\",\n    \"motivation\": \"for their experimental discoveries regarding tunneling phenomena in semiconductors and superconductors, respectively\",\n    \"share\": \"4\",\n    \"category\": \"physics\",\n    \"year\": \"1973\"\n  },\n  {\n    \"id\": \"99\",\n    \"firstname\": \"Brian D.\",\n    \"surname\": \"Josephson\",\n    \"motivation\": \"for his theoretical predictions of the properties of a supercurrent through a tunnel barrier, in particular those phenomena which are generally known as the Josephson effects\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1973\"\n  },\n  {\n    \"id\": \"400\",\n    \"firstname\": \"Karl\",\n    \"surname\": \"von Frisch\",\n    \"motivation\": \"for their discoveries concerning organization and elicitation of individual and social behaviour patterns\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1973\"\n  },\n  {\n    \"id\": \"401\",\n    \"firstname\": \"Konrad\",\n    \"surname\": \"Lorenz\",\n    \"motivation\": \"for their discoveries concerning organization and elicitation of individual and social behaviour patterns\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1973\"\n  },\n  {\n    \"id\": \"402\",\n    \"firstname\": \"Nikolaas\",\n    \"surname\": \"Tinbergen\",\n    \"motivation\": \"for their discoveries concerning organization and elicitation of individual and social behaviour patterns\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1973\"\n  },\n  {\n    \"id\": \"241\",\n    \"firstname\": \"Christian\",\n    \"surname\": \"Anfinsen\",\n    \"motivation\": \"for his work on ribonuclease, especially concerning the connection between the amino acid sequence and the biologically active conformation\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"1972\"\n  },\n  {\n    \"id\": \"242\",\n    \"firstname\": \"Stanford\",\n    \"surname\": \"Moore\",\n    \"motivation\": \"for their contribution to the understanding of the connection between chemical structure and catalytic activity of the active centre of the ribonuclease molecule\",\n    \"share\": \"4\",\n    \"category\": \"chemistry\",\n    \"year\": \"1972\"\n  },\n  {\n    \"id\": \"243\",\n    \"firstname\": \"William H.\",\n    \"surname\": \"Stein\",\n    \"motivation\": \"for their contribution to the understanding of the connection between chemical structure and catalytic activity of the active centre of the ribonuclease molecule\",\n    \"share\": \"4\",\n    \"category\": \"chemistry\",\n    \"year\": \"1972\"\n  },\n  {\n    \"id\": \"681\",\n    \"firstname\": \"John R.\",\n    \"surname\": \"Hicks\",\n    \"motivation\": \"for their pioneering contributions to general economic equilibrium theory and welfare theory\",\n    \"share\": \"2\",\n    \"category\": \"economics\",\n    \"year\": \"1972\"\n  },\n  {\n    \"id\": \"682\",\n    \"firstname\": \"Kenneth J.\",\n    \"surname\": \"Arrow\",\n    \"motivation\": \"for their pioneering contributions to general economic equilibrium theory and welfare theory\",\n    \"share\": \"2\",\n    \"category\": \"economics\",\n    \"year\": \"1972\"\n  },\n  {\n    \"id\": \"647\",\n    \"firstname\": \"Heinrich\",\n    \"surname\": \"Böll\",\n    \"motivation\": \"for his writing which through its combination of a broad perspective on his time and a sensitive skill in characterization has contributed to a renewal of German literature\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1972\"\n  },\n  {\n    \"id\": \"66\",\n    \"firstname\": \"John\",\n    \"surname\": \"Bardeen\",\n    \"motivation\": \"for their jointly developed theory of superconductivity, usually called the BCS-theory\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"1972\"\n  },\n  {\n    \"id\": \"95\",\n    \"firstname\": \"Leon N.\",\n    \"surname\": \"Cooper\",\n    \"motivation\": \"for their jointly developed theory of superconductivity, usually called the BCS-theory\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"1972\"\n  },\n  {\n    \"id\": \"96\",\n    \"firstname\": \"Robert\",\n    \"surname\": \"Schrieffer\",\n    \"motivation\": \"for their jointly developed theory of superconductivity, usually called the BCS-theory\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"1972\"\n  },\n  {\n    \"id\": \"398\",\n    \"firstname\": \"Gerald M.\",\n    \"surname\": \"Edelman\",\n    \"motivation\": \"for their discoveries concerning the chemical structure of antibodies\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1972\"\n  },\n  {\n    \"id\": \"399\",\n    \"firstname\": \"Rodney R.\",\n    \"surname\": \"Porter\",\n    \"motivation\": \"for their discoveries concerning the chemical structure of antibodies\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1972\"\n  },\n  {\n    \"id\": \"240\",\n    \"firstname\": \"Gerhard\",\n    \"surname\": \"Herzberg\",\n    \"motivation\": \"for his contributions to the knowledge of electronic structure and geometry of molecules, particularly free radicals\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1971\"\n  },\n  {\n    \"id\": \"680\",\n    \"firstname\": \"Simon\",\n    \"surname\": \"Kuznets\",\n    \"motivation\": \"for his empirically founded interpretation of economic growth which has led to new and deepened insight into the economic and social structure and process of development\",\n    \"share\": \"1\",\n    \"category\": \"economics\",\n    \"year\": \"1971\"\n  },\n  {\n    \"id\": \"645\",\n    \"firstname\": \"Pablo\",\n    \"surname\": \"Neruda\",\n    \"motivation\": \"for a poetry that with the action of an elemental force brings alive a continent's destiny and dreams\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1971\"\n  },\n  {\n    \"id\": \"529\",\n    \"firstname\": \"Willy\",\n    \"surname\": \"Brandt\",\n    \"motivation\": \"for paving the way for a meaningful dialogue between East and West\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"1971\"\n  },\n  {\n    \"id\": \"93\",\n    \"firstname\": \"Dennis\",\n    \"surname\": \"Gabor\",\n    \"motivation\": \"for his invention and development of the holographic method\",\n    \"share\": \"1\",\n    \"category\": \"physics\",\n    \"year\": \"1971\"\n  },\n  {\n    \"id\": \"397\",\n    \"firstname\": \"Earl W.\",\n    \"surname\": \"Sutherland, Jr.\",\n    \"motivation\": \"for his discoveries concerning the mechanisms of the action of hormones\",\n    \"share\": \"1\",\n    \"category\": \"medicine\",\n    \"year\": \"1971\"\n  },\n  {\n    \"id\": \"239\",\n    \"firstname\": \"Luis\",\n    \"surname\": \"Leloir\",\n    \"motivation\": \"for his discovery of sugar nucleotides and their role in the biosynthesis of carbohydrates\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1970\"\n  },\n  {\n    \"id\": \"679\",\n    \"firstname\": \"Paul A.\",\n    \"surname\": \"Samuelson\",\n    \"motivation\": \"for the scientific work through which he has developed static and dynamic economic theory and actively contributed to raising the level of analysis in economic science\",\n    \"share\": \"1\",\n    \"category\": \"economics\",\n    \"year\": \"1970\"\n  },\n  {\n    \"id\": \"644\",\n    \"firstname\": \"Aleksandr\",\n    \"surname\": \"Solzhenitsyn\",\n    \"motivation\": \"for the ethical force with which he has pursued the indispensable traditions of Russian literature\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1970\"\n  },\n  {\n    \"id\": \"528\",\n    \"firstname\": \"Norman\",\n    \"surname\": \"Borlaug\",\n    \"motivation\": \"for having given a well-founded hope - the green revolution\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"1970\"\n  },\n  {\n    \"id\": \"91\",\n    \"firstname\": \"Hannes\",\n    \"surname\": \"Alfvén\",\n    \"motivation\": \"for fundamental work and discoveries in magnetohydro-dynamics with fruitful applications in different parts of plasma physics\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1970\"\n  },\n  {\n    \"id\": \"92\",\n    \"firstname\": \"Louis\",\n    \"surname\": \"Néel\",\n    \"motivation\": \"for fundamental work and discoveries concerning antiferromagnetism and ferrimagnetism which have led to important applications in solid state physics\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1970\"\n  },\n  {\n    \"id\": \"394\",\n    \"firstname\": \"Sir Bernard\",\n    \"surname\": \"Katz\",\n    \"motivation\": \"for their discoveries concerning the humoral transmitters in the nerve terminals and the mechanism for their storage, release and inactivation\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1970\"\n  },\n  {\n    \"id\": \"395\",\n    \"firstname\": \"Ulf\",\n    \"surname\": \"von Euler\",\n    \"motivation\": \"for their discoveries concerning the humoral transmitters in the nerve terminals and the mechanism for their storage, release and inactivation\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1970\"\n  },\n  {\n    \"id\": \"396\",\n    \"firstname\": \"Julius\",\n    \"surname\": \"Axelrod\",\n    \"motivation\": \"for their discoveries concerning the humoral transmitters in the nerve terminals and the mechanism for their storage, release and inactivation\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1970\"\n  },\n  {\n    \"id\": \"237\",\n    \"firstname\": \"Derek\",\n    \"surname\": \"Barton\",\n    \"motivation\": \"for their contributions to the development of the concept of conformation and its application in chemistry\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"1969\"\n  },\n  {\n    \"id\": \"238\",\n    \"firstname\": \"Odd\",\n    \"surname\": \"Hassel\",\n    \"motivation\": \"for their contributions to the development of the concept of conformation and its application in chemistry\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"1969\"\n  },\n  {\n    \"id\": \"677\",\n    \"firstname\": \"Ragnar\",\n    \"surname\": \"Frisch\",\n    \"motivation\": \"for having developed and applied dynamic models for the analysis of economic processes\",\n    \"share\": \"2\",\n    \"category\": \"economics\",\n    \"year\": \"1969\"\n  },\n  {\n    \"id\": \"678\",\n    \"firstname\": \"Jan\",\n    \"surname\": \"Tinbergen\",\n    \"motivation\": \"for having developed and applied dynamic models for the analysis of economic processes\",\n    \"share\": \"2\",\n    \"category\": \"economics\",\n    \"year\": \"1969\"\n  },\n  {\n    \"id\": \"643\",\n    \"firstname\": \"Samuel\",\n    \"surname\": \"Beckett\",\n    \"motivation\": \"for his writing, which - in new forms for the novel and drama - in the destitution of modern man acquires its elevation\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1969\"\n  },\n  {\n    \"id\": \"527\",\n    \"motivation\": \"for creating international legislation insuring certain norms for working conditions in every country\",\n    \"share\": \"1\",\n    \"firstname\": \"International Labour Organization\",\n    \"category\": \"peace\",\n    \"year\": \"1969\"\n  },\n  {\n    \"id\": \"90\",\n    \"firstname\": \"Murray\",\n    \"surname\": \"Gell-Mann\",\n    \"motivation\": \"for his contributions and discoveries concerning the classification of elementary particles and their interactions\",\n    \"share\": \"1\",\n    \"category\": \"physics\",\n    \"year\": \"1969\"\n  },\n  {\n    \"id\": \"391\",\n    \"firstname\": \"Max\",\n    \"surname\": \"Delbrück\",\n    \"motivation\": \"for their discoveries concerning the replication mechanism and the genetic structure of viruses\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1969\"\n  },\n  {\n    \"id\": \"392\",\n    \"firstname\": \"Alfred D.\",\n    \"surname\": \"Hershey\",\n    \"motivation\": \"for their discoveries concerning the replication mechanism and the genetic structure of viruses\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1969\"\n  },\n  {\n    \"id\": \"393\",\n    \"firstname\": \"Salvador E.\",\n    \"surname\": \"Luria\",\n    \"motivation\": \"for their discoveries concerning the replication mechanism and the genetic structure of viruses\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1969\"\n  },\n  {\n    \"id\": \"236\",\n    \"firstname\": \"Lars\",\n    \"surname\": \"Onsager\",\n    \"motivation\": \"for the discovery of the reciprocal relations bearing his name, which are fundamental for the thermodynamics of irreversible processes\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1968\"\n  },\n  {\n    \"id\": \"642\",\n    \"firstname\": \"Yasunari\",\n    \"surname\": \"Kawabata\",\n    \"motivation\": \"for his narrative mastery, which with great sensibility expresses the essence of the Japanese mind\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1968\"\n  },\n  {\n    \"id\": \"526\",\n    \"firstname\": \"René\",\n    \"surname\": \"Cassin\",\n    \"motivation\": \"for his struggle to ensure the rights of man as stipulated in the UN Declaration\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"1968\"\n  },\n  {\n    \"id\": \"89\",\n    \"firstname\": \"Luis\",\n    \"surname\": \"Alvarez\",\n    \"motivation\": \"for his decisive contributions to elementary particle physics, in particular the discovery of a large number of resonance states, made possible through his development of the technique of using hydrogen bubble chamber and data analysis\",\n    \"share\": \"1\",\n    \"category\": \"physics\",\n    \"year\": \"1968\"\n  },\n  {\n    \"id\": \"388\",\n    \"firstname\": \"Robert W.\",\n    \"surname\": \"Holley\",\n    \"motivation\": \"for their interpretation of the genetic code and its function in protein synthesis\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1968\"\n  },\n  {\n    \"id\": \"389\",\n    \"firstname\": \"H. Gobind\",\n    \"surname\": \"Khorana\",\n    \"motivation\": \"for their interpretation of the genetic code and its function in protein synthesis\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1968\"\n  },\n  {\n    \"id\": \"390\",\n    \"firstname\": \"Marshall W.\",\n    \"surname\": \"Nirenberg\",\n    \"motivation\": \"for their interpretation of the genetic code and its function in protein synthesis\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1968\"\n  },\n  {\n    \"id\": \"233\",\n    \"firstname\": \"Manfred\",\n    \"surname\": \"Eigen\",\n    \"motivation\": \"for their studies of extremely fast chemical reactions, effected by disturbing the equilibrium by means of very short pulses of energy\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"1967\"\n  },\n  {\n    \"id\": \"234\",\n    \"firstname\": \"Ronald G.W.\",\n    \"surname\": \"Norrish\",\n    \"motivation\": \"for their studies of extremely fast chemical reactions, effected by disturbing the equilibrium by means of very short pulses of energy\",\n    \"share\": \"4\",\n    \"category\": \"chemistry\",\n    \"year\": \"1967\"\n  },\n  {\n    \"id\": \"235\",\n    \"firstname\": \"George\",\n    \"surname\": \"Porter\",\n    \"motivation\": \"for their studies of extremely fast chemical reactions, effected by disturbing the equilibrium by means of very short pulses of energy\",\n    \"share\": \"4\",\n    \"category\": \"chemistry\",\n    \"year\": \"1967\"\n  },\n  {\n    \"id\": \"641\",\n    \"firstname\": \"Miguel Angel\",\n    \"surname\": \"Asturias\",\n    \"motivation\": \"for his vivid literary achievement, deep-rooted in the national traits and traditions of Indian peoples of Latin America\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1967\"\n  },\n  {\n    \"id\": \"88\",\n    \"firstname\": \"Hans\",\n    \"surname\": \"Bethe\",\n    \"motivation\": \"for his contributions to the theory of nuclear reactions, especially his discoveries concerning the energy production in stars\",\n    \"share\": \"1\",\n    \"category\": \"physics\",\n    \"year\": \"1967\"\n  },\n  {\n    \"id\": \"385\",\n    \"firstname\": \"Ragnar\",\n    \"surname\": \"Granit\",\n    \"motivation\": \"for their discoveries concerning the primary physiological and chemical visual processes in the eye\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1967\"\n  },\n  {\n    \"id\": \"386\",\n    \"firstname\": \"Keffer\",\n    \"surname\": \"Hartline\",\n    \"motivation\": \"for their discoveries concerning the primary physiological and chemical visual processes in the eye\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1967\"\n  },\n  {\n    \"id\": \"387\",\n    \"firstname\": \"George\",\n    \"surname\": \"Wald\",\n    \"motivation\": \"for their discoveries concerning the primary physiological and chemical visual processes in the eye\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1967\"\n  },\n  {\n    \"id\": \"232\",\n    \"firstname\": \"Robert S.\",\n    \"surname\": \"Mulliken\",\n    \"motivation\": \"for his fundamental work concerning chemical bonds and the electronic structure of molecules by the molecular orbital method\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1966\"\n  },\n  {\n    \"id\": \"639\",\n    \"firstname\": \"Shmuel\",\n    \"surname\": \"Agnon\",\n    \"motivation\": \"for his profoundly characteristic narrative art with motifs from the life of the Jewish people\",\n    \"share\": \"2\",\n    \"category\": \"literature\",\n    \"year\": \"1966\"\n  },\n  {\n    \"id\": \"640\",\n    \"firstname\": \"Nelly\",\n    \"surname\": \"Sachs\",\n    \"motivation\": \"for her outstanding lyrical and dramatic writing, which interprets Israel's destiny with touching strength\",\n    \"share\": \"2\",\n    \"category\": \"literature\",\n    \"year\": \"1966\"\n  },\n  {\n    \"id\": \"87\",\n    \"firstname\": \"Alfred\",\n    \"surname\": \"Kastler\",\n    \"motivation\": \"for the discovery and development of optical methods for studying Hertzian resonances in atoms\",\n    \"share\": \"1\",\n    \"category\": \"physics\",\n    \"year\": \"1966\"\n  },\n  {\n    \"id\": \"383\",\n    \"firstname\": \"Peyton\",\n    \"surname\": \"Rous\",\n    \"motivation\": \"for his discovery of tumour-inducing viruses\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1966\"\n  },\n  {\n    \"id\": \"384\",\n    \"firstname\": \"Charles B.\",\n    \"surname\": \"Huggins\",\n    \"motivation\": \"for his discoveries concerning hormonal treatment of prostatic cancer\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1966\"\n  },\n  {\n    \"id\": \"231\",\n    \"firstname\": \"Robert B.\",\n    \"surname\": \"Woodward\",\n    \"motivation\": \"for his outstanding achievements in the art of organic synthesis\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1965\"\n  },\n  {\n    \"id\": \"638\",\n    \"firstname\": \"Mikhail\",\n    \"surname\": \"Sholokhov\",\n    \"motivation\": \"for the artistic power and integrity with which, in his epic of the Don, he has given expression to a historic phase in the life of the Russian people\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1965\"\n  },\n  {\n    \"id\": \"525\",\n    \"motivation\": \"for its effort to enhance solidarity between nations and reduce the difference between rich and poor states\",\n    \"share\": \"1\",\n    \"firstname\": \"United Nations Children's Fund\",\n    \"category\": \"peace\",\n    \"year\": \"1965\"\n  },\n  {\n    \"id\": \"84\",\n    \"firstname\": \"Sin-Itiro\",\n    \"surname\": \"Tomonaga\",\n    \"motivation\": \"for their fundamental work in quantum electrodynamics, with deep-ploughing consequences for the physics of elementary particles\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"1965\"\n  },\n  {\n    \"id\": \"85\",\n    \"firstname\": \"Julian\",\n    \"surname\": \"Schwinger\",\n    \"motivation\": \"for their fundamental work in quantum electrodynamics, with deep-ploughing consequences for the physics of elementary particles\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"1965\"\n  },\n  {\n    \"id\": \"86\",\n    \"firstname\": \"Richard P.\",\n    \"surname\": \"Feynman\",\n    \"motivation\": \"for their fundamental work in quantum electrodynamics, with deep-ploughing consequences for the physics of elementary particles\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"1965\"\n  },\n  {\n    \"id\": \"380\",\n    \"firstname\": \"François\",\n    \"surname\": \"Jacob\",\n    \"motivation\": \"for their discoveries concerning genetic control of enzyme and virus synthesis\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1965\"\n  },\n  {\n    \"id\": \"381\",\n    \"firstname\": \"André\",\n    \"surname\": \"Lwoff\",\n    \"motivation\": \"for their discoveries concerning genetic control of enzyme and virus synthesis\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1965\"\n  },\n  {\n    \"id\": \"382\",\n    \"firstname\": \"Jacques\",\n    \"surname\": \"Monod\",\n    \"motivation\": \"for their discoveries concerning genetic control of enzyme and virus synthesis\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1965\"\n  },\n  {\n    \"id\": \"230\",\n    \"firstname\": \"Dorothy Crowfoot\",\n    \"surname\": \"Hodgkin\",\n    \"motivation\": \"for her determinations by X-ray techniques of the structures of important biochemical substances\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1964\"\n  },\n  {\n    \"id\": \"637\",\n    \"firstname\": \"Jean-Paul\",\n    \"surname\": \"Sartre\",\n    \"motivation\": \"for his work which, rich in ideas and filled with the spirit of freedom and the quest for truth, has exerted a far-reaching influence on our age\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1964\"\n  },\n  {\n    \"id\": \"524\",\n    \"firstname\": \"Martin Luther\",\n    \"surname\": \"King Jr.\",\n    \"motivation\": \"for his non-violent struggle for civil rights for the Afro-American population\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"1964\"\n  },\n  {\n    \"id\": \"81\",\n    \"firstname\": \"Charles H.\",\n    \"surname\": \"Townes\",\n    \"motivation\": \"for fundamental work in the field of quantum electronics, which has led to the construction of oscillators and amplifiers based on the maser-laser principle\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1964\"\n  },\n  {\n    \"id\": \"82\",\n    \"firstname\": \"Nicolay G.\",\n    \"surname\": \"Basov\",\n    \"motivation\": \"for fundamental work in the field of quantum electronics, which has led to the construction of oscillators and amplifiers based on the maser-laser principle\",\n    \"share\": \"4\",\n    \"category\": \"physics\",\n    \"year\": \"1964\"\n  },\n  {\n    \"id\": \"83\",\n    \"firstname\": \"Aleksandr M.\",\n    \"surname\": \"Prokhorov\",\n    \"motivation\": \"for fundamental work in the field of quantum electronics, which has led to the construction of oscillators and amplifiers based on the maser-laser principle\",\n    \"share\": \"4\",\n    \"category\": \"physics\",\n    \"year\": \"1964\"\n  },\n  {\n    \"id\": \"378\",\n    \"firstname\": \"Konrad\",\n    \"surname\": \"Bloch\",\n    \"motivation\": \"for their discoveries concerning the mechanism and regulation of the cholesterol and fatty acid metabolism\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1964\"\n  },\n  {\n    \"id\": \"379\",\n    \"firstname\": \"Feodor\",\n    \"surname\": \"Lynen\",\n    \"motivation\": \"for their discoveries concerning the mechanism and regulation of the cholesterol and fatty acid metabolism\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1964\"\n  },\n  {\n    \"id\": \"228\",\n    \"firstname\": \"Karl\",\n    \"surname\": \"Ziegler\",\n    \"motivation\": \"for their discoveries in the field of the chemistry and technology of high polymers\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"1963\"\n  },\n  {\n    \"id\": \"229\",\n    \"firstname\": \"Giulio\",\n    \"surname\": \"Natta\",\n    \"motivation\": \"for their discoveries in the field of the chemistry and technology of high polymers\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"1963\"\n  },\n  {\n    \"id\": \"635\",\n    \"firstname\": \"Giorgos\",\n    \"surname\": \"Seferis\",\n    \"motivation\": \"for his eminent lyrical writing, inspired by a deep feeling for the Hellenic world of culture\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1963\"\n  },\n  {\n    \"id\": \"482\",\n    \"motivation\": \"for promoting the principles of the Geneva Convention and cooperation with the UN\",\n    \"share\": \"2\",\n    \"firstname\": \"International Committee of the Red Cross\",\n    \"category\": \"peace\",\n    \"year\": \"1963\"\n  },\n  {\n    \"id\": \"523\",\n    \"motivation\": \"for promoting the principles of the Geneva Convention and cooperation with the UN\",\n    \"share\": \"2\",\n    \"firstname\": \"League of Red Cross Societies\",\n    \"category\": \"peace\",\n    \"year\": \"1963\"\n  },\n  {\n    \"id\": \"78\",\n    \"firstname\": \"Eugene\",\n    \"surname\": \"Wigner\",\n    \"motivation\": \"for his contributions to the theory of the atomic nucleus and the elementary particles, particularly through the discovery and application of fundamental symmetry principles\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1963\"\n  },\n  {\n    \"id\": \"79\",\n    \"firstname\": \"Maria\",\n    \"surname\": \"Goeppert Mayer\",\n    \"motivation\": \"for their discoveries concerning nuclear shell structure\",\n    \"share\": \"4\",\n    \"category\": \"physics\",\n    \"year\": \"1963\"\n  },\n  {\n    \"id\": \"80\",\n    \"firstname\": \"J. Hans D.\",\n    \"surname\": \"Jensen\",\n    \"motivation\": \"for their discoveries concerning nuclear shell structure\",\n    \"share\": \"4\",\n    \"category\": \"physics\",\n    \"year\": \"1963\"\n  },\n  {\n    \"id\": \"375\",\n    \"firstname\": \"Sir John\",\n    \"surname\": \"Eccles\",\n    \"motivation\": \"for their discoveries concerning the ionic mechanisms involved in excitation and inhibition in the peripheral and central portions of the nerve cell membrane\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1963\"\n  },\n  {\n    \"id\": \"376\",\n    \"firstname\": \"Alan\",\n    \"surname\": \"Hodgkin\",\n    \"motivation\": \"for their discoveries concerning the ionic mechanisms involved in excitation and inhibition in the peripheral and central portions of the nerve cell membrane\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1963\"\n  },\n  {\n    \"id\": \"377\",\n    \"firstname\": \"Andrew\",\n    \"surname\": \"Huxley\",\n    \"motivation\": \"for their discoveries concerning the ionic mechanisms involved in excitation and inhibition in the peripheral and central portions of the nerve cell membrane\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1963\"\n  },\n  {\n    \"id\": \"226\",\n    \"firstname\": \"Max F.\",\n    \"surname\": \"Perutz\",\n    \"motivation\": \"for their studies of the structures of globular proteins\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"1962\"\n  },\n  {\n    \"id\": \"227\",\n    \"firstname\": \"John C.\",\n    \"surname\": \"Kendrew\",\n    \"motivation\": \"for their studies of the structures of globular proteins\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"1962\"\n  },\n  {\n    \"id\": \"634\",\n    \"firstname\": \"John\",\n    \"surname\": \"Steinbeck\",\n    \"motivation\": \"for his realistic and imaginative writings, combining as they do sympathetic humour and keen social perception\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1962\"\n  },\n  {\n    \"id\": \"217\",\n    \"firstname\": \"Linus\",\n    \"surname\": \"Pauling\",\n    \"motivation\": \"for his fight against the nuclear arms race between East and West\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"1962\"\n  },\n  {\n    \"id\": \"77\",\n    \"firstname\": \"Lev\",\n    \"surname\": \"Landau\",\n    \"motivation\": \"for his pioneering theories for condensed matter, especially liquid helium\",\n    \"share\": \"1\",\n    \"category\": \"physics\",\n    \"year\": \"1962\"\n  },\n  {\n    \"id\": \"372\",\n    \"firstname\": \"Francis\",\n    \"surname\": \"Crick\",\n    \"motivation\": \"for their discoveries concerning the molecular structure of nucleic acids and its significance for information transfer in living material\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1962\"\n  },\n  {\n    \"id\": \"373\",\n    \"firstname\": \"James\",\n    \"surname\": \"Watson\",\n    \"motivation\": \"for their discoveries concerning the molecular structure of nucleic acids and its significance for information transfer in living material\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1962\"\n  },\n  {\n    \"id\": \"374\",\n    \"firstname\": \"Maurice\",\n    \"surname\": \"Wilkins\",\n    \"motivation\": \"for their discoveries concerning the molecular structure of nucleic acids and its significance for information transfer in living material\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1962\"\n  },\n  {\n    \"id\": \"225\",\n    \"firstname\": \"Melvin\",\n    \"surname\": \"Calvin\",\n    \"motivation\": \"for his research on the carbon dioxide assimilation in plants\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1961\"\n  },\n  {\n    \"id\": \"633\",\n    \"firstname\": \"Ivo\",\n    \"surname\": \"Andrić\",\n    \"motivation\": \"for the epic force with which he has traced themes and depicted human destinies drawn from the history of his country\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1961\"\n  },\n  {\n    \"id\": \"520\",\n    \"firstname\": \"Dag\",\n    \"surname\": \"Hammarskjöld\",\n    \"motivation\": \"for developing the UN into an effective and constructive international organization, capable of giving life to the principles and aims expressed in the UN Charter\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"1961\"\n  },\n  {\n    \"id\": \"75\",\n    \"firstname\": \"Robert\",\n    \"surname\": \"Hofstadter\",\n    \"motivation\": \"for his pioneering studies of electron scattering in atomic nuclei and for his thereby achieved discoveries concerning the structure of the nucleons\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1961\"\n  },\n  {\n    \"id\": \"76\",\n    \"firstname\": \"Rudolf\",\n    \"surname\": \"Mössbauer\",\n    \"motivation\": \"for his researches concerning the resonance absorption of gamma radiation and his discovery in this connection of the effect which bears his name\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1961\"\n  },\n  {\n    \"id\": \"371\",\n    \"firstname\": \"Georg\",\n    \"surname\": \"von Békésy\",\n    \"motivation\": \"for his discoveries of the physical mechanism of stimulation within the cochlea\",\n    \"share\": \"1\",\n    \"category\": \"medicine\",\n    \"year\": \"1961\"\n  },\n  {\n    \"id\": \"224\",\n    \"firstname\": \"Willard F.\",\n    \"surname\": \"Libby\",\n    \"motivation\": \"for his method to use carbon-14 for age determination in archaeology, geology, geophysics, and other branches of science\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1960\"\n  },\n  {\n    \"id\": \"631\",\n    \"firstname\": \"Saint-John\",\n    \"surname\": \"Perse\",\n    \"motivation\": \"for the soaring flight and the evocative imagery of his poetry which in a visionary fashion reflects the conditions of our time\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1960\"\n  },\n  {\n    \"id\": \"519\",\n    \"firstname\": \"Albert\",\n    \"surname\": \"Lutuli\",\n    \"motivation\": \"for his non-violent struggle against apartheid\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"1960\"\n  },\n  {\n    \"id\": \"74\",\n    \"firstname\": \"Donald A.\",\n    \"surname\": \"Glaser\",\n    \"motivation\": \"for the invention of the bubble chamber\",\n    \"share\": \"1\",\n    \"category\": \"physics\",\n    \"year\": \"1960\"\n  },\n  {\n    \"id\": \"369\",\n    \"firstname\": \"Sir Frank Macfarlane\",\n    \"surname\": \"Burnet\",\n    \"motivation\": \"for discovery of acquired immunological tolerance\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1960\"\n  },\n  {\n    \"id\": \"370\",\n    \"firstname\": \"Peter\",\n    \"surname\": \"Medawar\",\n    \"motivation\": \"for discovery of acquired immunological tolerance\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1960\"\n  },\n  {\n    \"id\": \"223\",\n    \"firstname\": \"Jaroslav\",\n    \"surname\": \"Heyrovsky\",\n    \"motivation\": \"for his discovery and development of the polarographic methods of analysis\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1959\"\n  },\n  {\n    \"id\": \"630\",\n    \"firstname\": \"Salvatore\",\n    \"surname\": \"Quasimodo\",\n    \"motivation\": \"for his lyrical poetry, which with classical fire expresses the tragic experience of life in our own times\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1959\"\n  },\n  {\n    \"id\": \"518\",\n    \"firstname\": \"Philip\",\n    \"surname\": \"Noel-Baker\",\n    \"motivation\": \"for his longstanding contribution to the cause of disarmament and peace\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"1959\"\n  },\n  {\n    \"id\": \"72\",\n    \"firstname\": \"Emilio\",\n    \"surname\": \"Segrè\",\n    \"motivation\": \"for their discovery of the antiproton\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1959\"\n  },\n  {\n    \"id\": \"73\",\n    \"firstname\": \"Owen\",\n    \"surname\": \"Chamberlain\",\n    \"motivation\": \"for their discovery of the antiproton\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1959\"\n  },\n  {\n    \"id\": \"367\",\n    \"firstname\": \"Severo\",\n    \"surname\": \"Ochoa\",\n    \"motivation\": \"for their discovery of the mechanisms in the biological synthesis of ribonucleic acid and deoxyribonucleic acid\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1959\"\n  },\n  {\n    \"id\": \"368\",\n    \"firstname\": \"Arthur\",\n    \"surname\": \"Kornberg\",\n    \"motivation\": \"for their discovery of the mechanisms in the biological synthesis of ribonucleic acid and deoxyribonucleic acid\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1959\"\n  },\n  {\n    \"id\": \"222\",\n    \"firstname\": \"Frederick\",\n    \"surname\": \"Sanger\",\n    \"motivation\": \"for his work on the structure of proteins, especially that of insulin\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1958\"\n  },\n  {\n    \"id\": \"629\",\n    \"firstname\": \"Boris\",\n    \"surname\": \"Pasternak\",\n    \"motivation\": \"for his important achievement both in contemporary lyrical poetry and in the field of the great Russian epic tradition\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1958\"\n  },\n  {\n    \"id\": \"517\",\n    \"firstname\": \"Georges\",\n    \"surname\": \"Pire\",\n    \"motivation\": \"for his efforts to help refugees to leave their camps and return to a life of freedom and dignity\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"1958\"\n  },\n  {\n    \"id\": \"70\",\n    \"firstname\": \"Pavel A.\",\n    \"surname\": \"Cherenkov\",\n    \"motivation\": \"for the discovery and the interpretation of the Cherenkov effect\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"1958\"\n  },\n  {\n    \"id\": \"71\",\n    \"firstname\": \"Igor Y.\",\n    \"surname\": \"Tamm\",\n    \"motivation\": \"for the discovery and the interpretation of the Cherenkov effect\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"1958\"\n  },\n  {\n    \"id\": \"721\",\n    \"firstname\": \"Il´ja M.\",\n    \"surname\": \"Frank\",\n    \"motivation\": \"for the discovery and the interpretation of the Cherenkov effect\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"1958\"\n  },\n  {\n    \"id\": \"364\",\n    \"firstname\": \"George\",\n    \"surname\": \"Beadle\",\n    \"motivation\": \"for their discovery that genes act by regulating definite chemical events\",\n    \"share\": \"4\",\n    \"category\": \"medicine\",\n    \"year\": \"1958\"\n  },\n  {\n    \"id\": \"365\",\n    \"firstname\": \"Edward\",\n    \"surname\": \"Tatum\",\n    \"motivation\": \"for their discovery that genes act by regulating definite chemical events\",\n    \"share\": \"4\",\n    \"category\": \"medicine\",\n    \"year\": \"1958\"\n  },\n  {\n    \"id\": \"366\",\n    \"firstname\": \"Joshua\",\n    \"surname\": \"Lederberg\",\n    \"motivation\": \"for his discoveries concerning genetic recombination and the organization of the genetic material of bacteria\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1958\"\n  },\n  {\n    \"id\": \"221\",\n    \"firstname\": \"Lord\",\n    \"surname\": \"Todd\",\n    \"motivation\": \"for his work on nucleotides and nucleotide co-enzymes\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1957\"\n  },\n  {\n    \"id\": \"628\",\n    \"firstname\": \"Albert\",\n    \"surname\": \"Camus\",\n    \"motivation\": \"for his important literary production, which with clear-sighted earnestness illuminates the problems of the human conscience in our times\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1957\"\n  },\n  {\n    \"id\": \"516\",\n    \"firstname\": \"Lester Bowles\",\n    \"surname\": \"Pearson\",\n    \"motivation\": \"for his crucial contribution to the deployment of a United Nations Emergency Force in the wake of the Suez Crisis\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"1957\"\n  },\n  {\n    \"id\": \"68\",\n    \"firstname\": \"Chen Ning\",\n    \"surname\": \"Yang\",\n    \"motivation\": \"for their penetrating investigation of the so-called parity laws which has led to important discoveries regarding the elementary particles\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1957\"\n  },\n  {\n    \"id\": \"69\",\n    \"firstname\": \"Tsung-Dao\",\n    \"surname\": \"Lee\",\n    \"motivation\": \"for their penetrating investigation of the so-called parity laws which has led to important discoveries regarding the elementary particles\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1957\"\n  },\n  {\n    \"id\": \"363\",\n    \"firstname\": \"Daniel\",\n    \"surname\": \"Bovet\",\n    \"motivation\": \"for his discoveries relating to synthetic compounds that inhibit the action of certain body substances, and especially their action on the vascular system and the skeletal muscles\",\n    \"share\": \"1\",\n    \"category\": \"medicine\",\n    \"year\": \"1957\"\n  },\n  {\n    \"id\": \"219\",\n    \"firstname\": \"Sir Cyril\",\n    \"surname\": \"Hinshelwood\",\n    \"motivation\": \"for their researches into the mechanism of chemical reactions\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"1956\"\n  },\n  {\n    \"id\": \"220\",\n    \"firstname\": \"Nikolay\",\n    \"surname\": \"Semenov\",\n    \"motivation\": \"for their researches into the mechanism of chemical reactions\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"1956\"\n  },\n  {\n    \"id\": \"627\",\n    \"firstname\": \"Juan Ramón\",\n    \"surname\": \"Jiménez\",\n    \"motivation\": \"for his lyrical poetry, which in Spanish language constitutes an example of high spirit and artistical purity\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1956\"\n  },\n  {\n    \"id\": \"65\",\n    \"firstname\": \"William B.\",\n    \"surname\": \"Shockley\",\n    \"motivation\": \"for their researches on semiconductors and their discovery of the transistor effect\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"1956\"\n  },\n  {\n    \"id\": \"66\",\n    \"firstname\": \"John\",\n    \"surname\": \"Bardeen\",\n    \"motivation\": \"for their researches on semiconductors and their discovery of the transistor effect\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"1956\"\n  },\n  {\n    \"id\": \"67\",\n    \"firstname\": \"Walter H.\",\n    \"surname\": \"Brattain\",\n    \"motivation\": \"for their researches on semiconductors and their discovery of the transistor effect\",\n    \"share\": \"3\",\n    \"category\": \"physics\",\n    \"year\": \"1956\"\n  },\n  {\n    \"id\": \"360\",\n    \"firstname\": \"André F.\",\n    \"surname\": \"Cournand\",\n    \"motivation\": \"for their discoveries concerning heart catheterization and pathological changes in the circulatory system\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1956\"\n  },\n  {\n    \"id\": \"361\",\n    \"firstname\": \"Werner\",\n    \"surname\": \"Forssmann\",\n    \"motivation\": \"for their discoveries concerning heart catheterization and pathological changes in the circulatory system\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1956\"\n  },\n  {\n    \"id\": \"362\",\n    \"firstname\": \"Dickinson W.\",\n    \"surname\": \"Richards\",\n    \"motivation\": \"for their discoveries concerning heart catheterization and pathological changes in the circulatory system\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1956\"\n  },\n  {\n    \"id\": \"218\",\n    \"firstname\": \"Vincent\",\n    \"surname\": \"du Vigneaud\",\n    \"motivation\": \"for his work on biochemically important sulphur compounds, especially for the first synthesis of a polypeptide hormone\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1955\"\n  },\n  {\n    \"id\": \"626\",\n    \"firstname\": \"Halldór\",\n    \"surname\": \"Laxness\",\n    \"motivation\": \"for his vivid epic power which has renewed the great narrative art of Iceland\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1955\"\n  },\n  {\n    \"id\": \"63\",\n    \"firstname\": \"Willis E.\",\n    \"surname\": \"Lamb\",\n    \"motivation\": \"for his discoveries concerning the fine structure of the hydrogen spectrum\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1955\"\n  },\n  {\n    \"id\": \"64\",\n    \"firstname\": \"Polykarp\",\n    \"surname\": \"Kusch\",\n    \"motivation\": \"for his precision determination of the magnetic moment of the electron\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1955\"\n  },\n  {\n    \"id\": \"359\",\n    \"firstname\": \"Hugo\",\n    \"surname\": \"Theorell\",\n    \"motivation\": \"for his discoveries concerning the nature and mode of action of oxidation enzymes\",\n    \"share\": \"1\",\n    \"category\": \"medicine\",\n    \"year\": \"1955\"\n  },\n  {\n    \"id\": \"217\",\n    \"firstname\": \"Linus\",\n    \"surname\": \"Pauling\",\n    \"motivation\": \"for his research into the nature of the chemical bond and its application to the elucidation of the structure of complex substances\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1954\"\n  },\n  {\n    \"id\": \"625\",\n    \"firstname\": \"Ernest\",\n    \"surname\": \"Hemingway\",\n    \"motivation\": \"for his mastery of the art of narrative, most recently demonstrated in <I>The Old Man and the Sea,</I> and for the influence that he has exerted on contemporary style\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1954\"\n  },\n  {\n    \"id\": \"515\",\n    \"motivation\": \"for its efforts to heal the wounds of war by providing help and protection to refugees all over the world\",\n    \"share\": \"1\",\n    \"firstname\": \"Office of the United Nations High Commissioner for Refugees\",\n    \"category\": \"peace\",\n    \"year\": \"1954\"\n  },\n  {\n    \"id\": \"61\",\n    \"firstname\": \"Max\",\n    \"surname\": \"Born\",\n    \"motivation\": \"for his fundamental research in quantum mechanics, especially for his statistical interpretation of the wavefunction\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1954\"\n  },\n  {\n    \"id\": \"62\",\n    \"firstname\": \"Walther\",\n    \"surname\": \"Bothe\",\n    \"motivation\": \"for the coincidence method and his discoveries made therewith\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1954\"\n  },\n  {\n    \"id\": \"356\",\n    \"firstname\": \"John F.\",\n    \"surname\": \"Enders\",\n    \"motivation\": \"for their discovery of the ability of poliomyelitis viruses to grow in cultures of various types of tissue\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1954\"\n  },\n  {\n    \"id\": \"357\",\n    \"firstname\": \"Thomas H.\",\n    \"surname\": \"Weller\",\n    \"motivation\": \"for their discovery of the ability of poliomyelitis viruses to grow in cultures of various types of tissue\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1954\"\n  },\n  {\n    \"id\": \"358\",\n    \"firstname\": \"Frederick C.\",\n    \"surname\": \"Robbins\",\n    \"motivation\": \"for their discovery of the ability of poliomyelitis viruses to grow in cultures of various types of tissue\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1954\"\n  },\n  {\n    \"id\": \"216\",\n    \"firstname\": \"Hermann\",\n    \"surname\": \"Staudinger\",\n    \"motivation\": \"for his discoveries in the field of macromolecular chemistry\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1953\"\n  },\n  {\n    \"id\": \"624\",\n    \"firstname\": \"Winston\",\n    \"surname\": \"Churchill\",\n    \"motivation\": \"for his mastery of historical and biographical description as well as for brilliant oratory in defending exalted human values\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1953\"\n  },\n  {\n    \"id\": \"514\",\n    \"firstname\": \"George C.\",\n    \"surname\": \"Marshall\",\n    \"motivation\": \"for proposing and supervising the plan for the economic recovery of Europe\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"1953\"\n  },\n  {\n    \"id\": \"60\",\n    \"firstname\": \"Frits\",\n    \"surname\": \"Zernike\",\n    \"motivation\": \"for his demonstration of the phase contrast method, especially for his invention of the phase contrast microscope\",\n    \"share\": \"1\",\n    \"category\": \"physics\",\n    \"year\": \"1953\"\n  },\n  {\n    \"id\": \"354\",\n    \"firstname\": \"Hans\",\n    \"surname\": \"Krebs\",\n    \"motivation\": \"for his discovery of the citric acid cycle\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1953\"\n  },\n  {\n    \"id\": \"355\",\n    \"firstname\": \"Fritz\",\n    \"surname\": \"Lipmann\",\n    \"motivation\": \"for his discovery of co-enzyme A and its importance for intermediary metabolism\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1953\"\n  },\n  {\n    \"id\": \"214\",\n    \"firstname\": \"Archer J.P.\",\n    \"surname\": \"Martin\",\n    \"motivation\": \"for their invention of partition chromatography\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"1952\"\n  },\n  {\n    \"id\": \"215\",\n    \"firstname\": \"Richard L.M.\",\n    \"surname\": \"Synge\",\n    \"motivation\": \"for their invention of partition chromatography\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"1952\"\n  },\n  {\n    \"id\": \"623\",\n    \"firstname\": \"François\",\n    \"surname\": \"Mauriac\",\n    \"motivation\": \"for the deep spiritual insight and the artistic intensity with which he has in his novels penetrated the drama of human life\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1952\"\n  },\n  {\n    \"id\": \"513\",\n    \"firstname\": \"Albert\",\n    \"surname\": \"Schweitzer\",\n    \"motivation\": \"for his altruism, reverence for life, and tireless humanitarian work which has helped making the idea of brotherhood between men and nations a living one\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"1952\"\n  },\n  {\n    \"id\": \"58\",\n    \"firstname\": \"Felix\",\n    \"surname\": \"Bloch\",\n    \"motivation\": \"for their development of new methods for nuclear magnetic precision measurements and discoveries in connection therewith\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1952\"\n  },\n  {\n    \"id\": \"59\",\n    \"firstname\": \"E. M.\",\n    \"surname\": \"Purcell\",\n    \"motivation\": \"for their development of new methods for nuclear magnetic precision measurements and discoveries in connection therewith\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1952\"\n  },\n  {\n    \"id\": \"353\",\n    \"firstname\": \"Selman A.\",\n    \"surname\": \"Waksman\",\n    \"motivation\": \"for his discovery of streptomycin, the first antibiotic effective against tuberculosis\",\n    \"share\": \"1\",\n    \"category\": \"medicine\",\n    \"year\": \"1952\"\n  },\n  {\n    \"id\": \"212\",\n    \"firstname\": \"Edwin M.\",\n    \"surname\": \"McMillan\",\n    \"motivation\": \"for their discoveries in the chemistry of the transuranium elements\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"1951\"\n  },\n  {\n    \"id\": \"213\",\n    \"firstname\": \"Glenn T.\",\n    \"surname\": \"Seaborg\",\n    \"motivation\": \"for their discoveries in the chemistry of the transuranium elements\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"1951\"\n  },\n  {\n    \"id\": \"622\",\n    \"firstname\": \"Pär\",\n    \"surname\": \"Lagerkvist\",\n    \"motivation\": \"for the artistic vigour and true independence of mind with which he endeavours in his poetry to find answers to the eternal questions confronting mankind\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1951\"\n  },\n  {\n    \"id\": \"512\",\n    \"firstname\": \"Léon\",\n    \"surname\": \"Jouhaux\",\n    \"motivation\": \"for having devoted his life to the fight against war through the promotion of social justice and brotherhood among men and nations\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"1951\"\n  },\n  {\n    \"id\": \"56\",\n    \"firstname\": \"John\",\n    \"surname\": \"Cockcroft\",\n    \"motivation\": \"for their pioneer work on the transmutation of atomic nuclei by artificially accelerated atomic particles\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1951\"\n  },\n  {\n    \"id\": \"57\",\n    \"firstname\": \"Ernest T.S.\",\n    \"surname\": \"Walton\",\n    \"motivation\": \"for their pioneer work on the transmutation of atomic nuclei by artificially accelerated atomic particles\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1951\"\n  },\n  {\n    \"id\": \"352\",\n    \"firstname\": \"Max\",\n    \"surname\": \"Theiler\",\n    \"motivation\": \"for his discoveries concerning yellow fever and how to combat it\",\n    \"share\": \"1\",\n    \"category\": \"medicine\",\n    \"year\": \"1951\"\n  },\n  {\n    \"id\": \"210\",\n    \"firstname\": \"Otto\",\n    \"surname\": \"Diels\",\n    \"motivation\": \"for their discovery and development of the diene synthesis\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"1950\"\n  },\n  {\n    \"id\": \"211\",\n    \"firstname\": \"Kurt\",\n    \"surname\": \"Alder\",\n    \"motivation\": \"for their discovery and development of the diene synthesis\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"1950\"\n  },\n  {\n    \"id\": \"621\",\n    \"firstname\": \"Bertrand\",\n    \"surname\": \"Russell\",\n    \"motivation\": \"in recognition of his varied and significant writings in which he champions humanitarian ideals and freedom of thought\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1950\"\n  },\n  {\n    \"id\": \"511\",\n    \"firstname\": \"Ralph\",\n    \"surname\": \"Bunche\",\n    \"motivation\": \"for his work as mediator in Palestine in 1948-1949\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"1950\"\n  },\n  {\n    \"id\": \"55\",\n    \"firstname\": \"Cecil\",\n    \"surname\": \"Powell\",\n    \"motivation\": \"for his development of the photographic method of studying nuclear processes and his discoveries regarding mesons made with this method\",\n    \"share\": \"1\",\n    \"category\": \"physics\",\n    \"year\": \"1950\"\n  },\n  {\n    \"id\": \"349\",\n    \"firstname\": \"Edward C.\",\n    \"surname\": \"Kendall\",\n    \"motivation\": \"for their discoveries relating to the hormones of the adrenal cortex, their structure and biological effects\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1950\"\n  },\n  {\n    \"id\": \"350\",\n    \"firstname\": \"Tadeus\",\n    \"surname\": \"Reichstein\",\n    \"motivation\": \"for their discoveries relating to the hormones of the adrenal cortex, their structure and biological effects\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1950\"\n  },\n  {\n    \"id\": \"351\",\n    \"firstname\": \"Philip S.\",\n    \"surname\": \"Hench\",\n    \"motivation\": \"for their discoveries relating to the hormones of the adrenal cortex, their structure and biological effects\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1950\"\n  },\n  {\n    \"id\": \"209\",\n    \"firstname\": \"William F.\",\n    \"surname\": \"Giauque\",\n    \"motivation\": \"for his contributions in the field of chemical thermodynamics, particularly concerning the behaviour of substances at extremely low temperatures\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1949\"\n  },\n  {\n    \"id\": \"620\",\n    \"firstname\": \"William\",\n    \"surname\": \"Faulkner\",\n    \"motivation\": \"for his powerful and artistically unique contribution to the modern American novel\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1949\"\n  },\n  {\n    \"id\": \"510\",\n    \"firstname\": \"John\",\n    \"surname\": \"Boyd Orr\",\n    \"motivation\": \"for his lifelong effort to conquer hunger and want, thereby helping to remove a major cause of military conflict and war\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"1949\"\n  },\n  {\n    \"id\": \"54\",\n    \"firstname\": \"Hideki\",\n    \"surname\": \"Yukawa\",\n    \"motivation\": \"for his prediction of the existence of mesons on the basis of theoretical work on nuclear forces\",\n    \"share\": \"1\",\n    \"category\": \"physics\",\n    \"year\": \"1949\"\n  },\n  {\n    \"id\": \"347\",\n    \"firstname\": \"Walter\",\n    \"surname\": \"Hess\",\n    \"motivation\": \"for his discovery of the functional organization of the interbrain as a coordinator of the activities of the internal organs\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1949\"\n  },\n  {\n    \"id\": \"348\",\n    \"firstname\": \"Egas\",\n    \"surname\": \"Moniz\",\n    \"motivation\": \"for his discovery of the therapeutic value of leucotomy in certain psychoses\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1949\"\n  },\n  {\n    \"id\": \"208\",\n    \"firstname\": \"Arne\",\n    \"surname\": \"Tiselius\",\n    \"motivation\": \"for his research on electrophoresis and adsorption analysis, especially for his discoveries concerning the complex nature of the serum proteins\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1948\"\n  },\n  {\n    \"id\": \"619\",\n    \"firstname\": \"T.S.\",\n    \"surname\": \"Eliot\",\n    \"motivation\": \"for his outstanding, pioneer contribution to present-day poetry\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1948\"\n  },\n  {\n    \"id\": \"53\",\n    \"firstname\": \"Patrick M.S.\",\n    \"surname\": \"Blackett\",\n    \"motivation\": \"for his development of the Wilson cloud chamber method, and his discoveries therewith in the fields of nuclear physics and cosmic radiation\",\n    \"share\": \"1\",\n    \"category\": \"physics\",\n    \"year\": \"1948\"\n  },\n  {\n    \"id\": \"346\",\n    \"firstname\": \"Paul\",\n    \"surname\": \"Müller\",\n    \"motivation\": \"for his discovery of the high efficiency of DDT as a contact poison against several arthropods\",\n    \"share\": \"1\",\n    \"category\": \"medicine\",\n    \"year\": \"1948\"\n  },\n  {\n    \"id\": \"207\",\n    \"firstname\": \"Sir Robert\",\n    \"surname\": \"Robinson\",\n    \"motivation\": \"for his investigations on plant products of biological importance, especially the alkaloids\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1947\"\n  },\n  {\n    \"id\": \"618\",\n    \"firstname\": \"André\",\n    \"surname\": \"Gide\",\n    \"motivation\": \"for his comprehensive and artistically significant writings, in which human problems and conditions have been presented with a fearless love of truth and keen psychological insight\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1947\"\n  },\n  {\n    \"id\": \"508\",\n    \"motivation\": \"for their pioneering work in the international peace movement and compassionate effort to relieve human suffering, thereby promoting the fraternity between nations\",\n    \"share\": \"2\",\n    \"firstname\": \"Friends Service Council\",\n    \"category\": \"peace\",\n    \"year\": \"1947\"\n  },\n  {\n    \"id\": \"509\",\n    \"motivation\": \"for their pioneering work in the international peace movement and compassionate effort to relieve human suffering, thereby promoting the fraternity between nations\",\n    \"share\": \"2\",\n    \"firstname\": \"American Friends Service Committee\",\n    \"category\": \"peace\",\n    \"year\": \"1947\"\n  },\n  {\n    \"id\": \"52\",\n    \"firstname\": \"Edward V.\",\n    \"surname\": \"Appleton\",\n    \"motivation\": \"for his investigations of the physics of the upper atmosphere especially for the discovery of the so-called Appleton layer\",\n    \"share\": \"1\",\n    \"category\": \"physics\",\n    \"year\": \"1947\"\n  },\n  {\n    \"id\": \"343\",\n    \"firstname\": \"Carl\",\n    \"surname\": \"Cori\",\n    \"motivation\": \"for their discovery of the course of the catalytic conversion of glycogen\",\n    \"share\": \"4\",\n    \"category\": \"medicine\",\n    \"year\": \"1947\"\n  },\n  {\n    \"id\": \"344\",\n    \"firstname\": \"Gerty\",\n    \"surname\": \"Cori\",\n    \"motivation\": \"for their discovery of the course of the catalytic conversion of glycogen\",\n    \"share\": \"4\",\n    \"category\": \"medicine\",\n    \"year\": \"1947\"\n  },\n  {\n    \"id\": \"345\",\n    \"firstname\": \"Bernardo\",\n    \"surname\": \"Houssay\",\n    \"motivation\": \"for his discovery of the part played by the hormone of the anterior pituitary lobe in the metabolism of sugar\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1947\"\n  },\n  {\n    \"id\": \"204\",\n    \"firstname\": \"James B.\",\n    \"surname\": \"Sumner\",\n    \"motivation\": \"for his discovery that enzymes can be crystallized\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"1946\"\n  },\n  {\n    \"id\": \"205\",\n    \"firstname\": \"John H.\",\n    \"surname\": \"Northrop\",\n    \"motivation\": \"for their preparation of enzymes and virus proteins in a pure form\",\n    \"share\": \"4\",\n    \"category\": \"chemistry\",\n    \"year\": \"1946\"\n  },\n  {\n    \"id\": \"206\",\n    \"firstname\": \"Wendell M.\",\n    \"surname\": \"Stanley\",\n    \"motivation\": \"for their preparation of enzymes and virus proteins in a pure form\",\n    \"share\": \"4\",\n    \"category\": \"chemistry\",\n    \"year\": \"1946\"\n  },\n  {\n    \"id\": \"617\",\n    \"firstname\": \"Hermann\",\n    \"surname\": \"Hesse\",\n    \"motivation\": \"for his inspired writings which, while growing in boldness and penetration, exemplify the classical humanitarian ideals and high qualities of style\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1946\"\n  },\n  {\n    \"id\": \"506\",\n    \"firstname\": \"Emily Greene\",\n    \"surname\": \"Balch\",\n    \"motivation\": \"for her lifelong work for the cause of peace\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"1946\"\n  },\n  {\n    \"id\": \"507\",\n    \"firstname\": \"John R.\",\n    \"surname\": \"Mott\",\n    \"motivation\": \"for his contribution to the creation of a peace-promoting religious brotherhood across national boundaries\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"1946\"\n  },\n  {\n    \"id\": \"51\",\n    \"firstname\": \"Percy W.\",\n    \"surname\": \"Bridgman\",\n    \"motivation\": \"for the invention of an apparatus to produce extremely high pressures, and for the discoveries he made therewith in the field of high pressure physics\",\n    \"share\": \"1\",\n    \"category\": \"physics\",\n    \"year\": \"1946\"\n  },\n  {\n    \"id\": \"342\",\n    \"firstname\": \"Hermann J.\",\n    \"surname\": \"Muller\",\n    \"motivation\": \"for the discovery of the production of mutations by means of X-ray irradiation\",\n    \"share\": \"1\",\n    \"category\": \"medicine\",\n    \"year\": \"1946\"\n  },\n  {\n    \"id\": \"203\",\n    \"firstname\": \"Artturi\",\n    \"surname\": \"Virtanen\",\n    \"motivation\": \"for his research and inventions in agricultural and nutrition chemistry, especially for his fodder preservation method\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1945\"\n  },\n  {\n    \"id\": \"615\",\n    \"firstname\": \"Gabriela\",\n    \"surname\": \"Mistral\",\n    \"motivation\": \"for her lyric poetry which, inspired by powerful emotions, has made her name a symbol of the idealistic aspirations of the entire Latin American world\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1945\"\n  },\n  {\n    \"id\": \"505\",\n    \"firstname\": \"Cordell\",\n    \"surname\": \"Hull\",\n    \"motivation\": \"for his indefatigable work for international understanding and his pivotal role in establishing the United Nations\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"1945\"\n  },\n  {\n    \"id\": \"50\",\n    \"firstname\": \"Wolfgang\",\n    \"surname\": \"Pauli\",\n    \"motivation\": \"for the discovery of the Exclusion Principle, also called the Pauli Principle\",\n    \"share\": \"1\",\n    \"category\": \"physics\",\n    \"year\": \"1945\"\n  },\n  {\n    \"id\": \"339\",\n    \"firstname\": \"Sir Alexander\",\n    \"surname\": \"Fleming\",\n    \"motivation\": \"for the discovery of penicillin and its curative effect in various infectious diseases\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1945\"\n  },\n  {\n    \"id\": \"340\",\n    \"firstname\": \"Ernst B.\",\n    \"surname\": \"Chain\",\n    \"motivation\": \"for the discovery of penicillin and its curative effect in various infectious diseases\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1945\"\n  },\n  {\n    \"id\": \"341\",\n    \"firstname\": \"Sir Howard\",\n    \"surname\": \"Florey\",\n    \"motivation\": \"for the discovery of penicillin and its curative effect in various infectious diseases\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1945\"\n  },\n  {\n    \"id\": \"202\",\n    \"firstname\": \"Otto\",\n    \"surname\": \"Hahn\",\n    \"motivation\": \"for his discovery of the fission of heavy nuclei\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1944\"\n  },\n  {\n    \"id\": \"614\",\n    \"firstname\": \"Johannes V.\",\n    \"surname\": \"Jensen\",\n    \"motivation\": \"for the rare strength and fertility of his poetic imagination with which is combined an intellectual curiosity of wide scope and a bold, freshly creative style\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1944\"\n  },\n  {\n    \"id\": \"482\",\n    \"motivation\": \"for the great work it has performed during the war on behalf of humanity\",\n    \"share\": \"1\",\n    \"firstname\": \"International Committee of the Red Cross\",\n    \"category\": \"peace\",\n    \"year\": \"1944\"\n  },\n  {\n    \"id\": \"49\",\n    \"firstname\": \"Isidor Isaac\",\n    \"surname\": \"Rabi\",\n    \"motivation\": \"for his resonance method for recording the magnetic properties of atomic nuclei\",\n    \"share\": \"1\",\n    \"category\": \"physics\",\n    \"year\": \"1944\"\n  },\n  {\n    \"id\": \"337\",\n    \"firstname\": \"Joseph\",\n    \"surname\": \"Erlanger\",\n    \"motivation\": \"for their discoveries relating to the highly differentiated functions of single nerve fibres\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1944\"\n  },\n  {\n    \"id\": \"338\",\n    \"firstname\": \"Herbert S.\",\n    \"surname\": \"Gasser\",\n    \"motivation\": \"for their discoveries relating to the highly differentiated functions of single nerve fibres\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1944\"\n  },\n  {\n    \"id\": \"201\",\n    \"firstname\": \"George\",\n    \"surname\": \"de Hevesy\",\n    \"motivation\": \"for his work on the use of isotopes as tracers in the study of chemical processes\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1943\"\n  },\n  {\n    \"id\": \"48\",\n    \"firstname\": \"Otto\",\n    \"surname\": \"Stern\",\n    \"motivation\": \"for his contribution to the development of the molecular ray method and his discovery of the magnetic moment of the proton\",\n    \"share\": \"1\",\n    \"category\": \"physics\",\n    \"year\": \"1943\"\n  },\n  {\n    \"id\": \"335\",\n    \"firstname\": \"Henrik\",\n    \"surname\": \"Dam\",\n    \"motivation\": \"for his discovery of vitamin K\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1943\"\n  },\n  {\n    \"id\": \"336\",\n    \"firstname\": \"Edward A.\",\n    \"surname\": \"Doisy\",\n    \"motivation\": \"for his discovery of the chemical nature of vitamin K\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1943\"\n  },\n  {\n    \"id\": \"199\",\n    \"firstname\": \"Adolf\",\n    \"surname\": \"Butenandt\",\n    \"motivation\": \"for his work on sex hormones\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"1939\"\n  },\n  {\n    \"id\": \"200\",\n    \"firstname\": \"Leopold\",\n    \"surname\": \"Ruzicka\",\n    \"motivation\": \"for his work on polymethylenes and higher terpenes\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"1939\"\n  },\n  {\n    \"id\": \"613\",\n    \"firstname\": \"Frans Eemil\",\n    \"surname\": \"Sillanpää\",\n    \"motivation\": \"for his deep understanding of his country's peasantry and the exquisite art with which he has portrayed their way of life and their relationship with Nature\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1939\"\n  },\n  {\n    \"id\": \"47\",\n    \"firstname\": \"Ernest\",\n    \"surname\": \"Lawrence\",\n    \"motivation\": \"for the invention and development of the cyclotron and for results obtained with it, especially with regard to artificial radioactive elements\",\n    \"share\": \"1\",\n    \"category\": \"physics\",\n    \"year\": \"1939\"\n  },\n  {\n    \"id\": \"334\",\n    \"firstname\": \"Gerhard\",\n    \"surname\": \"Domagk\",\n    \"motivation\": \"for the discovery of the antibacterial effects of prontosil\",\n    \"share\": \"1\",\n    \"category\": \"medicine\",\n    \"year\": \"1939\"\n  },\n  {\n    \"id\": \"198\",\n    \"firstname\": \"Richard\",\n    \"surname\": \"Kuhn\",\n    \"motivation\": \"for his work on carotenoids and vitamins\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1938\"\n  },\n  {\n    \"id\": \"610\",\n    \"firstname\": \"Pearl\",\n    \"surname\": \"Buck\",\n    \"motivation\": \"for her rich and truly epic descriptions of peasant life in China and for her biographical masterpieces\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1938\"\n  },\n  {\n    \"id\": \"503\",\n    \"motivation\": \"for having carried on the work of Fridtjof Nansen to the benefit of refugees across Europe\",\n    \"share\": \"1\",\n    \"firstname\": \"Nansen International Office for Refugees\",\n    \"category\": \"peace\",\n    \"year\": \"1938\"\n  },\n  {\n    \"id\": \"46\",\n    \"firstname\": \"Enrico\",\n    \"surname\": \"Fermi\",\n    \"motivation\": \"for his demonstrations of the existence of new radioactive elements produced by neutron irradiation, and for his related discovery of nuclear reactions brought about by slow neutrons\",\n    \"share\": \"1\",\n    \"category\": \"physics\",\n    \"year\": \"1938\"\n  },\n  {\n    \"id\": \"333\",\n    \"firstname\": \"Corneille\",\n    \"surname\": \"Heymans\",\n    \"motivation\": \"for the discovery of the role played by the sinus and aortic mechanisms in the regulation of respiration\",\n    \"share\": \"1\",\n    \"category\": \"medicine\",\n    \"year\": \"1938\"\n  },\n  {\n    \"id\": \"196\",\n    \"firstname\": \"Norman\",\n    \"surname\": \"Haworth\",\n    \"motivation\": \"for his investigations on carbohydrates and vitamin C\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"1937\"\n  },\n  {\n    \"id\": \"197\",\n    \"firstname\": \"Paul\",\n    \"surname\": \"Karrer\",\n    \"motivation\": \"for his investigations on carotenoids, flavins and vitamins A and B2\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"1937\"\n  },\n  {\n    \"id\": \"609\",\n    \"firstname\": \"Roger\",\n    \"surname\": \"Martin du Gard\",\n    \"motivation\": \"for the artistic power and truth with which he has depicted human conflict as well as some fundamental aspects of contemporary life in his novel-cycle <I>Les Thibault</I>\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1937\"\n  },\n  {\n    \"id\": \"502\",\n    \"firstname\": \"Robert\",\n    \"surname\": \"Cecil\",\n    \"motivation\": \"for his tireless effort in support of the League of Nations, disarmament and peace\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"1937\"\n  },\n  {\n    \"id\": \"44\",\n    \"firstname\": \"Clinton\",\n    \"surname\": \"Davisson\",\n    \"motivation\": \"for their experimental discovery of the diffraction of electrons by crystals\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1937\"\n  },\n  {\n    \"id\": \"45\",\n    \"firstname\": \"George Paget\",\n    \"surname\": \"Thomson\",\n    \"motivation\": \"for their experimental discovery of the diffraction of electrons by crystals\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1937\"\n  },\n  {\n    \"id\": \"332\",\n    \"firstname\": \"Albert\",\n    \"surname\": \"Szent-Györgyi\",\n    \"motivation\": \"for his discoveries in connection with the biological combustion processes, with special reference to vitamin C and the catalysis of fumaric acid\",\n    \"share\": \"1\",\n    \"category\": \"medicine\",\n    \"year\": \"1937\"\n  },\n  {\n    \"id\": \"195\",\n    \"firstname\": \"Peter\",\n    \"surname\": \"Debye\",\n    \"motivation\": \"for his contributions to our knowledge of molecular structure through his investigations on dipole moments and on the diffraction of X-rays and electrons in gases\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1936\"\n  },\n  {\n    \"id\": \"608\",\n    \"firstname\": \"Eugene\",\n    \"surname\": \"O'Neill\",\n    \"motivation\": \"for the power, honesty and deep-felt emotions of his dramatic works, which embody an original concept of tragedy\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1936\"\n  },\n  {\n    \"id\": \"501\",\n    \"firstname\": \"Carlos\",\n    \"surname\": \"Saavedra Lamas\",\n    \"motivation\": \"for his role as father of the Argentine Antiwar Pact of 1933, which he also used as a means to mediate peace between Paraguay and Bolivia in 1935\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"1936\"\n  },\n  {\n    \"id\": \"42\",\n    \"firstname\": \"Victor F.\",\n    \"surname\": \"Hess\",\n    \"motivation\": \"for his discovery of cosmic radiation\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1936\"\n  },\n  {\n    \"id\": \"43\",\n    \"firstname\": \"Carl D.\",\n    \"surname\": \"Anderson\",\n    \"motivation\": \"for his discovery of the positron\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1936\"\n  },\n  {\n    \"id\": \"330\",\n    \"firstname\": \"Sir Henry\",\n    \"surname\": \"Dale\",\n    \"motivation\": \"for their discoveries relating to chemical transmission of nerve impulses\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1936\"\n  },\n  {\n    \"id\": \"331\",\n    \"firstname\": \"Otto\",\n    \"surname\": \"Loewi\",\n    \"motivation\": \"for their discoveries relating to chemical transmission of nerve impulses\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1936\"\n  },\n  {\n    \"id\": \"193\",\n    \"firstname\": \"Frédéric\",\n    \"surname\": \"Joliot\",\n    \"motivation\": \"in recognition of their synthesis of new radioactive elements\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"1935\"\n  },\n  {\n    \"id\": \"194\",\n    \"firstname\": \"Irène\",\n    \"surname\": \"Joliot-Curie\",\n    \"motivation\": \"in recognition of their synthesis of new radioactive elements\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"1935\"\n  },\n  {\n    \"id\": \"500\",\n    \"firstname\": \"Carl\",\n    \"surname\": \"von Ossietzky\",\n    \"motivation\": \"for his burning love for freedom of thought and expression and his valuable contribution to the cause of peace\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"1935\"\n  },\n  {\n    \"id\": \"41\",\n    \"firstname\": \"James\",\n    \"surname\": \"Chadwick\",\n    \"motivation\": \"for the discovery of the neutron\",\n    \"share\": \"1\",\n    \"category\": \"physics\",\n    \"year\": \"1935\"\n  },\n  {\n    \"id\": \"329\",\n    \"firstname\": \"Hans\",\n    \"surname\": \"Spemann\",\n    \"motivation\": \"for his discovery of the organizer effect in embryonic development\",\n    \"share\": \"1\",\n    \"category\": \"medicine\",\n    \"year\": \"1935\"\n  },\n  {\n    \"id\": \"192\",\n    \"firstname\": \"Harold C.\",\n    \"surname\": \"Urey\",\n    \"motivation\": \"for his discovery of heavy hydrogen\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1934\"\n  },\n  {\n    \"id\": \"607\",\n    \"firstname\": \"Luigi\",\n    \"surname\": \"Pirandello\",\n    \"motivation\": \"for his bold and ingenious revival of dramatic and scenic art\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1934\"\n  },\n  {\n    \"id\": \"499\",\n    \"firstname\": \"Arthur\",\n    \"surname\": \"Henderson\",\n    \"motivation\": \"for his untiring struggle and his courageous efforts as Chairman of the League of Nations Disarmament Conference 1931-34\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"1934\"\n  },\n  {\n    \"id\": \"326\",\n    \"firstname\": \"George H.\",\n    \"surname\": \"Whipple\",\n    \"motivation\": \"for their discoveries concerning liver therapy in cases of anaemia\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1934\"\n  },\n  {\n    \"id\": \"327\",\n    \"firstname\": \"George R.\",\n    \"surname\": \"Minot\",\n    \"motivation\": \"for their discoveries concerning liver therapy in cases of anaemia\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1934\"\n  },\n  {\n    \"id\": \"328\",\n    \"firstname\": \"William P.\",\n    \"surname\": \"Murphy\",\n    \"motivation\": \"for their discoveries concerning liver therapy in cases of anaemia\",\n    \"share\": \"3\",\n    \"category\": \"medicine\",\n    \"year\": \"1934\"\n  },\n  {\n    \"id\": \"606\",\n    \"firstname\": \"Ivan\",\n    \"surname\": \"Bunin\",\n    \"motivation\": \"for the strict artistry with which he has carried on the classical Russian traditions in prose writing\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1933\"\n  },\n  {\n    \"id\": \"498\",\n    \"firstname\": \"Sir Norman\",\n    \"surname\": \"Angell\",\n    \"motivation\": \"for having exposed by his pen the illusion of war and presented a convincing plea for international cooperation and peace\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"1933\"\n  },\n  {\n    \"id\": \"39\",\n    \"firstname\": \"Erwin\",\n    \"surname\": \"Schrödinger\",\n    \"motivation\": \"for the discovery of new productive forms of atomic theory\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1933\"\n  },\n  {\n    \"id\": \"40\",\n    \"firstname\": \"Paul A.M.\",\n    \"surname\": \"Dirac\",\n    \"motivation\": \"for the discovery of new productive forms of atomic theory\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1933\"\n  },\n  {\n    \"id\": \"325\",\n    \"firstname\": \"Thomas H.\",\n    \"surname\": \"Morgan\",\n    \"motivation\": \"for his discoveries concerning the role played by the chromosome in heredity\",\n    \"share\": \"1\",\n    \"category\": \"medicine\",\n    \"year\": \"1933\"\n  },\n  {\n    \"id\": \"191\",\n    \"firstname\": \"Irving\",\n    \"surname\": \"Langmuir\",\n    \"motivation\": \"for his discoveries and investigations in surface chemistry\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1932\"\n  },\n  {\n    \"id\": \"605\",\n    \"firstname\": \"John\",\n    \"surname\": \"Galsworthy\",\n    \"motivation\": \"for his distinguished art of narration which takes its highest form in <I>The Forsyte Saga</I>\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1932\"\n  },\n  {\n    \"id\": \"38\",\n    \"firstname\": \"Werner\",\n    \"surname\": \"Heisenberg\",\n    \"motivation\": \"for the creation of quantum mechanics, the application of which has, inter alia, led to the discovery of the allotropic forms of hydrogen\",\n    \"share\": \"1\",\n    \"category\": \"physics\",\n    \"year\": \"1932\"\n  },\n  {\n    \"id\": \"323\",\n    \"firstname\": \"Sir Charles\",\n    \"surname\": \"Sherrington\",\n    \"motivation\": \"for their discoveries regarding the functions of neurons\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1932\"\n  },\n  {\n    \"id\": \"324\",\n    \"firstname\": \"Edgar\",\n    \"surname\": \"Adrian\",\n    \"motivation\": \"for their discoveries regarding the functions of neurons\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1932\"\n  },\n  {\n    \"id\": \"189\",\n    \"firstname\": \"Carl\",\n    \"surname\": \"Bosch\",\n    \"motivation\": \"in recognition of their contributions to the invention and development of chemical high pressure methods\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"1931\"\n  },\n  {\n    \"id\": \"190\",\n    \"firstname\": \"Friedrich\",\n    \"surname\": \"Bergius\",\n    \"motivation\": \"in recognition of their contributions to the invention and development of chemical high pressure methods\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"1931\"\n  },\n  {\n    \"id\": \"604\",\n    \"firstname\": \"Erik Axel\",\n    \"surname\": \"Karlfeldt\",\n    \"motivation\": \"The poetry of Erik Axel Karlfeldt\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1931\"\n  },\n  {\n    \"id\": \"496\",\n    \"firstname\": \"Jane\",\n    \"surname\": \"Addams\",\n    \"motivation\": \"for their assiduous effort to revive the ideal of peace and to rekindle the spirit of peace in their own nation and in the whole of mankind\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"1931\"\n  },\n  {\n    \"id\": \"497\",\n    \"firstname\": \"Nicholas Murray\",\n    \"surname\": \"Butler\",\n    \"motivation\": \"for their assiduous effort to revive the ideal of peace and to rekindle the spirit of peace in their own nation and in the whole of mankind\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"1931\"\n  },\n  {\n    \"id\": \"322\",\n    \"firstname\": \"Otto\",\n    \"surname\": \"Warburg\",\n    \"motivation\": \"for his discovery of the nature and mode of action of the respiratory enzyme\",\n    \"share\": \"1\",\n    \"category\": \"medicine\",\n    \"year\": \"1931\"\n  },\n  {\n    \"id\": \"188\",\n    \"firstname\": \"Hans\",\n    \"surname\": \"Fischer\",\n    \"motivation\": \"for his researches into the constitution of haemin and chlorophyll and especially for his synthesis of haemin\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1930\"\n  },\n  {\n    \"id\": \"603\",\n    \"firstname\": \"Sinclair\",\n    \"surname\": \"Lewis\",\n    \"motivation\": \"for his vigorous and graphic art of description and his ability to create, with wit and humour, new types of characters\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1930\"\n  },\n  {\n    \"id\": \"495\",\n    \"firstname\": \"Nathan\",\n    \"surname\": \"Söderblom\",\n    \"motivation\": \"for promoting Christian unity and helping create 'that new attitude of mind which is necessary if peace between nations is to become reality'\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"1930\"\n  },\n  {\n    \"id\": \"37\",\n    \"firstname\": \"Sir Chandrasekhara Venkata\",\n    \"surname\": \"Raman\",\n    \"motivation\": \"for his work on the scattering of light and for the discovery of the effect named after him\",\n    \"share\": \"1\",\n    \"category\": \"physics\",\n    \"year\": \"1930\"\n  },\n  {\n    \"id\": \"321\",\n    \"firstname\": \"Karl\",\n    \"surname\": \"Landsteiner\",\n    \"motivation\": \"for his discovery of human blood groups\",\n    \"share\": \"1\",\n    \"category\": \"medicine\",\n    \"year\": \"1930\"\n  },\n  {\n    \"id\": \"186\",\n    \"firstname\": \"Arthur\",\n    \"surname\": \"Harden\",\n    \"motivation\": \"for their investigations on the fermentation of sugar and fermentative enzymes\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"1929\"\n  },\n  {\n    \"id\": \"187\",\n    \"firstname\": \"Hans\",\n    \"surname\": \"von Euler-Chelpin\",\n    \"motivation\": \"for their investigations on the fermentation of sugar and fermentative enzymes\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"1929\"\n  },\n  {\n    \"id\": \"602\",\n    \"firstname\": \"Thomas\",\n    \"surname\": \"Mann\",\n    \"motivation\": \"principally for his great novel, <I>Buddenbrooks</I>, which has won steadily increased recognition as one of the classic works of contemporary literature\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1929\"\n  },\n  {\n    \"id\": \"494\",\n    \"firstname\": \"Frank B.\",\n    \"surname\": \"Kellogg\",\n    \"motivation\": \"for his crucial role in bringing about the Briand-Kellogg Pact\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"1929\"\n  },\n  {\n    \"id\": \"36\",\n    \"firstname\": \"Louis\",\n    \"surname\": \"de Broglie\",\n    \"motivation\": \"for his discovery of the wave nature of electrons\",\n    \"share\": \"1\",\n    \"category\": \"physics\",\n    \"year\": \"1929\"\n  },\n  {\n    \"id\": \"319\",\n    \"firstname\": \"Christiaan\",\n    \"surname\": \"Eijkman\",\n    \"motivation\": \"for his discovery of the antineuritic vitamin\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1929\"\n  },\n  {\n    \"id\": \"320\",\n    \"firstname\": \"Sir Frederick\",\n    \"surname\": \"Hopkins\",\n    \"motivation\": \"for his discovery of the growth-stimulating vitamins\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1929\"\n  },\n  {\n    \"id\": \"185\",\n    \"firstname\": \"Adolf\",\n    \"surname\": \"Windaus\",\n    \"motivation\": \"for the services rendered through his research into the constitution of the sterols and their connection with the vitamins\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1928\"\n  },\n  {\n    \"id\": \"601\",\n    \"firstname\": \"Sigrid\",\n    \"surname\": \"Undset\",\n    \"motivation\": \"principally for her powerful descriptions of Northern life during the Middle Ages\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1928\"\n  },\n  {\n    \"id\": \"35\",\n    \"firstname\": \"Owen Willans\",\n    \"surname\": \"Richardson\",\n    \"motivation\": \"for his work on the thermionic phenomenon and especially for the discovery of the law named after him\",\n    \"share\": \"1\",\n    \"category\": \"physics\",\n    \"year\": \"1928\"\n  },\n  {\n    \"id\": \"318\",\n    \"firstname\": \"Charles\",\n    \"surname\": \"Nicolle\",\n    \"motivation\": \"for his work on typhus\",\n    \"share\": \"1\",\n    \"category\": \"medicine\",\n    \"year\": \"1928\"\n  },\n  {\n    \"id\": \"184\",\n    \"firstname\": \"Heinrich\",\n    \"surname\": \"Wieland\",\n    \"motivation\": \"for his investigations of the constitution of the bile acids and related substances\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1927\"\n  },\n  {\n    \"id\": \"600\",\n    \"firstname\": \"Henri\",\n    \"surname\": \"Bergson\",\n    \"motivation\": \"in recognition of his rich and vitalizing ideas and the brilliant skill with which they have been presented\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1927\"\n  },\n  {\n    \"id\": \"492\",\n    \"firstname\": \"Ferdinand\",\n    \"surname\": \"Buisson\",\n    \"motivation\": \"for their contribution to the emergence in France and Germany of a public opinion which favours peaceful international cooperation\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"1927\"\n  },\n  {\n    \"id\": \"493\",\n    \"firstname\": \"Ludwig\",\n    \"surname\": \"Quidde\",\n    \"motivation\": \"for their contribution to the emergence in France and Germany of a public opinion which favours peaceful international cooperation\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"1927\"\n  },\n  {\n    \"id\": \"33\",\n    \"firstname\": \"Arthur H.\",\n    \"surname\": \"Compton\",\n    \"motivation\": \"for his discovery of the effect named after him\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1927\"\n  },\n  {\n    \"id\": \"34\",\n    \"firstname\": \"C.T.R.\",\n    \"surname\": \"Wilson\",\n    \"motivation\": \"for his method of making the paths of electrically charged particles visible by condensation of vapour\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1927\"\n  },\n  {\n    \"id\": \"317\",\n    \"firstname\": \"Julius\",\n    \"surname\": \"Wagner-Jauregg\",\n    \"motivation\": \"for his discovery of the therapeutic value of malaria inoculation in the treatment of dementia paralytica\",\n    \"share\": \"1\",\n    \"category\": \"medicine\",\n    \"year\": \"1927\"\n  },\n  {\n    \"id\": \"183\",\n    \"firstname\": \"The\",\n    \"surname\": \"Svedberg\",\n    \"motivation\": \"for his work on disperse systems\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1926\"\n  },\n  {\n    \"id\": \"597\",\n    \"firstname\": \"Grazia\",\n    \"surname\": \"Deledda\",\n    \"motivation\": \"for her idealistically inspired writings which with plastic clarity picture the life on her native island and with depth and sympathy deal with human problems in general\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1926\"\n  },\n  {\n    \"id\": \"490\",\n    \"firstname\": \"Aristide\",\n    \"surname\": \"Briand\",\n    \"motivation\": \"for their crucial role in bringing about the Locarno Treaty\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"1926\"\n  },\n  {\n    \"id\": \"491\",\n    \"firstname\": \"Gustav\",\n    \"surname\": \"Stresemann\",\n    \"motivation\": \"for their crucial role in bringing about the Locarno Treaty\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"1926\"\n  },\n  {\n    \"id\": \"32\",\n    \"firstname\": \"Jean Baptiste\",\n    \"surname\": \"Perrin\",\n    \"motivation\": \"for his work on the discontinuous structure of matter, and especially for his discovery of sedimentation equilibrium\",\n    \"share\": \"1\",\n    \"category\": \"physics\",\n    \"year\": \"1926\"\n  },\n  {\n    \"id\": \"316\",\n    \"firstname\": \"Johannes\",\n    \"surname\": \"Fibiger\",\n    \"motivation\": \"for his discovery of the Spiroptera carcinoma\",\n    \"share\": \"1\",\n    \"category\": \"medicine\",\n    \"year\": \"1926\"\n  },\n  {\n    \"id\": \"182\",\n    \"firstname\": \"Richard\",\n    \"surname\": \"Zsigmondy\",\n    \"motivation\": \"for his demonstration of the heterogenous nature of colloid solutions and for the methods he used, which have since become fundamental in modern colloid chemistry\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1925\"\n  },\n  {\n    \"id\": \"596\",\n    \"firstname\": \"George Bernard\",\n    \"surname\": \"Shaw\",\n    \"motivation\": \"for his work which is marked by both idealism and humanity, its stimulating satire often being infused with a singular poetic beauty\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1925\"\n  },\n  {\n    \"id\": \"488\",\n    \"firstname\": \"Sir Austen\",\n    \"surname\": \"Chamberlain\",\n    \"motivation\": \"for his crucial role in bringing about the Locarno Treaty\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"1925\"\n  },\n  {\n    \"id\": \"489\",\n    \"firstname\": \"Charles G.\",\n    \"surname\": \"Dawes\",\n    \"motivation\": \"for his crucial role in bringing about the Dawes Plan\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"1925\"\n  },\n  {\n    \"id\": \"30\",\n    \"firstname\": \"James\",\n    \"surname\": \"Franck\",\n    \"motivation\": \"for their discovery of the laws governing the impact of an electron upon an atom\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1925\"\n  },\n  {\n    \"id\": \"31\",\n    \"firstname\": \"Gustav\",\n    \"surname\": \"Hertz\",\n    \"motivation\": \"for their discovery of the laws governing the impact of an electron upon an atom\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1925\"\n  },\n  {\n    \"id\": \"594\",\n    \"firstname\": \"Władysław\",\n    \"surname\": \"Reymont\",\n    \"motivation\": \"for his great national epic, <I>The Peasants</I>\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1924\"\n  },\n  {\n    \"id\": \"29\",\n    \"firstname\": \"Manne\",\n    \"surname\": \"Siegbahn\",\n    \"motivation\": \"for his discoveries and research in the field of X-ray spectroscopy\",\n    \"share\": \"1\",\n    \"category\": \"physics\",\n    \"year\": \"1924\"\n  },\n  {\n    \"id\": \"315\",\n    \"firstname\": \"Willem\",\n    \"surname\": \"Einthoven\",\n    \"motivation\": \"for his discovery of the mechanism of the electrocardiogram\",\n    \"share\": \"1\",\n    \"category\": \"medicine\",\n    \"year\": \"1924\"\n  },\n  {\n    \"id\": \"181\",\n    \"firstname\": \"Fritz\",\n    \"surname\": \"Pregl\",\n    \"motivation\": \"for his invention of the method of micro-analysis of organic substances\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1923\"\n  },\n  {\n    \"id\": \"593\",\n    \"firstname\": \"William Butler\",\n    \"surname\": \"Yeats\",\n    \"motivation\": \"for his always inspired poetry, which in a highly artistic form gives expression to the spirit of a whole nation\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1923\"\n  },\n  {\n    \"id\": \"28\",\n    \"firstname\": \"Robert A.\",\n    \"surname\": \"Millikan\",\n    \"motivation\": \"for his work on the elementary charge of electricity and on the photoelectric effect\",\n    \"share\": \"1\",\n    \"category\": \"physics\",\n    \"year\": \"1923\"\n  },\n  {\n    \"id\": \"313\",\n    \"firstname\": \"Frederick G.\",\n    \"surname\": \"Banting\",\n    \"motivation\": \"for the discovery of insulin\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1923\"\n  },\n  {\n    \"id\": \"314\",\n    \"firstname\": \"John\",\n    \"surname\": \"Macleod\",\n    \"motivation\": \"for the discovery of insulin\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1923\"\n  },\n  {\n    \"id\": \"180\",\n    \"firstname\": \"Francis W.\",\n    \"surname\": \"Aston\",\n    \"motivation\": \"for his discovery, by means of his mass spectrograph, of isotopes, in a large number of non-radioactive elements, and for his enunciation of the whole-number rule\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1922\"\n  },\n  {\n    \"id\": \"592\",\n    \"firstname\": \"Jacinto\",\n    \"surname\": \"Benavente\",\n    \"motivation\": \"for the happy manner in which he has continued the illustrious traditions of the Spanish drama\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1922\"\n  },\n  {\n    \"id\": \"487\",\n    \"firstname\": \"Fridtjof\",\n    \"surname\": \"Nansen\",\n    \"motivation\": \"for his leading role in the repatriation of prisoners of war, in international relief work and as the League of Nations' High Commissioner for refugees\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"1922\"\n  },\n  {\n    \"id\": \"27\",\n    \"firstname\": \"Niels\",\n    \"surname\": \"Bohr\",\n    \"motivation\": \"for his services in the investigation of the structure of atoms and of the radiation emanating from them\",\n    \"share\": \"1\",\n    \"category\": \"physics\",\n    \"year\": \"1922\"\n  },\n  {\n    \"id\": \"311\",\n    \"firstname\": \"Archibald V.\",\n    \"surname\": \"Hill\",\n    \"motivation\": \"for his discovery relating to the production of heat in the muscle\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1922\"\n  },\n  {\n    \"id\": \"312\",\n    \"firstname\": \"Otto\",\n    \"surname\": \"Meyerhof\",\n    \"motivation\": \"for his discovery of the fixed relationship between the consumption of oxygen and the metabolism of lactic acid in the muscle\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1922\"\n  },\n  {\n    \"id\": \"179\",\n    \"firstname\": \"Frederick\",\n    \"surname\": \"Soddy\",\n    \"motivation\": \"for his contributions to our knowledge of the chemistry of radioactive substances, and his investigations into the origin and nature of isotopes\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1921\"\n  },\n  {\n    \"id\": \"590\",\n    \"firstname\": \"Anatole\",\n    \"surname\": \"France\",\n    \"motivation\": \"in recognition of his brilliant literary achievements, characterized as they are by a nobility of style, a profound human sympathy, grace, and a true Gallic temperament\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1921\"\n  },\n  {\n    \"id\": \"485\",\n    \"firstname\": \"Hjalmar\",\n    \"surname\": \"Branting\",\n    \"motivation\": \"for their lifelong contributions to the cause of peace and organized internationalism\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"1921\"\n  },\n  {\n    \"id\": \"486\",\n    \"firstname\": \"Christian\",\n    \"surname\": \"Lange\",\n    \"motivation\": \"for their lifelong contributions to the cause of peace and organized internationalism\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"1921\"\n  },\n  {\n    \"id\": \"26\",\n    \"firstname\": \"Albert\",\n    \"surname\": \"Einstein\",\n    \"motivation\": \"for his services to Theoretical Physics, and especially for his discovery of the law of the photoelectric effect\",\n    \"share\": \"1\",\n    \"category\": \"physics\",\n    \"year\": \"1921\"\n  },\n  {\n    \"id\": \"178\",\n    \"firstname\": \"Walther\",\n    \"surname\": \"Nernst\",\n    \"motivation\": \"in recognition of his work in thermochemistry\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1920\"\n  },\n  {\n    \"id\": \"589\",\n    \"firstname\": \"Knut\",\n    \"surname\": \"Hamsun\",\n    \"motivation\": \"for his monumental work, <I>Growth of the Soil</I>\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1920\"\n  },\n  {\n    \"id\": \"484\",\n    \"firstname\": \"Léon\",\n    \"surname\": \"Bourgeois\",\n    \"motivation\": \"for his longstanding contribution to the cause of peace and justice and his prominent role in the establishment of the League of Nations\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"1920\"\n  },\n  {\n    \"id\": \"25\",\n    \"firstname\": \"Charles Edouard\",\n    \"surname\": \"Guillaume\",\n    \"motivation\": \"in recognition of the service he has rendered to precision measurements in Physics by his discovery of anomalies in nickel steel alloys\",\n    \"share\": \"1\",\n    \"category\": \"physics\",\n    \"year\": \"1920\"\n  },\n  {\n    \"id\": \"310\",\n    \"firstname\": \"August\",\n    \"surname\": \"Krogh\",\n    \"motivation\": \"for his discovery of the capillary motor regulating mechanism\",\n    \"share\": \"1\",\n    \"category\": \"medicine\",\n    \"year\": \"1920\"\n  },\n  {\n    \"id\": \"588\",\n    \"firstname\": \"Carl\",\n    \"surname\": \"Spitteler\",\n    \"motivation\": \"in special appreciation of his epic, <I>Olympian Spring</I>\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1919\"\n  },\n  {\n    \"id\": \"483\",\n    \"firstname\": \"Woodrow\",\n    \"surname\": \"Wilson\",\n    \"motivation\": \"for his role as founder of the League of Nations\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"1919\"\n  },\n  {\n    \"id\": \"24\",\n    \"firstname\": \"Johannes\",\n    \"surname\": \"Stark\",\n    \"motivation\": \"for his discovery of the Doppler effect in canal rays and the splitting of spectral lines in electric fields\",\n    \"share\": \"1\",\n    \"category\": \"physics\",\n    \"year\": \"1919\"\n  },\n  {\n    \"id\": \"309\",\n    \"firstname\": \"Jules\",\n    \"surname\": \"Bordet\",\n    \"motivation\": \"for his discoveries relating to immunity\",\n    \"share\": \"1\",\n    \"category\": \"medicine\",\n    \"year\": \"1919\"\n  },\n  {\n    \"id\": \"177\",\n    \"firstname\": \"Fritz\",\n    \"surname\": \"Haber\",\n    \"motivation\": \"for the synthesis of ammonia from its elements\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1918\"\n  },\n  {\n    \"id\": \"23\",\n    \"firstname\": \"Max\",\n    \"surname\": \"Planck\",\n    \"motivation\": \"in recognition of the services he rendered to the advancement of Physics by his discovery of energy quanta\",\n    \"share\": \"1\",\n    \"category\": \"physics\",\n    \"year\": \"1918\"\n  },\n  {\n    \"id\": \"586\",\n    \"firstname\": \"Karl\",\n    \"surname\": \"Gjellerup\",\n    \"motivation\": \"for his varied and rich poetry, which is inspired by lofty ideals\",\n    \"share\": \"2\",\n    \"category\": \"literature\",\n    \"year\": \"1917\"\n  },\n  {\n    \"id\": \"587\",\n    \"firstname\": \"Henrik\",\n    \"surname\": \"Pontoppidan\",\n    \"motivation\": \"for his authentic descriptions of present-day life in Denmark\",\n    \"share\": \"2\",\n    \"category\": \"literature\",\n    \"year\": \"1917\"\n  },\n  {\n    \"id\": \"482\",\n    \"motivation\": \"for the efforts to take care of wounded soldiers and prisoners of war and their families\",\n    \"share\": \"1\",\n    \"firstname\": \"International Committee of the Red Cross\",\n    \"category\": \"peace\",\n    \"year\": \"1917\"\n  },\n  {\n    \"id\": \"22\",\n    \"firstname\": \"Charles Glover\",\n    \"surname\": \"Barkla\",\n    \"motivation\": \"for his discovery of the characteristic R&ouml;ntgen radiation of the elements\",\n    \"share\": \"1\",\n    \"category\": \"physics\",\n    \"year\": \"1917\"\n  },\n  {\n    \"id\": \"585\",\n    \"firstname\": \"Verner\",\n    \"surname\": \"von Heidenstam\",\n    \"motivation\": \"in recognition of his significance as the leading representative of a new era in our literature\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1916\"\n  },\n  {\n    \"id\": \"176\",\n    \"firstname\": \"Richard\",\n    \"surname\": \"Willstätter\",\n    \"motivation\": \"for his researches on plant pigments, especially chlorophyll\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1915\"\n  },\n  {\n    \"id\": \"584\",\n    \"firstname\": \"Romain\",\n    \"surname\": \"Rolland\",\n    \"motivation\": \"as a tribute to the lofty idealism of his literary production and to the sympathy and love of truth with which he has described different types of human beings\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1915\"\n  },\n  {\n    \"id\": \"20\",\n    \"firstname\": \"William\",\n    \"surname\": \"Bragg\",\n    \"motivation\": \"for their services in the analysis of crystal structure by means of X-rays\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1915\"\n  },\n  {\n    \"id\": \"21\",\n    \"firstname\": \"Lawrence\",\n    \"surname\": \"Bragg\",\n    \"motivation\": \"for their services in the analysis of crystal structure by means of X-rays\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1915\"\n  },\n  {\n    \"id\": \"175\",\n    \"firstname\": \"Theodore W.\",\n    \"surname\": \"Richards\",\n    \"motivation\": \"in recognition of his accurate determinations of the atomic weight of a large number of chemical elements\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1914\"\n  },\n  {\n    \"id\": \"19\",\n    \"firstname\": \"Max\",\n    \"surname\": \"von Laue\",\n    \"motivation\": \"for his discovery of the diffraction of X-rays by crystals\",\n    \"share\": \"1\",\n    \"category\": \"physics\",\n    \"year\": \"1914\"\n  },\n  {\n    \"id\": \"308\",\n    \"firstname\": \"Robert\",\n    \"surname\": \"Bárány\",\n    \"motivation\": \"for his work on the physiology and pathology of the vestibular apparatus\",\n    \"share\": \"1\",\n    \"category\": \"medicine\",\n    \"year\": \"1914\"\n  },\n  {\n    \"id\": \"174\",\n    \"firstname\": \"Alfred\",\n    \"surname\": \"Werner\",\n    \"motivation\": \"in recognition of his work on the linkage of atoms in molecules by which he has thrown new light on earlier investigations and opened up new fields of research especially in inorganic chemistry\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1913\"\n  },\n  {\n    \"id\": \"583\",\n    \"firstname\": \"Rabindranath\",\n    \"surname\": \"Tagore\",\n    \"motivation\": \"because of his profoundly sensitive, fresh and beautiful verse, by which, with consummate skill, he has made his poetic thought, expressed in his own English words, a part of the literature of the West\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1913\"\n  },\n  {\n    \"id\": \"481\",\n    \"firstname\": \"Henri\",\n    \"surname\": \"La Fontaine\",\n    \"motivation\": \"for his unparalleled contribution to the organization of peaceful internationalism\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"1913\"\n  },\n  {\n    \"id\": \"18\",\n    \"firstname\": \"Heike\",\n    \"surname\": \"Kamerlingh Onnes\",\n    \"motivation\": \"for his investigations on the properties of matter at low temperatures which led, inter alia, to the production of liquid helium\",\n    \"share\": \"1\",\n    \"category\": \"physics\",\n    \"year\": \"1913\"\n  },\n  {\n    \"id\": \"307\",\n    \"firstname\": \"Charles\",\n    \"surname\": \"Richet\",\n    \"motivation\": \"in recognition of his work on anaphylaxis\",\n    \"share\": \"1\",\n    \"category\": \"medicine\",\n    \"year\": \"1913\"\n  },\n  {\n    \"id\": \"172\",\n    \"firstname\": \"Victor\",\n    \"surname\": \"Grignard\",\n    \"motivation\": \"for the discovery of the so-called Grignard reagent, which in recent years has greatly advanced the progress of organic chemistry\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"1912\"\n  },\n  {\n    \"id\": \"173\",\n    \"firstname\": \"Paul\",\n    \"surname\": \"Sabatier\",\n    \"motivation\": \"for his method of hydrogenating organic compounds in the presence of finely disintegrated metals whereby the progress of organic chemistry has been greatly advanced in recent years\",\n    \"share\": \"2\",\n    \"category\": \"chemistry\",\n    \"year\": \"1912\"\n  },\n  {\n    \"id\": \"582\",\n    \"firstname\": \"Gerhart\",\n    \"surname\": \"Hauptmann\",\n    \"motivation\": \"primarily in recognition of his fruitful, varied and outstanding production in the realm of dramatic art\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1912\"\n  },\n  {\n    \"id\": \"480\",\n    \"firstname\": \"Elihu\",\n    \"surname\": \"Root\",\n    \"motivation\": \"for bringing about better understanding between the countries of North and South America and initiating important arbitration agreements between the United States and other countries\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"1912\"\n  },\n  {\n    \"id\": \"17\",\n    \"firstname\": \"Gustaf\",\n    \"surname\": \"Dalén\",\n    \"motivation\": \"for his invention of automatic regulators for use in conjunction with gas accumulators for illuminating lighthouses and buoys\",\n    \"share\": \"1\",\n    \"category\": \"physics\",\n    \"year\": \"1912\"\n  },\n  {\n    \"id\": \"306\",\n    \"firstname\": \"Alexis\",\n    \"surname\": \"Carrel\",\n    \"motivation\": \"in recognition of his work on vascular suture and the transplantation of blood vessels and organs\",\n    \"share\": \"1\",\n    \"category\": \"medicine\",\n    \"year\": \"1912\"\n  },\n  {\n    \"id\": \"6\",\n    \"firstname\": \"Marie\",\n    \"surname\": \"Curie\",\n    \"motivation\": \"in recognition of her services to the advancement of chemistry by the discovery of the elements radium and polonium, by the isolation of radium and the study of the nature and compounds of this remarkable element\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1911\"\n  },\n  {\n    \"id\": \"581\",\n    \"firstname\": \"Maurice\",\n    \"surname\": \"Maeterlinck\",\n    \"motivation\": \"in appreciation of his many-sided literary activities, and especially of his dramatic works, which are distinguished by a wealth of imagination and by a poetic fancy, which reveals, sometimes in the guise of a fairy tale, a deep inspiration, while in a mysterious way they appeal to the readers' own feelings and stimulate their imaginations\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1911\"\n  },\n  {\n    \"id\": \"478\",\n    \"firstname\": \"Tobias\",\n    \"surname\": \"Asser\",\n    \"motivation\": \"for his role as co-founder of the Institut de droit international, initiator of the Conferences on International Private Law (Conférences de Droit international privé) at the Hague, and pioneer in the field of international legal relations\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"1911\"\n  },\n  {\n    \"id\": \"479\",\n    \"firstname\": \"Alfred\",\n    \"surname\": \"Fried\",\n    \"motivation\": \"for his effort to expose and fight what he considers to be the main cause of war, namely, the anarchy in international relations\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"1911\"\n  },\n  {\n    \"id\": \"16\",\n    \"firstname\": \"Wilhelm\",\n    \"surname\": \"Wien\",\n    \"motivation\": \"for his discoveries regarding the laws governing the radiation of heat\",\n    \"share\": \"1\",\n    \"category\": \"physics\",\n    \"year\": \"1911\"\n  },\n  {\n    \"id\": \"305\",\n    \"firstname\": \"Allvar\",\n    \"surname\": \"Gullstrand\",\n    \"motivation\": \"for his work on the dioptrics of the eye\",\n    \"share\": \"1\",\n    \"category\": \"medicine\",\n    \"year\": \"1911\"\n  },\n  {\n    \"id\": \"169\",\n    \"firstname\": \"Otto\",\n    \"surname\": \"Wallach\",\n    \"motivation\": \"in recognition of his services to organic chemistry and the chemical industry by his pioneer work in the field of alicyclic compounds\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1910\"\n  },\n  {\n    \"id\": \"580\",\n    \"firstname\": \"Paul\",\n    \"surname\": \"Heyse\",\n    \"motivation\": \"as a tribute to the consummate artistry, permeated with idealism, which he has demonstrated during his long productive career as a lyric poet, dramatist, novelist and writer of world-renowned short stories\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1910\"\n  },\n  {\n    \"id\": \"477\",\n    \"motivation\": \"for acting as a link between the peace societies of the various countries, and helping them to organize the world rallies of the international peace movement\",\n    \"share\": \"1\",\n    \"firstname\": \"Permanent International Peace Bureau\",\n    \"category\": \"peace\",\n    \"year\": \"1910\"\n  },\n  {\n    \"id\": \"15\",\n    \"firstname\": \"Johannes Diderik\",\n    \"surname\": \"van der Waals\",\n    \"motivation\": \"for his work on the equation of state for gases and liquids\",\n    \"share\": \"1\",\n    \"category\": \"physics\",\n    \"year\": \"1910\"\n  },\n  {\n    \"id\": \"304\",\n    \"firstname\": \"Albrecht\",\n    \"surname\": \"Kossel\",\n    \"motivation\": \"in recognition of the contributions to our knowledge of cell chemistry made through his work on proteins, including the nucleic substances\",\n    \"share\": \"1\",\n    \"category\": \"medicine\",\n    \"year\": \"1910\"\n  },\n  {\n    \"id\": \"168\",\n    \"firstname\": \"Wilhelm\",\n    \"surname\": \"Ostwald\",\n    \"motivation\": \"in recognition of his work on catalysis and for his investigations into the fundamental principles governing chemical equilibria and rates of reaction\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1909\"\n  },\n  {\n    \"id\": \"579\",\n    \"firstname\": \"Selma\",\n    \"surname\": \"Lagerlöf\",\n    \"motivation\": \"in appreciation of the lofty idealism, vivid imagination and spiritual perception that characterize her writings\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1909\"\n  },\n  {\n    \"id\": \"475\",\n    \"firstname\": \"Auguste\",\n    \"surname\": \"Beernaert\",\n    \"motivation\": \"for their prominent position in the international movement for peace and arbitration\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"1909\"\n  },\n  {\n    \"id\": \"476\",\n    \"firstname\": \"Paul Henri\",\n    \"surname\": \"d'Estournelles de Constant\",\n    \"motivation\": \"for their prominent position in the international movement for peace and arbitration\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"1909\"\n  },\n  {\n    \"id\": \"13\",\n    \"firstname\": \"Guglielmo\",\n    \"surname\": \"Marconi\",\n    \"motivation\": \"in recognition of their contributions to the development of wireless telegraphy\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1909\"\n  },\n  {\n    \"id\": \"14\",\n    \"firstname\": \"Ferdinand\",\n    \"surname\": \"Braun\",\n    \"motivation\": \"in recognition of their contributions to the development of wireless telegraphy\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1909\"\n  },\n  {\n    \"id\": \"303\",\n    \"firstname\": \"Theodor\",\n    \"surname\": \"Kocher\",\n    \"motivation\": \"for his work on the physiology, pathology and surgery of the thyroid gland\",\n    \"share\": \"1\",\n    \"category\": \"medicine\",\n    \"year\": \"1909\"\n  },\n  {\n    \"id\": \"167\",\n    \"firstname\": \"Ernest\",\n    \"surname\": \"Rutherford\",\n    \"motivation\": \"for his investigations into the disintegration of the elements, and the chemistry of radioactive substances\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1908\"\n  },\n  {\n    \"id\": \"578\",\n    \"firstname\": \"Rudolf\",\n    \"surname\": \"Eucken\",\n    \"motivation\": \"in recognition of his earnest search for truth, his penetrating power of thought, his wide range of vision, and the warmth and strength in presentation with which in his numerous works he has vindicated and developed an idealistic philosophy of life\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1908\"\n  },\n  {\n    \"id\": \"473\",\n    \"firstname\": \"Klas Pontus\",\n    \"surname\": \"Arnoldson\",\n    \"motivation\": \"for their long time work for the cause of peace as politicians, peace society leaders, orators and authors\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"1908\"\n  },\n  {\n    \"id\": \"474\",\n    \"firstname\": \"Fredrik\",\n    \"surname\": \"Bajer\",\n    \"motivation\": \"for their long time work for the cause of peace as politicians, peace society leaders, orators and authors\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"1908\"\n  },\n  {\n    \"id\": \"12\",\n    \"firstname\": \"Gabriel\",\n    \"surname\": \"Lippmann\",\n    \"motivation\": \"for his method of reproducing colours photographically based on the phenomenon of interference\",\n    \"share\": \"1\",\n    \"category\": \"physics\",\n    \"year\": \"1908\"\n  },\n  {\n    \"id\": \"301\",\n    \"firstname\": \"Ilya\",\n    \"surname\": \"Mechnikov\",\n    \"motivation\": \"in recognition of their work on immunity\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1908\"\n  },\n  {\n    \"id\": \"302\",\n    \"firstname\": \"Paul\",\n    \"surname\": \"Ehrlich\",\n    \"motivation\": \"in recognition of their work on immunity\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1908\"\n  },\n  {\n    \"id\": \"166\",\n    \"firstname\": \"Eduard\",\n    \"surname\": \"Buchner\",\n    \"motivation\": \"for his biochemical researches and his discovery of cell-free fermentation\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1907\"\n  },\n  {\n    \"id\": \"577\",\n    \"firstname\": \"Rudyard\",\n    \"surname\": \"Kipling\",\n    \"motivation\": \"in consideration of the power of observation, originality of imagination, virility of ideas and remarkable talent for narration which characterize the creations of this world-famous author\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1907\"\n  },\n  {\n    \"id\": \"471\",\n    \"firstname\": \"Ernesto Teodoro\",\n    \"surname\": \"Moneta\",\n    \"motivation\": \"for his work in the press and in peace meetings, both public and private, for an understanding between France and Italy\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"1907\"\n  },\n  {\n    \"id\": \"472\",\n    \"firstname\": \"Louis\",\n    \"surname\": \"Renault\",\n    \"motivation\": \"for his decisive influence upon the conduct and outcome of the Hague and Geneva Conferences\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"1907\"\n  },\n  {\n    \"id\": \"11\",\n    \"firstname\": \"Albert A.\",\n    \"surname\": \"Michelson\",\n    \"motivation\": \"for his optical precision instruments and the spectroscopic and metrological investigations carried out with their aid\",\n    \"share\": \"1\",\n    \"category\": \"physics\",\n    \"year\": \"1907\"\n  },\n  {\n    \"id\": \"300\",\n    \"firstname\": \"Alphonse\",\n    \"surname\": \"Laveran\",\n    \"motivation\": \"in recognition of his work on the role played by protozoa in causing diseases\",\n    \"share\": \"1\",\n    \"category\": \"medicine\",\n    \"year\": \"1907\"\n  },\n  {\n    \"id\": \"165\",\n    \"firstname\": \"Henri\",\n    \"surname\": \"Moissan\",\n    \"motivation\": \"in recognition of the great services rendered by him in his investigation and isolation of the element fluorine, and for the adoption in the service of science of the electric furnace called after him\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1906\"\n  },\n  {\n    \"id\": \"576\",\n    \"firstname\": \"Giosuè\",\n    \"surname\": \"Carducci\",\n    \"motivation\": \"not only in consideration of his deep learning and critical research, but above all as a tribute to the creative energy, freshness of style, and lyrical force which characterize his poetic masterpieces\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1906\"\n  },\n  {\n    \"id\": \"470\",\n    \"firstname\": \"Theodore\",\n    \"surname\": \"Roosevelt\",\n    \"motivation\": \"for his role in bringing to an end the bloody war recently waged between two of the world's great powers, Japan and Russia\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"1906\"\n  },\n  {\n    \"id\": \"10\",\n    \"firstname\": \"J.J.\",\n    \"surname\": \"Thomson\",\n    \"motivation\": \"in recognition of the great merits of his theoretical and experimental investigations on the conduction of electricity by gases\",\n    \"share\": \"1\",\n    \"category\": \"physics\",\n    \"year\": \"1906\"\n  },\n  {\n    \"id\": \"298\",\n    \"firstname\": \"Camillo\",\n    \"surname\": \"Golgi\",\n    \"motivation\": \"in recognition of their work on the structure of the nervous system\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1906\"\n  },\n  {\n    \"id\": \"299\",\n    \"firstname\": \"Santiago\",\n    \"surname\": \"Ramón y Cajal\",\n    \"motivation\": \"in recognition of their work on the structure of the nervous system\",\n    \"share\": \"2\",\n    \"category\": \"medicine\",\n    \"year\": \"1906\"\n  },\n  {\n    \"id\": \"164\",\n    \"firstname\": \"Adolf\",\n    \"surname\": \"von Baeyer\",\n    \"motivation\": \"in recognition of his services in the advancement of organic chemistry and the chemical industry, through his work on organic dyes and hydroaromatic compounds\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1905\"\n  },\n  {\n    \"id\": \"575\",\n    \"firstname\": \"Henryk\",\n    \"surname\": \"Sienkiewicz\",\n    \"motivation\": \"because of his outstanding merits as an epic writer\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1905\"\n  },\n  {\n    \"id\": \"468\",\n    \"firstname\": \"Bertha\",\n    \"surname\": \"von Suttner\",\n    \"motivation\": \"for her audacity to oppose the horrors of war\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"1905\"\n  },\n  {\n    \"id\": \"9\",\n    \"firstname\": \"Philipp\",\n    \"surname\": \"Lenard\",\n    \"motivation\": \"for his work on cathode rays\",\n    \"share\": \"1\",\n    \"category\": \"physics\",\n    \"year\": \"1905\"\n  },\n  {\n    \"id\": \"297\",\n    \"firstname\": \"Robert\",\n    \"surname\": \"Koch\",\n    \"motivation\": \"for his investigations and discoveries in relation to tuberculosis\",\n    \"share\": \"1\",\n    \"category\": \"medicine\",\n    \"year\": \"1905\"\n  },\n  {\n    \"id\": \"163\",\n    \"firstname\": \"Sir William\",\n    \"surname\": \"Ramsay\",\n    \"motivation\": \"in recognition of his services in the discovery of the inert gaseous elements in air, and his determination of their place in the periodic system\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1904\"\n  },\n  {\n    \"id\": \"573\",\n    \"firstname\": \"Frédéric\",\n    \"surname\": \"Mistral\",\n    \"motivation\": \"in recognition of the fresh originality and true inspiration of his poetic production, which faithfully reflects the natural scenery and native spirit of his people, and, in addition, his significant work as a Proven&ccedil;al philologist\",\n    \"share\": \"2\",\n    \"category\": \"literature\",\n    \"year\": \"1904\"\n  },\n  {\n    \"id\": \"574\",\n    \"firstname\": \"José\",\n    \"surname\": \"Echegaray\",\n    \"motivation\": \"in recognition of the numerous and brilliant compositions which, in an individual and original manner, have revived the great traditions of the Spanish drama\",\n    \"share\": \"2\",\n    \"category\": \"literature\",\n    \"year\": \"1904\"\n  },\n  {\n    \"id\": \"467\",\n    \"motivation\": \"for its striving in public law to develop peaceful ties between nations and to make the laws of war more humane\",\n    \"share\": \"1\",\n    \"firstname\": \"Institute of International Law\",\n    \"category\": \"peace\",\n    \"year\": \"1904\"\n  },\n  {\n    \"id\": \"8\",\n    \"firstname\": \"Lord\",\n    \"surname\": \"Rayleigh\",\n    \"motivation\": \"for his investigations of the densities of the most important gases and for his discovery of argon in connection with these studies\",\n    \"share\": \"1\",\n    \"category\": \"physics\",\n    \"year\": \"1904\"\n  },\n  {\n    \"id\": \"296\",\n    \"firstname\": \"Ivan\",\n    \"surname\": \"Pavlov\",\n    \"motivation\": \"in recognition of his work on the physiology of digestion, through which knowledge on vital aspects of the subject has been transformed and enlarged\",\n    \"share\": \"1\",\n    \"category\": \"medicine\",\n    \"year\": \"1904\"\n  },\n  {\n    \"id\": \"162\",\n    \"firstname\": \"Svante\",\n    \"surname\": \"Arrhenius\",\n    \"motivation\": \"in recognition of the extraordinary services he has rendered to the advancement of chemistry by his electrolytic theory of dissociation\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1903\"\n  },\n  {\n    \"id\": \"572\",\n    \"firstname\": \"Bjørnstjerne\",\n    \"surname\": \"Bjørnson\",\n    \"motivation\": \"as a tribute to his noble, magnificent and versatile poetry, which has always been distinguished by both the freshness of its inspiration and the rare purity of its spirit\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1903\"\n  },\n  {\n    \"id\": \"466\",\n    \"firstname\": \"Randal\",\n    \"surname\": \"Cremer\",\n    \"motivation\": \"for his longstanding and devoted effort in favour of the ideas of peace and arbitration\",\n    \"share\": \"1\",\n    \"category\": \"peace\",\n    \"year\": \"1903\"\n  },\n  {\n    \"id\": \"4\",\n    \"firstname\": \"Henri\",\n    \"surname\": \"Becquerel\",\n    \"motivation\": \"in recognition of the extraordinary services he has rendered by his discovery of spontaneous radioactivity\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1903\"\n  },\n  {\n    \"id\": \"5\",\n    \"firstname\": \"Pierre\",\n    \"surname\": \"Curie\",\n    \"motivation\": \"in recognition of the extraordinary services they have rendered by their joint researches on the radiation phenomena discovered by Professor Henri Becquerel\",\n    \"share\": \"4\",\n    \"category\": \"physics\",\n    \"year\": \"1903\"\n  },\n  {\n    \"id\": \"6\",\n    \"firstname\": \"Marie\",\n    \"surname\": \"Curie\",\n    \"motivation\": \"in recognition of the extraordinary services they have rendered by their joint researches on the radiation phenomena discovered by Professor Henri Becquerel\",\n    \"share\": \"4\",\n    \"category\": \"physics\",\n    \"year\": \"1903\"\n  },\n  {\n    \"id\": \"295\",\n    \"firstname\": \"Niels Ryberg\",\n    \"surname\": \"Finsen\",\n    \"motivation\": \"in recognition of his contribution to the treatment of diseases, especially lupus vulgaris, with concentrated light radiation, whereby he has opened a new avenue for medical science\",\n    \"share\": \"1\",\n    \"category\": \"medicine\",\n    \"year\": \"1903\"\n  },\n  {\n    \"id\": \"161\",\n    \"firstname\": \"Emil\",\n    \"surname\": \"Fischer\",\n    \"motivation\": \"in recognition of the extraordinary services he has rendered by his work on sugar and purine syntheses\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1902\"\n  },\n  {\n    \"id\": \"571\",\n    \"firstname\": \"Theodor\",\n    \"surname\": \"Mommsen\",\n    \"motivation\": \"the greatest living master of the art of historical writing, with special reference to his monumental work, <I>A history of Rome</I>\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1902\"\n  },\n  {\n    \"id\": \"464\",\n    \"firstname\": \"Élie\",\n    \"surname\": \"Ducommun\",\n    \"motivation\": \"for his untiring and skilful directorship of the Bern Peace Bureau\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"1902\"\n  },\n  {\n    \"id\": \"465\",\n    \"firstname\": \"Albert\",\n    \"surname\": \"Gobat\",\n    \"motivation\": \"for his eminently practical administration of the Inter-Parliamentary Union\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"1902\"\n  },\n  {\n    \"id\": \"2\",\n    \"firstname\": \"Hendrik A.\",\n    \"surname\": \"Lorentz\",\n    \"motivation\": \"in recognition of the extraordinary service they rendered by their researches into the influence of magnetism upon radiation phenomena\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1902\"\n  },\n  {\n    \"id\": \"3\",\n    \"firstname\": \"Pieter\",\n    \"surname\": \"Zeeman\",\n    \"motivation\": \"in recognition of the extraordinary service they rendered by their researches into the influence of magnetism upon radiation phenomena\",\n    \"share\": \"2\",\n    \"category\": \"physics\",\n    \"year\": \"1902\"\n  },\n  {\n    \"id\": \"294\",\n    \"firstname\": \"Ronald\",\n    \"surname\": \"Ross\",\n    \"motivation\": \"for his work on malaria, by which he has shown how it enters the organism and thereby has laid the foundation for successful research on this disease and methods of combating it\",\n    \"share\": \"1\",\n    \"category\": \"medicine\",\n    \"year\": \"1902\"\n  },\n  {\n    \"id\": \"160\",\n    \"firstname\": \"Jacobus H.\",\n    \"surname\": \"van 't Hoff\",\n    \"motivation\": \"in recognition of the extraordinary services he has rendered by the discovery of the laws of chemical dynamics and osmotic pressure in solutions\",\n    \"share\": \"1\",\n    \"category\": \"chemistry\",\n    \"year\": \"1901\"\n  },\n  {\n    \"id\": \"569\",\n    \"firstname\": \"Sully\",\n    \"surname\": \"Prudhomme\",\n    \"motivation\": \"in special recognition of his poetic composition, which gives evidence of lofty idealism, artistic perfection and a rare combination of the qualities of both heart and intellect\",\n    \"share\": \"1\",\n    \"category\": \"literature\",\n    \"year\": \"1901\"\n  },\n  {\n    \"id\": \"462\",\n    \"firstname\": \"Henry\",\n    \"surname\": \"Dunant\",\n    \"motivation\": \"for his humanitarian efforts to help wounded soldiers and create international understanding\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"1901\"\n  },\n  {\n    \"id\": \"463\",\n    \"firstname\": \"Frédéric\",\n    \"surname\": \"Passy\",\n    \"motivation\": \"for his lifelong work for international peace conferences, diplomacy and arbitration\",\n    \"share\": \"2\",\n    \"category\": \"peace\",\n    \"year\": \"1901\"\n  },\n  {\n    \"id\": \"1\",\n    \"firstname\": \"Wilhelm Conrad\",\n    \"surname\": \"Röntgen\",\n    \"motivation\": \"in recognition of the extraordinary services he has rendered by the discovery of the remarkable rays subsequently named after him\",\n    \"share\": \"1\",\n    \"category\": \"physics\",\n    \"year\": \"1901\"\n  },\n  {\n    \"id\": \"293\",\n    \"firstname\": \"Emil\",\n    \"surname\": \"von Behring\",\n    \"motivation\": \"for his work on serum therapy, especially its application against diphtheria, by which he has opened a new road in the domain of medical science and thereby placed in the hands of the physician a victorious weapon against illness and deaths\",\n    \"share\": \"1\",\n    \"category\": \"medicine\",\n    \"year\": \"1901\"\n  }\n]\n"
  },
  {
    "path": "plugins/riot/src/test/resources/files/redis-export.json",
    "content": "[\n {\"key\":\"gen:71\",\"event\":\"scan\",\"timestamp\":1730880592559,\"type\":\"ReJSON-RL\",\"ttl\":-1,\"value\":\"{\\\"field1\\\":\\\"6Ia7XJiCoFVWxJzDHxJbE5lzhcFqsfRsdAamLIdQMsMARBU5WBwhW4wdn9pKZrCHhTIF3xZxCp89L4mMPkagbUvivQTDbzFvwxqY\\\",\\\"field10\\\":\\\"UcBz3sYXSv1vU2j8nGtMS4L1iMq4nmLDOdd7RcyLeJeKBq3r8uwTjqdehjxsWk6HmTB0uj5y9skZr2vBIE8kVA6KXEp7iA5Ug9NP\\\",\\\"field7\\\":\\\"s3XaM7OJBi2nJDteCtgYlwCtBuzfecUJSwOFNRYt9ywwx0e3HTICjK0s8sJXbIYjtBqcoLW2RPgU6ngfYIDNM1anshnHjEwayxtd\\\",\\\"field6\\\":\\\"fEbedfFKfgseO7iugLENGOuUjarPMDqpI6Kz8fTW9zlYtNs4UjSvDz3TRIpXYOflHnMzzCxFrq1Qqcfm2H65DfAnR7OgOdqHL3t8\\\",\\\"field9\\\":\\\"PQ8YLVdNhNc1Bg96hFm6KzfSS826om1cf4x8v4fpKUIC2uuURzDiEd8zHBdVImpapIVeYWn7crGkqWKREjLntCWUbXkq9p6NwJZE\\\",\\\"field8\\\":\\\"ez87OU7FAApHbn2gwVSbuGXhcKxq6dnApZ7u0wvuFKJnqOM2N1XwVkQBqWrMDhD4fNrMtVsbX95xziIsJLV4GGti1i97ggYUOjKi\\\",\\\"field3\\\":\\\"R50x65f5QbMC8MWo2wrw7ifHOU59iHmptYIGPGfkkVFo5jD73YY1vG4tzNUMkyXUnRIhiWrLRY9CwaPNvxEcMisq4Fx9L9xqRgYJ\\\",\\\"field2\\\":\\\"cqJL0WsRLh0Pl5xtHbj7pJUuRXtPKmWh3G5dMypk22czq0Ld2N5xysX5kHCLcucXKaeUsirRW5ZWzcxwWWZqL1bzdyLakPngGPGx\\\",\\\"field5\\\":\\\"9DYq3fb4DvDG09okgyNEqdGOZOD3q4mb9ybcTswD7TnNqx8ohVmp4np1gdRJ4oTRssJjWPYiN0MhgivEnexcbWhpJcL3MSbCAJxr\\\",\\\"field4\\\":\\\"Nj9SGOiexndHtEum3iBpqa6GQryMpGvqOPH2tjzYLzy8ySbDZ32KKsd1CisViORirfLJlfWwGcPrbwPlniDYtRmkvblk69KoLXFP\\\"}\"},\n {\"key\":\"gen:83\",\"event\":\"scan\",\"timestamp\":1730880592559,\"type\":\"zset\",\"ttl\":-1,\"value\":[{\"value\":\"59\",\"score\":23.050024732539455},{\"value\":\"66\",\"score\":40.63260344413271},{\"value\":\"96\",\"score\":38.87375915407566},{\"value\":\"28\",\"score\":60.50563319374653},{\"value\":\"36\",\"score\":65.47011165860582},{\"value\":\"18\",\"score\":13.810831561369863},{\"value\":\"37\",\"score\":83.5426817746883},{\"value\":\"80\",\"score\":46.71519960813865},{\"value\":\"79\",\"score\":60.32656770446224},{\"value\":\"49\",\"score\":65.89235746278193},{\"value\":\"89\",\"score\":94.23739676780691},{\"value\":\"35\",\"score\":26.072150330122902},{\"value\":\"58\",\"score\":47.38298751793606},{\"value\":\"90\",\"score\":87.85771158833383},{\"value\":\"47\",\"score\":72.02469869797987},{\"value\":\"21\",\"score\":40.38103917415283},{\"value\":\"74\",\"score\":81.9963695023749},{\"value\":\"55\",\"score\":7.354965521976475},{\"value\":\"20\",\"score\":94.75025935568776},{\"value\":\"56\",\"score\":28.208652320517157},{\"value\":\"64\",\"score\":30.040545204220393},{\"value\":\"19\",\"score\":92.2624887368443},{\"value\":\"72\",\"score\":88.77339125817788},{\"value\":\"93\",\"score\":28.244250886799204},{\"value\":\"2\",\"score\":10.728013114598856},{\"value\":\"25\",\"score\":80.06448205140632},{\"value\":\"87\",\"score\":0.05029564537151199},{\"value\":\"75\",\"score\":31.029731323175568},{\"value\":\"57\",\"score\":78.42946238072052},{\"value\":\"12\",\"score\":78.61011669545695},{\"value\":\"53\",\"score\":32.377137334412886},{\"value\":\"83\",\"score\":31.12713116039315},{\"value\":\"81\",\"score\":66.30043597924623},{\"value\":\"13\",\"score\":86.5136786871504},{\"value\":\"23\",\"score\":38.40752409831227},{\"value\":\"51\",\"score\":75.97696169115714},{\"value\":\"63\",\"score\":21.06892035901464},{\"value\":\"1\",\"score\":5.884715263408857},{\"value\":\"70\",\"score\":11.257272246762772},{\"value\":\"11\",\"score\":69.68074353583792},{\"value\":\"14\",\"score\":73.87376024039399},{\"value\":\"10\",\"score\":13.471619494246944},{\"value\":\"3\",\"score\":68.43824697541943},{\"value\":\"6\",\"score\":14.635972311306855},{\"value\":\"68\",\"score\":38.57998474859989},{\"value\":\"60\",\"score\":84.24107905461302},{\"value\":\"50\",\"score\":50.772102105496266},{\"value\":\"94\",\"score\":65.6629032488216},{\"value\":\"48\",\"score\":51.876084024364935},{\"value\":\"44\",\"score\":82.05910079325658},{\"value\":\"97\",\"score\":49.04041917399516},{\"value\":\"41\",\"score\":89.21843995872017},{\"value\":\"45\",\"score\":44.6939860845849},{\"value\":\"7\",\"score\":60.84932340218822},{\"value\":\"27\",\"score\":83.24277390416074},{\"value\":\"88\",\"score\":18.08523806669656},{\"value\":\"67\",\"score\":21.8233325392316},{\"value\":\"84\",\"score\":4.397160086583751},{\"value\":\"33\",\"score\":55.51449481245601},{\"value\":\"99\",\"score\":16.721560426516003},{\"value\":\"92\",\"score\":67.92383703747201},{\"value\":\"22\",\"score\":78.16839047375159},{\"value\":\"52\",\"score\":22.042960689995372},{\"value\":\"71\",\"score\":2.408527334747601},{\"value\":\"76\",\"score\":60.43315546391137},{\"value\":\"54\",\"score\":53.815656319413016},{\"value\":\"39\",\"score\":86.73965578761553},{\"value\":\"43\",\"score\":39.38819616003414},{\"value\":\"16\",\"score\":31.191228499974432},{\"value\":\"34\",\"score\":82.1002483758249},{\"value\":\"91\",\"score\":72.67499334788063},{\"value\":\"95\",\"score\":33.67293395886075},{\"value\":\"98\",\"score\":60.45630513539684},{\"value\":\"4\",\"score\":44.46402386375274},{\"value\":\"15\",\"score\":69.55684650250757},{\"value\":\"26\",\"score\":80.35096788162728},{\"value\":\"46\",\"score\":65.34341132638956},{\"value\":\"82\",\"score\":61.763695227925},{\"value\":\"5\",\"score\":63.10822683061173},{\"value\":\"61\",\"score\":70.8478294249033},{\"value\":\"40\",\"score\":77.05658536655588},{\"value\":\"38\",\"score\":1.051218184392111},{\"value\":\"65\",\"score\":95.22226135221948},{\"value\":\"85\",\"score\":36.38794157436502},{\"value\":\"73\",\"score\":99.10489503539976},{\"value\":\"100\",\"score\":35.858574606799856},{\"value\":\"62\",\"score\":84.23399179249932},{\"value\":\"24\",\"score\":61.813082644928066},{\"value\":\"77\",\"score\":46.84410205418246},{\"value\":\"29\",\"score\":91.13147217488181},{\"value\":\"32\",\"score\":7.534696090709836},{\"value\":\"17\",\"score\":7.688979702452315},{\"value\":\"78\",\"score\":64.16096999368317},{\"value\":\"30\",\"score\":51.43521005738003},{\"value\":\"42\",\"score\":73.90447179917939},{\"value\":\"69\",\"score\":81.55884209550167},{\"value\":\"9\",\"score\":34.23091076660981},{\"value\":\"86\",\"score\":35.71994744563051},{\"value\":\"8\",\"score\":60.07134467523927},{\"value\":\"31\",\"score\":49.84889231542653}]},\n {\"key\":\"gen:45\",\"event\":\"scan\",\"timestamp\":1730880592559,\"type\":\"set\",\"ttl\":-1,\"value\":[\"88\",\"89\",\"90\",\"91\",\"92\",\"93\",\"94\",\"95\",\"96\",\"97\",\"10\",\"98\",\"11\",\"99\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"20\",\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\",\"50\",\"51\",\"52\",\"53\",\"54\",\"55\",\"56\",\"57\",\"58\",\"59\",\"60\",\"61\",\"62\",\"63\",\"64\",\"65\",\"66\",\"67\",\"68\",\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\",\"77\",\"78\",\"79\",\"100\",\"80\",\"81\",\"82\",\"83\",\"84\",\"85\",\"86\",\"87\"]},\n {\"key\":\"gen:19\",\"event\":\"scan\",\"timestamp\":1730880592559,\"type\":\"string\",\"ttl\":-1,\"value\":\"7CWoAuqCWJXHRCbYVuE9yE8a7u4EED8vile8JOZDGzP0zrWpS28iHLcwF68FT81j94niX1xoHNgBJK3bxatvVLcTPrnuoN0UmQk6\"},\n {\"key\":\"gen:73\",\"event\":\"scan\",\"timestamp\":1730880592559,\"type\":\"set\",\"ttl\":-1,\"value\":[\"88\",\"89\",\"90\",\"91\",\"92\",\"93\",\"94\",\"95\",\"96\",\"97\",\"10\",\"98\",\"11\",\"99\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"20\",\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\",\"50\",\"51\",\"52\",\"53\",\"54\",\"55\",\"56\",\"57\",\"58\",\"59\",\"60\",\"61\",\"62\",\"63\",\"64\",\"65\",\"66\",\"67\",\"68\",\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\",\"77\",\"78\",\"79\",\"100\",\"80\",\"81\",\"82\",\"83\",\"84\",\"85\",\"86\",\"87\"]},\n {\"key\":\"gen:77\",\"event\":\"scan\",\"timestamp\":1730880592559,\"type\":\"hash\",\"ttl\":-1,\"value\":{\"field1\":\"wAkhY56p26gYuJEntXyJJLi4ywgGz8b8SXKhanObJKyVOtFoCa248HlMcwgq3zlzYfgE4xbnNKlNrhXBFjwlC270SxCUGw7XkJyt\",\"field10\":\"ihPe2B9gV5fwBHvGmlsA1P0Ci5sBgzlqCAieqYSddmc84pe2Cebhyoin165Q6mktoxmfQ4OiNSDF13401Nu82uRDQ3cpvekxYQ6t\",\"field7\":\"INpfBnVQoaAWQ2D30YHcTw9mYB7fNDaxyp7REvuRtAMuNDYqcPo4WIjklmMGMSdiTcnvfeJX0vmAn6zYRTJse2SfsCJRkm1PoGAf\",\"field6\":\"EPZ3sC35X6qopA25lmKfgB32R71tGofjCi7HVbMIiEg9CeklIEcf3WwFqghViJJOMGJ1FqqlnPBBSILi14rxYF0qAUt7fMPYK3Jg\",\"field9\":\"ADIOd6YeWQBS4UJx3BIyHFVwnqDK8stVsQ6a9Q36oET68Ir5kGxnWFcNvWW8tgqf9SDISjaNI1W9tbQpXuB1kkEm6MwAGL9f8aVN\",\"field8\":\"Yxnui8yhGZYV14TktsqB4BqhLtcXsVU1QoXF1kRykcDzGd61AUlSVxkItOVZ4wskkV00Wg6Kn4sGuUySZUCMsH2GHK9ZRcYpV09r\",\"field3\":\"3d21YadY6dS4gxEn8GHJ64OpVhlI010YbkeFYkfIDYvdZ2EeXPuD7VNrNfLpgFSwIWC3gYaimF2ZjVNIeIsM7z3JBSXTT0cr37qK\",\"field2\":\"FicvteHnLg65rMUyvFawWRQ3HgsFFiPtAQiB5a9d0QxMNgqZfBSozAMrETS5L1e4TaAqqFpIasTVhakK4yMa0V7yc3SoSY451M60\",\"field5\":\"Lczi0n20WNCszU64gvYyW7fxH8QtSJsZlcPAr37mpBXjbGMr41tHpTYEJDoIkHyVh7jQKpDTU7EZhyGIGPSzks1rW11e6R8hUViO\",\"field4\":\"NkwnvUj0AJufkRJTnK4E6SQXT6eXGEUX4cmbI34a6wNrVixjjJjBQwFHUU6kcr6ZiavfoHGmpoKbuOhsu1u8ar2g8Qcfavti2rOZ\"}},\n {\"key\":\"gen:65\",\"event\":\"scan\",\"timestamp\":1730880592559,\"type\":\"list\",\"ttl\":-1,\"value\":[\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\",\"20\",\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\",\"50\",\"51\",\"52\",\"53\",\"54\",\"55\",\"56\",\"57\",\"58\",\"59\",\"60\",\"61\",\"62\",\"63\",\"64\",\"65\",\"66\",\"67\",\"68\",\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\",\"77\",\"78\",\"79\",\"80\",\"81\",\"82\",\"83\",\"84\",\"85\",\"86\",\"87\",\"88\",\"89\",\"90\",\"91\",\"92\",\"93\",\"94\",\"95\",\"96\",\"97\",\"98\",\"99\",\"100\"]},\n {\"key\":\"gen:13\",\"event\":\"scan\",\"timestamp\":1730880592559,\"type\":\"zset\",\"ttl\":-1,\"value\":[{\"value\":\"78\",\"score\":39.15585651280287},{\"value\":\"85\",\"score\":44.987461723393075},{\"value\":\"38\",\"score\":88.84617916054164},{\"value\":\"97\",\"score\":89.6520535021995},{\"value\":\"23\",\"score\":63.52960799507156},{\"value\":\"2\",\"score\":67.61015634460696},{\"value\":\"5\",\"score\":72.94303580119109},{\"value\":\"73\",\"score\":70.1389848172189},{\"value\":\"13\",\"score\":89.82498727891425},{\"value\":\"62\",\"score\":91.74519540656068},{\"value\":\"17\",\"score\":93.29567012238313},{\"value\":\"4\",\"score\":35.29396764608712},{\"value\":\"95\",\"score\":87.97098538272927},{\"value\":\"75\",\"score\":59.78343627692162},{\"value\":\"86\",\"score\":26.79843050869184},{\"value\":\"16\",\"score\":22.04199845415603},{\"value\":\"32\",\"score\":55.51366878160382},{\"value\":\"71\",\"score\":70.00548922367697},{\"value\":\"14\",\"score\":86.96114161453663},{\"value\":\"30\",\"score\":64.98910451479715},{\"value\":\"50\",\"score\":95.76673433200152},{\"value\":\"43\",\"score\":38.57412243923768},{\"value\":\"7\",\"score\":57.75950734181582},{\"value\":\"39\",\"score\":82.27181058127168},{\"value\":\"98\",\"score\":30.673526185032618},{\"value\":\"37\",\"score\":35.35347905480507},{\"value\":\"81\",\"score\":10.77724274157007},{\"value\":\"70\",\"score\":71.66551102622208},{\"value\":\"6\",\"score\":14.858452847143312},{\"value\":\"45\",\"score\":52.04822321309257},{\"value\":\"93\",\"score\":1.958862815036877},{\"value\":\"88\",\"score\":9.500406213436307},{\"value\":\"33\",\"score\":38.27499527847134},{\"value\":\"84\",\"score\":45.83665782130453},{\"value\":\"46\",\"score\":14.703155536895174},{\"value\":\"41\",\"score\":46.17258390940873},{\"value\":\"77\",\"score\":34.829480236373115},{\"value\":\"61\",\"score\":92.40171503209106},{\"value\":\"52\",\"score\":62.66761014304435},{\"value\":\"27\",\"score\":32.03976803871321},{\"value\":\"42\",\"score\":82.90945204733744},{\"value\":\"34\",\"score\":98.60724386260272},{\"value\":\"8\",\"score\":31.204278701097966},{\"value\":\"67\",\"score\":22.15147488761534},{\"value\":\"91\",\"score\":8.846746025046937},{\"value\":\"63\",\"score\":94.37422918874765},{\"value\":\"89\",\"score\":7.964761138285836},{\"value\":\"24\",\"score\":84.02513739425189},{\"value\":\"100\",\"score\":22.305100389342147},{\"value\":\"94\",\"score\":25.01220962678834},{\"value\":\"44\",\"score\":27.936269613561382},{\"value\":\"36\",\"score\":18.319041508355983},{\"value\":\"80\",\"score\":67.98617693633906},{\"value\":\"11\",\"score\":15.365567945637803},{\"value\":\"59\",\"score\":75.22714341276549},{\"value\":\"66\",\"score\":98.3540984119725},{\"value\":\"40\",\"score\":5.098584783820104},{\"value\":\"47\",\"score\":92.98883490223878},{\"value\":\"35\",\"score\":67.777666234835},{\"value\":\"10\",\"score\":38.849750783986416},{\"value\":\"18\",\"score\":18.726111672472378},{\"value\":\"56\",\"score\":39.57658398013416},{\"value\":\"76\",\"score\":18.079437141515097},{\"value\":\"58\",\"score\":37.21042540230882},{\"value\":\"26\",\"score\":14.207559386105139},{\"value\":\"55\",\"score\":44.163812211314855},{\"value\":\"9\",\"score\":22.973294080094053},{\"value\":\"99\",\"score\":63.890430643624065},{\"value\":\"83\",\"score\":30.562489329762432},{\"value\":\"28\",\"score\":86.31973111798449},{\"value\":\"57\",\"score\":46.33833511423045},{\"value\":\"1\",\"score\":70.40059347659707},{\"value\":\"3\",\"score\":7.7556360936898106},{\"value\":\"12\",\"score\":21.28430708423108},{\"value\":\"51\",\"score\":66.74992908620268},{\"value\":\"96\",\"score\":50.42594231274749},{\"value\":\"19\",\"score\":84.53975459300666},{\"value\":\"53\",\"score\":67.16158387594878},{\"value\":\"15\",\"score\":89.56852581786127},{\"value\":\"64\",\"score\":88.50861772107065},{\"value\":\"68\",\"score\":37.70709418961993},{\"value\":\"65\",\"score\":14.12489100156995},{\"value\":\"25\",\"score\":66.66040344950433},{\"value\":\"69\",\"score\":78.90476936566216},{\"value\":\"90\",\"score\":81.84127556665413},{\"value\":\"54\",\"score\":67.3540996808705},{\"value\":\"22\",\"score\":32.3761148075003},{\"value\":\"31\",\"score\":18.39924673817893},{\"value\":\"74\",\"score\":93.27757328923647},{\"value\":\"87\",\"score\":18.750309035774503},{\"value\":\"29\",\"score\":35.40562928521383},{\"value\":\"79\",\"score\":76.38104962744103},{\"value\":\"49\",\"score\":1.0795089421097637},{\"value\":\"72\",\"score\":4.171062186111307},{\"value\":\"21\",\"score\":27.094437466257084},{\"value\":\"60\",\"score\":28.198241671241476},{\"value\":\"48\",\"score\":22.375465230381565},{\"value\":\"92\",\"score\":11.217689417040798},{\"value\":\"20\",\"score\":62.806249562966485},{\"value\":\"82\",\"score\":27.735110120347915}]},\n {\"key\":\"gen:68\",\"event\":\"scan\",\"timestamp\":1730880592560,\"type\":\"string\",\"ttl\":-1,\"value\":\"4f2RRhbDgS6yohT1Twplc5QmtLIy87WtnokBx0mow5g7AFzMVjz2nHdf2gCCfmo2if2V7THu7jj9pLcLNuY8gL7ff3zDpwJnmioB\"},\n {\"key\":\"gen:20\",\"event\":\"scan\",\"timestamp\":1730880592560,\"type\":\"zset\",\"ttl\":-1,\"value\":[{\"value\":\"100\",\"score\":44.98892899961893},{\"value\":\"35\",\"score\":49.62323485474045},{\"value\":\"7\",\"score\":45.40756126732375},{\"value\":\"38\",\"score\":44.11650714794679},{\"value\":\"71\",\"score\":32.61204197954671},{\"value\":\"34\",\"score\":62.19684143612564},{\"value\":\"78\",\"score\":24.882019815147626},{\"value\":\"56\",\"score\":59.6183046292265},{\"value\":\"70\",\"score\":50.48430550549289},{\"value\":\"3\",\"score\":20.998686270418222},{\"value\":\"90\",\"score\":60.54259695985466},{\"value\":\"37\",\"score\":70.70578957285068},{\"value\":\"5\",\"score\":72.0628678120951},{\"value\":\"60\",\"score\":31.28352557672075},{\"value\":\"20\",\"score\":71.6963931192611},{\"value\":\"42\",\"score\":14.190512745017392},{\"value\":\"75\",\"score\":53.612221409903704},{\"value\":\"54\",\"score\":70.80476616119182},{\"value\":\"43\",\"score\":16.98497957609262},{\"value\":\"25\",\"score\":58.82988874614217},{\"value\":\"46\",\"score\":48.21168707613204},{\"value\":\"17\",\"score\":57.76265568308416},{\"value\":\"77\",\"score\":15.623632103634122},{\"value\":\"44\",\"score\":65.34047214577625},{\"value\":\"58\",\"score\":67.53180753333669},{\"value\":\"8\",\"score\":75.85138495026935},{\"value\":\"67\",\"score\":83.05055014559169},{\"value\":\"80\",\"score\":33.25075990458175},{\"value\":\"88\",\"score\":64.6707452959617},{\"value\":\"82\",\"score\":8.28375377807622},{\"value\":\"97\",\"score\":3.650907788799662},{\"value\":\"66\",\"score\":35.88905382242334},{\"value\":\"86\",\"score\":55.346977877615466},{\"value\":\"61\",\"score\":33.18218576530463},{\"value\":\"33\",\"score\":93.36919012994667},{\"value\":\"55\",\"score\":23.998191085597743},{\"value\":\"62\",\"score\":3.9476138349995415},{\"value\":\"19\",\"score\":24.78654247461246},{\"value\":\"79\",\"score\":46.936806864633574},{\"value\":\"6\",\"score\":85.58309225866545},{\"value\":\"85\",\"score\":7.498964616241377},{\"value\":\"49\",\"score\":80.27595431638102},{\"value\":\"93\",\"score\":53.660353124623526},{\"value\":\"11\",\"score\":53.18339740018795},{\"value\":\"9\",\"score\":97.0605611640975},{\"value\":\"64\",\"score\":30.72395673921895},{\"value\":\"95\",\"score\":66.61957086368352},{\"value\":\"40\",\"score\":37.74773564136195},{\"value\":\"65\",\"score\":82.58382016431045},{\"value\":\"14\",\"score\":85.24028096492017},{\"value\":\"13\",\"score\":96.08824305856818},{\"value\":\"76\",\"score\":82.30432494636278},{\"value\":\"21\",\"score\":44.73449367652401},{\"value\":\"96\",\"score\":56.950800348152384},{\"value\":\"18\",\"score\":45.994710648055936},{\"value\":\"94\",\"score\":51.226847805372635},{\"value\":\"23\",\"score\":0.6016559634447693},{\"value\":\"30\",\"score\":89.27996932794562},{\"value\":\"47\",\"score\":94.22841934617102},{\"value\":\"81\",\"score\":42.7909531075112},{\"value\":\"29\",\"score\":23.14775292500697},{\"value\":\"98\",\"score\":75.63763117017533},{\"value\":\"4\",\"score\":7.663582368195065},{\"value\":\"45\",\"score\":12.708263212595616},{\"value\":\"27\",\"score\":40.48195612480541},{\"value\":\"99\",\"score\":42.263128605763455},{\"value\":\"57\",\"score\":24.731861026648982},{\"value\":\"51\",\"score\":71.25790957557574},{\"value\":\"72\",\"score\":73.99071854459694},{\"value\":\"2\",\"score\":91.2185301095054},{\"value\":\"10\",\"score\":23.273088388939843},{\"value\":\"59\",\"score\":61.77933112145734},{\"value\":\"92\",\"score\":75.61127719260568},{\"value\":\"91\",\"score\":94.85036933357246},{\"value\":\"39\",\"score\":23.199255127839113},{\"value\":\"74\",\"score\":53.19979073559019},{\"value\":\"53\",\"score\":63.47848815490622},{\"value\":\"32\",\"score\":87.86307967792494},{\"value\":\"83\",\"score\":42.29812583654683},{\"value\":\"68\",\"score\":74.8190229030779},{\"value\":\"24\",\"score\":37.9748110514779},{\"value\":\"87\",\"score\":21.701663723123545},{\"value\":\"50\",\"score\":24.186514718389684},{\"value\":\"22\",\"score\":36.63756429706535},{\"value\":\"69\",\"score\":37.29403302000254},{\"value\":\"28\",\"score\":41.406878068322015},{\"value\":\"12\",\"score\":38.76345873099335},{\"value\":\"41\",\"score\":61.79755976682504},{\"value\":\"63\",\"score\":39.54020887931071},{\"value\":\"36\",\"score\":53.92549646970608},{\"value\":\"73\",\"score\":20.20551647354749},{\"value\":\"89\",\"score\":46.12162368011573},{\"value\":\"1\",\"score\":23.17597735501613},{\"value\":\"15\",\"score\":35.994443886706726},{\"value\":\"52\",\"score\":26.300176940723595},{\"value\":\"16\",\"score\":46.87735810067814},{\"value\":\"31\",\"score\":47.751948928129394},{\"value\":\"26\",\"score\":43.21670983507746},{\"value\":\"48\",\"score\":86.8113732721389},{\"value\":\"84\",\"score\":2.5690559210496455}]},\n {\"key\":\"gen:24\",\"event\":\"scan\",\"timestamp\":1730880592560,\"type\":\"set\",\"ttl\":-1,\"value\":[\"88\",\"89\",\"90\",\"91\",\"92\",\"93\",\"94\",\"95\",\"96\",\"97\",\"10\",\"98\",\"11\",\"99\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"20\",\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\",\"50\",\"51\",\"52\",\"53\",\"54\",\"55\",\"56\",\"57\",\"58\",\"59\",\"60\",\"61\",\"62\",\"63\",\"64\",\"65\",\"66\",\"67\",\"68\",\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\",\"77\",\"78\",\"79\",\"100\",\"80\",\"81\",\"82\",\"83\",\"84\",\"85\",\"86\",\"87\"]},\n {\"key\":\"gen:54\",\"event\":\"scan\",\"timestamp\":1730880592560,\"type\":\"string\",\"ttl\":-1,\"value\":\"Ewx1cg71fOtS10VPnli63D8gBUBlQiHZVCLmW29pyWqJDzaOgkGMd1qZlee2OfF1D3rHfpg7hxw0XpRiD9ItZuy4LNhwUjmAenXD\"},\n {\"key\":\"gen:10\",\"event\":\"scan\",\"timestamp\":1730880592560,\"type\":\"set\",\"ttl\":-1,\"value\":[\"88\",\"89\",\"90\",\"91\",\"92\",\"93\",\"94\",\"95\",\"96\",\"97\",\"10\",\"98\",\"11\",\"99\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"20\",\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\",\"50\",\"51\",\"52\",\"53\",\"54\",\"55\",\"56\",\"57\",\"58\",\"59\",\"60\",\"61\",\"62\",\"63\",\"64\",\"65\",\"66\",\"67\",\"68\",\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\",\"77\",\"78\",\"79\",\"100\",\"80\",\"81\",\"82\",\"83\",\"84\",\"85\",\"86\",\"87\"]},\n {\"key\":\"gen:46\",\"event\":\"scan\",\"timestamp\":1730880592560,\"type\":\"stream\",\"ttl\":-1,\"value\":[{\"stream\":\"gen:46\",\"id\":\"1730880588445-0\",\"body\":{\"field1\":\"2TIe8RUgaDDPd7zy3og5bQSrfrGWYogtCJqQ2ji6qMZc0JHH2gP8KrRgkgbcBDUiZ2lr2Vjo05i9U7ETOQI7llRGVLSFfb5IqWne\",\"field10\":\"o9JLNJF9ArfYcXlfeu62f04i9pBNypWbBRxMHXwfxRCMaFXB6BgPYIATwDFEW9j8Hnh0Xb24f8zwxj1d8RAn49Cu4zDvQmVu5Ikv\",\"field7\":\"LzM7K5R4gJTXKRDWSJw3m0KyJcbVrvj7Kkd04zmsiGmiEv6Uat5N3hE8TmKgGNkg2QSXm537c6xnTk1qny3OfBuDORA7rGKXw8DU\",\"field6\":\"XA9jom5NErkSQyr8nuLovnGNueMGtPlTk3dSc6IJzGL1e7VVn2mki5ZlhcW18f3FCG9Yc8Pr9hqODh7JMKo9TZ7pqHVE77GXfaIC\",\"field9\":\"j8TlSYdTRWt1nWmiL9zgnrsUpO3tc4F0HTSALL6AectKtkMjluKQafg7Oe6LD4qTg7aACijggUCHLnxAJMotlUM2yCnGwyMHZvRQ\",\"field8\":\"J8xUiUDX042jaj2rAr2Ffha9BgnrtQzfkJFFp532oCnbpxOgyKYc6JwlMoAcLD1LWMuj4SnowMwnA65gSeBW5V34ghwbiCKs8ZqN\",\"field3\":\"o9LmgXINRCrav8kaXuOHJaYZ5GKuntEIM8a4EjgLDeBJfkqGs8qfpIjo1q2H1lGw8IrKPnytHNrHNs3cXBgyFcREjw8Z3FezIFGQ\",\"field2\":\"4y3M1jiQFYtwH5gPFmOeplz2hAok44I7Bb8nlJMmoMxIJmZkShs1V5BWfHgdrmR8n8EauQwsvuVfv5vQqH8xPwvRMmb5bqixKr68\",\"field5\":\"x2vGgOMhX5waSfNTRUrtAWlt9sA71XlCMyWSoRwE1bGkPdFJsMKsVfZMwkP8sjG3nw0Dz9rgdiX0yD1xHRe3ZywbDjCSKPrKLhdi\",\"field4\":\"L5g0odxUVFAxb9s9IBAt4oIkO1cPPYdnKGIt997vecmiHRu9SLleDkWWQkSD5YqVKVLQgZfAalEL6Q61eEShQvOYA0rpFjiGdhDn\"}},{\"stream\":\"gen:46\",\"id\":\"1730880588445-1\",\"body\":{\"field1\":\"bKFUjV9Yw2BFxs6ZsoAyO6jLiVBlCeFgTTfGKqtrhOB68SbkNuiQxHkHZM0Oqpxgm2oOQaotWl5gDAQeYk30TfeT4g6zVne9MO6s\",\"field10\":\"bz7zcg3n4WvNRYbRrNv0ULOcVHOLzquhv810Wr6oQZWPbwdTr8acXUKa5FCiYjZbPaecqVRYJCzNAqYJ4ysa6rOSsIcTeadgzSgF\",\"field7\":\"5X7tvo2qFaCa4W3FGeYIzuh1qxmCyZenX428Al3dzjH9amrILHfnuMNQ430gh7HFEwFtf771dAK0TmuYIA4AlmMlgpAtRbcsZqLH\",\"field6\":\"OCn9BwuTRwL51jhfFTpDfZWXbeCSBgArK6dIuIOVc8Qi3MoWxZUEcjl6kaAfs2Q6JpWl8juJasPWcjLMuiJFp8qr8QsWEJiDZWgG\",\"field9\":\"xXoWy8Y2GJMcLYNUAPz9gtPVpa1jEbDX6ZZW38P8HvI2PAprx3HzAXskWMYUtKd8QlJKUWbn5QPsx9BYB6p5PTJXMxUzxZgWTAtS\",\"field8\":\"A8aVxFYtA48X57cde63kW2EuRJzeilBQm1lmjln2ycS1ZLvIaQqS5GFts8WYgkPIe9IIbQheY5OPKpIg2rtfo9bXRypfsf1nhvrb\",\"field3\":\"cgWs5HgYb3HNvbCoLka04MWazdKGmjr5vs4JNh5YBVhG1KQBJjCAE93iMNRF114ACXDBwAzWqER899sX2x9bbIofSzMIgaZGQ63A\",\"field2\":\"h3vbJ5i3LlFWPuvvFQe6bcHmlKrNgs72scGIjSuWyaaX9FAPglrK10wYJzCt32gziqt5OEqztKa9TEn21ld4ElAnTtfCfHyHHYU1\",\"field5\":\"4EbdwtpaTgbngZh7jqcnFYJhLvRcNBD15p9s61dOb69dPwWAVi3NF4Jtn9mAV6Vy2yrBPwkLwRBrMHzKFsxcnf5qLMCY8wlZ8Efc\",\"field4\":\"Atf94aKTTAxL9k0w9KbNuXBJVth2WfY4nI29YoBy0iFwFUSZcNX9Wd1blC6kCbTtTkSp0JcbjR7cVonqKFPH3NPYRIrlDuRs5b9U\"}},{\"stream\":\"gen:46\",\"id\":\"1730880588445-2\",\"body\":{\"field1\":\"m7aErVotgz0h2E0Ry309vOsv54RnHb5jRjAr5ATb3ATQisCK3CL0v8T7fvErwlFcvUY7WupgYhneLC6Jp7AISlaO9okySZLWrEYm\",\"field10\":\"7JK1LAlotTY4GKBtuyGDx7ZxRimJzmo9Oftc1DrsooGnBuuYvpY82qKgwx6Pjz370WB12ipVXG3AO4ECMr2ICTXg8Q1W7xT7e33y\",\"field7\":\"3cxgnO4EsHQy8peBfN5WqDUiKYXyAk5p7oAczy5JYN99zRTmTzdiJe60JiuY1o1npzO9lqsjEqKHUPlCJWwrGS7L6KlS6FB9xVDx\",\"field6\":\"Vz599vulWOwdf4OmBuUNOg5NvQqm2x40fVgHnPORQnzoBf94hjYbznIIjQVZsL6brDI3834KuTUUSjypMwR8KkbGtoXj0WCUAnIp\",\"field9\":\"otAFqucE3mkkQHiTxqNXNo2aiZAKG16RTLmYMHE7F7SggNBuvWKwhTqHE6A38Fbwm27pD17BbeSYAK5C1433oxGM2sNlPMfBc6UN\",\"field8\":\"b8pc9xlKP6gzsclYnsZWJYXFCBOjQWX4tYNEoTKK6EsrmKMZf1KpTxnc6MVtlWoEqzqkqhMuRwmFvUsqDKMMYKbkYTT4p4waUO4L\",\"field3\":\"rVFdl5010aby4P5eGG9FGDxUr3O8eANoqZBVSjcM9EpEGBV2ZFa6eZ2Zz2LNso7QQlXG4eNv0MINZ440qxH1uuIbiC0Fs9qHINJ1\",\"field2\":\"zHtgHdMhAn6q3d0XtzmQVWt4xNEbBZCBFdw2w67IPsE6FijDHB9olZduym4rLUm6eqeNsCfMnVahVHZi8vMDsqrkYpRV2RMcRtmM\",\"field5\":\"BKjtngXIfbyUPTD52m8eTHbiEBFpOIIRMWLKUzTCHbIa7V6h5wfgaKq2IzOLUJfE1PpOBqAuvlpYAOggNjz1Wd4slC9bb31RquF5\",\"field4\":\"oGZFvEJs9rHYOHM5MWw2hJaEksYIiXCd7amTCasspHisRYsOaImRn9EyAfkT3NgQCwxMJEcmNuZRLRm4gvdwmx1VyrvA42rBbPXx\"}},{\"stream\":\"gen:46\",\"id\":\"1730880588445-3\",\"body\":{\"field1\":\"cBgB3ugzEaIHvu81OMuGJdhHAp0JxyGsP7MCNqiEFzyt0GYyNXFrHrWTllvOak2Bqc5c3s1DAqu6aiKlRS3ndbgn2izE4GSNwjqx\",\"field10\":\"WrIBHuaC6RFgqYJNCiNBVLuykxSE9BicEAsLUsC0sdTxPm8kmxcD7GyB9I7HTSAphAxNNZYEeJgrWP2gZ3nXDlQMO6NQvFRIxRI9\",\"field7\":\"RA3gHxVIy2dMhfhduxHjNYhN973OMMjen71toLC5DPRvKlq2Nw85vs7i1rdwVBoLRWyrIzRumhlt8h8tPSeXFvz6xQsrWDWbdxup\",\"field6\":\"ZRuPNCIx6vmRgrK3esxgm6ftKcEeypVLlgVwdSBjd5xbOvDW0Ax4KOQBkk95CwzBfsxzY4KxrFUI86PqmTLiwZD8tZw2pMWMS4o1\",\"field9\":\"mfDT1KFtWQBL8N6pjryjp4mWX790n9wBAdikg3a6JlzwNysArjK2Kyd9tgTOTNc22U9cbMYrX0Zpli8MAn9Z8a1mB5qdmO6JE6Fx\",\"field8\":\"8iYPPr1Yk8NpwJjwoBcsQ6YRB7GWqnvGi33i65ab9c1LkGMlMliEXb9Fx5v0cvUGwCvZqabbUb3821XkThRjlbfjRHWTtfa99NkP\",\"field3\":\"St1pAqA63KfSl3dL9hzqlG6NyRBBsr2blJqW26CaTuyCXFTRLPMy3YcKiKfH7OfglpC3GNvyzuA2T1wa5n0M4RSfq6dly4ep3ubC\",\"field2\":\"R78z7NBAg0Vnu4sPU5Ev5OwSdBhZZgBJzsK7Dg9puMroFB9JhrEBLoQCRIULKqN6fYqrSn8SoJmPmheXvekws26FwotTs9yz3yMz\",\"field5\":\"9U4gg1zKmurNFS18LTltkF0EUWksZDrf5hARo6rX2YsPD5sXyUFvlueh4aUiia7iElwuWtuaoB3Ac6ka3wOBPhBeseOf0wagmLN1\",\"field4\":\"5FpmQZNZmYyG6qxIcXcJoXb3Hc9LG0FisGrpoIr6ZKgc3fGYgs5TqMPTjHxYgnoi2ZGYbw4ZnVO5agRn4qzMjgs7ZhUjl42fOfAy\"}},{\"stream\":\"gen:46\",\"id\":\"1730880588445-4\",\"body\":{\"field1\":\"IB2fDs4XhVMDOSf4DDkROUcsQzLG0uIpLbuHv1ahTgbP5CRDeFt5s1lIE5WfyPoLu2EmeniyvJjR4MR7z6bTOqslnF3vonFiMgxd\",\"field10\":\"iTqNPcBfSNuizK1UZut7sT4UCkCTzNMIh2ebRI8FsCXk9yrZVJViVSXFx3xPduj78NgwmS9C1LcfFieaAbdSo9QQSDp2jy7KWcM7\",\"field7\":\"H5XaUXOnSrhNyJwr9ITcWMjHyZOLjK45Ndj8HDXwiMNcO9WFJ4rk9WE8qSe2l1Fvp7tOTiNPxPhMfEghpZ19yfcdUsR515oFrBmi\",\"field6\":\"Wd1zHkjRhI7vzyCOxoMVdDAzKPqFOUb0DXVWwAVAgh8nCahqpqQ1d83XdLRd7asqKPZ3BnXHMzKkvjBR9IetUId3cZFZtODSb3Fy\",\"field9\":\"3UZ8r7yd0pGddRkzHd7ekiRAqp087NqgkWgWb8CaKU6coKO81noDgmsJn906jJQTgA48T40PzcNxXRBfR2qu0hlO2yVb0qmrCzAR\",\"field8\":\"dBWEH1xllr4GjHPNkguvuhoAQCP2aXRSTGoZUOWVgzplZb5hKa7uTqDEiShlIrXAlskiRfgQRMZ2nXwaUbxsGbCOj15kSKmtu40t\",\"field3\":\"XnVT7LSuwBxVsHymlBnIKihA5tMRFLV2qiN0ZkG4dQVMd1IgncAKFpetS1eTdoF2bqSkGtrJz8OdzRxVuIJ6RRaC57P8Byc937dB\",\"field2\":\"PRkBUrssqEWMPNNPlxAVCj2h0T7Twk3b9fjGUxNzxBhh9eNQ9GpaJqlK6fwCa4xWeo9fzOMJ6zjC1HfMMy459V6vKjqhouzzDLBI\",\"field5\":\"7h32xWJlyV1McsaFGMYU6CtvyMEoKnwzkJSv616NTRX2HZlX1xG2mUo1YEl7KopGAM6EDMJezheYm2OxqPaAhxK5KoQ6m0dnhvY9\",\"field4\":\"VLeZW7tvgO4MlcN5fZ9CfcwEEPzijjXHFQfsvX1yax4wfsdW0AVUoBDHEmTImINrkfkAtVOWm1MJzFrbVogkjmF7xUyNTo2NghbA\"}},{\"stream\":\"gen:46\",\"id\":\"1730880588445-5\",\"body\":{\"field1\":\"M54llDlfncljERIRoveQDgh066Ndd5wxcko5QhtrsIvUY4kCdYa8Helln9RfNdpy3tdPn6AVdkg3zl18BqoVZKHinGrgApETick8\",\"field10\":\"T9g6pHHuLismi3ySUxzlc8ZiAw0l9c9I0lB1lcnwH9Kgmv7IX9w4UYGbtscVKx5A6tmTmKFNwdf1p6AwuNaaP5CEm2tLAvkOy5Io\",\"field7\":\"c2q10E75w4SzwDlQB6XnksEG4cPZ1HFvWtZQMinJf4GTFivwtaDCqksPWZMWWDYXXNl3WJUKjRn0kiDuiUf7jXq9WNH8mSbfEJv2\",\"field6\":\"e5hkQHma727rqzdif0Y0PpVuJxU4G0CNty45Ejf4YIWui3WVqj9Cs4HS8jlnyhmgg8yr7mckbGEojsWKjft1KPnI5d7HreId24bI\",\"field9\":\"wy07CPvy1wQePmQFL4hHphbPYCWF2EkbevQqB3ts2A9bbIDKMGbJj3yJ823zJgb32ceifjtnKdjXvp84g6A3BtREb3xaupROOOe8\",\"field8\":\"XnzOxTdBowlPceC8ggQ6S9NrFUDzrWF0dMKgm89IHRoPXGdgyDfZ2iPsiXG40Pif4UxFwtEEpgDtHtBhhnpI8byoWRcQsz7oG84H\",\"field3\":\"GuxGvPoJdTnjprBzvP1wFbmXEAYueNu1Qn4eDKwbqFMaG1XTrqenJ5Rzm5HtqssK0Fw2xzTznfn17mtK1ac3fJb3HP3CWwypsXSz\",\"field2\":\"8mADksJ4O0uRq30XQJQvgBCxuxaAsPZO5dN7cNjI2auFTLGr3YMRDvWM5AQjg0W4WF7DdpPFcLqfNq2kdouEVWLDtTjS5FjdvR7l\",\"field5\":\"jDoOMrXHGcEA0GaTKqU9uoxVLMLl6Y9yjgye1dINu4OklFoHCnqeUwevCKXJH36R2zP2SUpBFddInO6ZaVmmYHJQfdSkj1pRYL8v\",\"field4\":\"rejOYCfr3RoavCPGy11dopy9XGlWXXy3FLF18j3DjFpfCAottpgmzVkFILLKk6SlSTWMVq0lWtqz2wxyrzuy7K9eve7FUueCkMhj\"}},{\"stream\":\"gen:46\",\"id\":\"1730880588445-6\",\"body\":{\"field1\":\"xg9G6uYjOjrSgfdeqIsNmQfkhbaPHMROYXHUWLZwRmMMIwCdDHa0j1ovQVRlzhW6ypJPVs5FIjEFZVOWGlChwsmepGV0W8Yg9IAC\",\"field10\":\"LdTwxpI8fo9CgkBtmvWEyEX1hpzdcSYWTCCjoF18k7IePLqohsoNinZQ2HJhp1S7nDGXWtDHVr35mLW20r91tj8Z55MIUxcNQYey\",\"field7\":\"pawsQIeGfab9PaiB0YHjsd9sJZxb3epsINNsSo9rgGlJJpudFNHRoHsPnMYfSxuULOw845xElBUOIva1l0N3f9r92vGw2O8x1VsZ\",\"field6\":\"ENw10cs0ZHLUxPWHzhY0MmBCzm0r8BNUYzAIqkBMRO1EzmC926mno8LE6PD1LrJQtWQqfZ1AwEE6ShPXpGOruwu1p1iiZjyWUVh4\",\"field9\":\"EayR3G1oXBmx0TQ1VMXY4gJTOdgKOf7tSVQPCNo6bEDPnYoJ6dGrpFTlM6NKEw01i8GeUJdEXpcAhXvD1GJbrJxmMk74i2llCpz8\",\"field8\":\"UUSgEnmeTwLroeyc24bUVNqKpsOkNMzMNqLoz52SSd6igpX7lKklgA2oeA7FOSmqGJP8UXqJjUWQ8PTiex1tIDSFguhTBOy9eaU0\",\"field3\":\"vJOoSZNZKBcJKgLwXPtHgMJpiTxrcmChf91Oq1sKmRUs12cb26i3JUUhpOIvMkvYGx9fRKI0uGlKJrT9yU4k1jbLifrhWLrQMgR7\",\"field2\":\"nx2wbDSSxYTYiBpa1TAtN8byBMpCYIDPSQCbVsmdEMG5YAXZKj7HTWFLSWtNSKDO4H4AwTqDLdptRZzSXWO1CAMC7yhoYRBiFURr\",\"field5\":\"35zrY6I0YQ3qCqd8AC1zZgsHfQ3nAdrbEH4jmNVNAZn7NyklgcZb06r14K1e6heKR6KYB5UABpakmuibZw2pLwBWVL8ofc4521Fw\",\"field4\":\"FvqtfUDoq5fk3q6JYErHQdS6Px78pZzhR61slKPowLiVahdkHiGGOoBv6hootPY9rRwOBSKFqNWQtx1ZlxAJWIkm0PiVJBdID4jA\"}},{\"stream\":\"gen:46\",\"id\":\"1730880588445-7\",\"body\":{\"field1\":\"RnS8txpBFBGhnY7Yi3CSsj4fp4eQr3A8h5PJxq6Fn2rWLvI1sy3cBMojkeE2HyJKFgBjtMJpyZ4t4n9dGdqvC9UQxkS7u0JIr1E5\",\"field10\":\"zEfVePruU36apHOsV7j6GtndKnuizStHRfwUn6Umlm6nv9VWcFVHRkem6KDxZWwrs18mFKLf9Aulrd2FInwHNH1wBoh2RpkKODwL\",\"field7\":\"Ro3n57ZxL1F7kZ8ddnzuRi0lxqXYdJkh7XmNNkVuxfsZUu4CcAuHBFt3P08NeBKo415VnZqOsg6Drli4cwtx2LY7VzvUkU9lohcN\",\"field6\":\"fmJlLwY6Eom9BgPIRzogKQ6rKZ4SbJMwwveOWeQRtbKyrg8H88fsSrZfegKm3JHW0PN8obj6J8zT5HlKZGSpUdpUuU1RegKofpN5\",\"field9\":\"pEe2m5WfNIaiwXIMMAHpaoJVQuNhmyG9t6kwVeIQuXi2gGbFaNq4t9h9ZDUZrIHcTJnKLXi5gCULZgJpR2XNDB2tpJbn2ivsvheL\",\"field8\":\"aQOpqa8RYutz5nf3gXEiqzrxQQksZrEboBjfErZBcDKQ4N1lq8JEWTnKCs1NmnlazeyG4XLRmVMBX4GXqXYFPekk1bjwg85bdv1H\",\"field3\":\"bDMsv7KFEtqCTbi2ZRZLV5DkoWGdOYr5ZC4jen1l9nN8bIU2Brc3jIyMrXL5z40y7zabeDfh8uEnNi4Kmtw34TyhWB9I7IpppHL7\",\"field2\":\"1vBt3vRroVbvFF0WsZGWKMXYshl8t9FhMeqtRCZrLXN3Itdh46Y6A52MEP9i6opPtgymA5blU0BgP62kR9j55ImoIlnjkbRdXYWi\",\"field5\":\"g3DFMSLylsP2yeYW57Rei5GwCbsBMtZh5On49uvPJGX6WQFxC6KCLbFFtT2nKlsUxdpVZRjYQIxDA7eVgV5SMaqlEAt4QyWC5Rgv\",\"field4\":\"fYIJmDReRshQ52dUSaDUsokOUaSoXZMO06f0Iamm0zP0qGNDePBq7sSj7qKyTYE7PKtlScJzGz4ABNeiWUXCEuu8mY8nQ9Fwktkj\"}},{\"stream\":\"gen:46\",\"id\":\"1730880588445-8\",\"body\":{\"field1\":\"F8oWEAoZdE3zVjvkJ4EX6JSu6FbqEfEqWmM2g8TjCQtjy5sgPYbPnKPapp9vciGvJNvtT2ReTGGXEGE6CLsg8LWRP678rCDFv48Z\",\"field10\":\"s7cNmHkcJznaLN6hCVyvhKPPN8TO7k6JtrG6PIZz9GJ3S4ZLDMWY21kroiKI5OqfompzTR8n07dS3KBvmXLz717mb9udBPuPqj1c\",\"field7\":\"gzF1H0gDFlsE6GBcGBH40AOtH1pFjdZIEY1lgnfFeSNSGJHBUnvY1hv7UwrOlXL67gtbOUGTI6BYlzlwXbDjoLpYBpcdegxxrlbd\",\"field6\":\"aLOOELmGC1SA8oL8IpI3xpvkBEUHJAafwIBgeMMhnsiMgySqqHzltJQgLKrNZQbmmMhBosQmvm3r4VOGXlUe7SNRbpMDRZiD5en4\",\"field9\":\"vQGaGuoGMPBioQElkLb3BlzaxUFMP0apZjGxkaDceoL0Fbt0OlmyDsCAQLb3N39lzVVLXceQX0kDOmbqVVr9TZr3LMrPMOwR4UoM\",\"field8\":\"CHboHdxgBPDg0tAL93xUsfZAPizojtuhyyqELLeS0ihqQhiOd9X5qZlFwKwTZx7GLGbXyJVPWGiGoaWy2UTWDYjTOwFtmBwHJTBE\",\"field3\":\"4qxXeIB33kxk1AwDj1pgnBA1ayNUlbUpW65awrwNwW8sx2AWlcX5xz6hxMCa6SwEfOWT8CZi0U1FYhIhu21TYHwsCT8joal9Mrac\",\"field2\":\"XEbViVtvVBXxiPPhS0CE9yJnGoVcMpv7ttrjB42F5uWC0TpRUvs8gBBXC5MQZT7p4WgiE6EQbt46OkWodzqL1wUECh4QKj3TbwJW\",\"field5\":\"NuuVsEYGTPGGvgomL1KucBwfshNLEu8XUDrzBFdNSkn65z9YN0ioNUbd51sBm0OGnfqAj6hxUVY3YvGBEOhXff14lZuqck0tAfSs\",\"field4\":\"Ac9cIrZQWE9SHTbP6WokssU433UjYQVEhYiwmih4BkZD0DRj56aGQD3rkMsW0nnFsBBSg8hPfFvKwrBeb64Dbxph3gCUtFBzApet\"}},{\"stream\":\"gen:46\",\"id\":\"1730880588445-9\",\"body\":{\"field1\":\"owLQA8lsMzbO4zhJofvc3XX31biealWzvjpzrzstMeqDlKnO5nsILkmWjlHdZBYCpqGkRyX8UbcYbRFY6GgzJjbpJBtlBNTJhAmd\",\"field10\":\"12FzdDc9vw9XEfDx8H1E5lkTRNPLBqind5013Be4Zxv75dHFED3BCydV77qvUYmNByVgr2IERKOkvC6jcR9ho8P6IzQHvosIgrZb\",\"field7\":\"iHOAjNs6dDNDCoe4YC4mX9QlU9msByaEhMnS91pUYyj4uEloTVaVDaCYJ286jLOUTND9yB8t8yRxCOQ6lq6KzJmWQ4LXAqt1JLyw\",\"field6\":\"GP8x9OxtSZel5KOWj6zEq2F6rrAvLsu2YiOLEpNmSIusyU5tXW1gTP20TQ5N9p16en9G9srJxvQ1CSKZWvYa6DzRD4jH5kLmqWkZ\",\"field9\":\"gA4YidQUhCrM79vaVNV9YAg1vI1lnv4p0qHmBhMHwjxQjMjBCaZJgH6QKsWafqsi4qzrKJb0dhwkeiL4AQHaskvI7MqslgL4Woex\",\"field8\":\"789pG5CIpc0XWaceoXFR9nC51lMZgZu8NKQ15UAvbTQJlC9gl63itsIuXJdKXZilAdQielGlRV8Jz9xW8mCjMHtkjfbtqWkrNiNo\",\"field3\":\"AAVY7uOufihckkfNVu1kO45itStg6VCDSTWSJqKum3xBVei302ENHEWaPzvVjcGUTA5GZZ0rSBwLB1sFKE4cWWm9yuUpNMCpY6QL\",\"field2\":\"vQEb5xTRDExVQhjXL0XMlWwH3aktH3eAOAUxdftZkaeSq2gARGjei7RsI47fW2ZMEtvyGgd8uEdaORUtrkAfAchG9O4YJ3IeOfYb\",\"field5\":\"YHcnSA6SyNGn95miLHRJTt4DpgTCF1gKYuCWrl2XCWHzQPxfxKyFybuvyR1P0fkEcGIUwP6uNCH4GEQrfRATQ8zBXzCyln36QFld\",\"field4\":\"1fTfjUiduyF37YRyWLzTfej3troix23ckwjo8AYoiAUTPBo4l8KTweOgnpL1yDXPPA0wRipw5YKL3Q8jIel046QjGplKWWz2G3bx\"}}]},\n {\"key\":\"gen:76\",\"event\":\"scan\",\"timestamp\":1730880592560,\"type\":\"zset\",\"ttl\":-1,\"value\":[{\"value\":\"29\",\"score\":61.99395938946126},{\"value\":\"47\",\"score\":65.51825442229809},{\"value\":\"78\",\"score\":71.64865866195723},{\"value\":\"70\",\"score\":11.979082207216807},{\"value\":\"53\",\"score\":17.5744460605928},{\"value\":\"93\",\"score\":19.241263382800955},{\"value\":\"61\",\"score\":25.95513456386509},{\"value\":\"59\",\"score\":91.46933851612145},{\"value\":\"67\",\"score\":81.05455770116772},{\"value\":\"98\",\"score\":50.18098172346641},{\"value\":\"48\",\"score\":91.87046769234323},{\"value\":\"66\",\"score\":54.47017518738756},{\"value\":\"88\",\"score\":71.81714076772451},{\"value\":\"39\",\"score\":1.6381804398745259},{\"value\":\"56\",\"score\":31.233612011914282},{\"value\":\"14\",\"score\":12.8321291539079},{\"value\":\"12\",\"score\":22.781677085684183},{\"value\":\"26\",\"score\":66.86188005612784},{\"value\":\"55\",\"score\":79.20959514532706},{\"value\":\"57\",\"score\":78.85281729961797},{\"value\":\"71\",\"score\":81.99293852919305},{\"value\":\"99\",\"score\":12.36497945612669},{\"value\":\"4\",\"score\":34.77666198845489},{\"value\":\"75\",\"score\":11.608706122786817},{\"value\":\"21\",\"score\":53.468063896758935},{\"value\":\"25\",\"score\":97.89368359775949},{\"value\":\"22\",\"score\":80.61224147427704},{\"value\":\"62\",\"score\":2.1489599308935903},{\"value\":\"52\",\"score\":76.53368803217433},{\"value\":\"35\",\"score\":79.70243660529015},{\"value\":\"82\",\"score\":2.062806442323406},{\"value\":\"17\",\"score\":38.36658182739868},{\"value\":\"42\",\"score\":83.72578340975004},{\"value\":\"20\",\"score\":90.86807163862079},{\"value\":\"1\",\"score\":92.0744115457575},{\"value\":\"51\",\"score\":64.27153597824272},{\"value\":\"95\",\"score\":86.1177656036057},{\"value\":\"58\",\"score\":52.673381869438785},{\"value\":\"69\",\"score\":89.05457843592484},{\"value\":\"41\",\"score\":54.61229317415219},{\"value\":\"33\",\"score\":43.76889967915424},{\"value\":\"36\",\"score\":92.08810910417192},{\"value\":\"3\",\"score\":8.479172254412426},{\"value\":\"16\",\"score\":67.91048033993523},{\"value\":\"100\",\"score\":16.148904950892796},{\"value\":\"90\",\"score\":39.9575278794339},{\"value\":\"85\",\"score\":75.25212535558691},{\"value\":\"28\",\"score\":37.038317952714465},{\"value\":\"54\",\"score\":95.29453105765401},{\"value\":\"63\",\"score\":48.76442244613337},{\"value\":\"97\",\"score\":51.79040753989882},{\"value\":\"11\",\"score\":19.88995767313293},{\"value\":\"64\",\"score\":1.399389305946086},{\"value\":\"46\",\"score\":39.50708712789347},{\"value\":\"32\",\"score\":58.678434397554334},{\"value\":\"73\",\"score\":79.0431764923891},{\"value\":\"72\",\"score\":34.02827169794818},{\"value\":\"50\",\"score\":21.046793256482665},{\"value\":\"7\",\"score\":84.9821976861931},{\"value\":\"9\",\"score\":9.079607737257934},{\"value\":\"6\",\"score\":78.13729901502275},{\"value\":\"8\",\"score\":98.48612355161599},{\"value\":\"44\",\"score\":60.67671593248859},{\"value\":\"43\",\"score\":7.439089207777982},{\"value\":\"31\",\"score\":81.39472084329637},{\"value\":\"92\",\"score\":65.60948791677914},{\"value\":\"49\",\"score\":9.818264045346936},{\"value\":\"34\",\"score\":71.11701571941121},{\"value\":\"86\",\"score\":26.07052123959236},{\"value\":\"45\",\"score\":71.4755284032945},{\"value\":\"10\",\"score\":85.46232492223609},{\"value\":\"74\",\"score\":2.4700144098837695},{\"value\":\"65\",\"score\":49.26656458856867},{\"value\":\"38\",\"score\":68.6491483208855},{\"value\":\"19\",\"score\":4.352169074006007},{\"value\":\"5\",\"score\":26.618782969099218},{\"value\":\"84\",\"score\":0.2666151662751415},{\"value\":\"60\",\"score\":5.179592740309458},{\"value\":\"89\",\"score\":9.771211364287758},{\"value\":\"15\",\"score\":92.60306774910086},{\"value\":\"81\",\"score\":34.04050810548605},{\"value\":\"27\",\"score\":66.3310823631733},{\"value\":\"40\",\"score\":70.6863455564696},{\"value\":\"80\",\"score\":54.69578996494672},{\"value\":\"68\",\"score\":14.23327857912936},{\"value\":\"30\",\"score\":86.76054863285808},{\"value\":\"96\",\"score\":4.8316062176204655},{\"value\":\"83\",\"score\":11.981265962656629},{\"value\":\"23\",\"score\":95.10607354860679},{\"value\":\"76\",\"score\":1.9479438261231774},{\"value\":\"77\",\"score\":69.47774968033242},{\"value\":\"94\",\"score\":33.937869357253035},{\"value\":\"2\",\"score\":59.78742124976163},{\"value\":\"37\",\"score\":55.84720523443528},{\"value\":\"87\",\"score\":83.50918485647719},{\"value\":\"79\",\"score\":4.9526994226711025},{\"value\":\"18\",\"score\":73.22667476430178},{\"value\":\"91\",\"score\":95.27200666673161},{\"value\":\"13\",\"score\":62.513227056823375},{\"value\":\"24\",\"score\":55.13832362367806}]},\n {\"key\":\"gen:99\",\"event\":\"scan\",\"timestamp\":1730880592560,\"type\":\"ReJSON-RL\",\"ttl\":-1,\"value\":\"{\\\"field1\\\":\\\"xYmOB5XFTKnjVvYzix9r5eMkoIYQtDMKtCO3OhxTQPjIkzPRfurPYwzNzFOIuHIZdFRXyP4drbWF1wOtvGMPXgNmUwUTM9Uq8rOZ\\\",\\\"field10\\\":\\\"B0GyFlOxina7q4Ad58ZwcdO4cKO0HVpyTMISRBzvXSHC8NEyT8Ciq8AH77pG5l6MncCwKZKYdTNNG2DKrrVamz82y855YW165PPW\\\",\\\"field7\\\":\\\"kunjl29whtcCaD8u15Kq8SZQzPeiABLuaH3w87FmuGRewQ8ZQlSsx3jq5R3snH72BeXJefZQdR1eRuzJiXXvH6hF5P760X7Q131Q\\\",\\\"field6\\\":\\\"twdJ1HbjLWGyzkYRi4lGCW2xubqz4TuJHnwclyLyDpT0jfbsdLPTEBvFZcu6fkadlQgqCqPMkibHc1VkBak3uR3Jb7xpdlADWprn\\\",\\\"field9\\\":\\\"Fb5JOysaYkNa0WHjiNMbDoQjixqQLsOMKzovl2fUMs9WHYQb6t4r2Q93ELn721WHo2GZ6hiwRj8fVnEBlPH5nzpLDwUxTVgQFABZ\\\",\\\"field8\\\":\\\"07yxmNtkiPrWydNhmwnqzuKQ5et1JJJUs1bP6cbcPkf2vNT92svSTn4dOf8wdfpoemJ5lUXjUSZkFsdBuQzrUu49LeITouDoFVT6\\\",\\\"field3\\\":\\\"0axc13AwyRw3mCdBpj5y3u5SN3vqnGODWCAcRau17ySUOMSP5VbDW7eJhjkhfYWymR9sEt0X0LIl3M5dVWRaO3BFrlW3RDj09agK\\\",\\\"field2\\\":\\\"cplvKodjg7iJUGgj6hXNu2szPRanpKmiKHB0wFNXb6bhciQIb6XPQLxRB2PqkOZINA9zndI8mEmvQjF62GyEtrQad8GRaRpD90qj\\\",\\\"field5\\\":\\\"leJeVEgU2aOL5GQxlR2NDnXkIfB2619ki1248w3K2F3b7zCMYkCFYvItKMmqu25ibNKfQVYUFzKqwOGfgvkjNJLmAvwEvBtX1hY1\\\",\\\"field4\\\":\\\"6WFJQh1iD9R3nxJNb80Zt2ZbEAIcxrLA3Tya7FrUNKNyRrTqOVjmTSZzTVOSRgrMwcYUmo4Cu0JJc8edmCeXVnNOqbd5w9SDNeNI\\\"}\"},\n {\"key\":\"gen:12\",\"event\":\"scan\",\"timestamp\":1730880592560,\"type\":\"string\",\"ttl\":-1,\"value\":\"Gx6u1XDz9J1HQaPj9HUiDzRL0RAzl4ybZUb6wBx92Uk8QIeZUwIVOR7jMNadftkRTVg35zZkdt4FrfsDUInWKgyt6n53v5wunvCk\"},\n {\"key\":\"gen:50\",\"event\":\"scan\",\"timestamp\":1730880592560,\"type\":\"ReJSON-RL\",\"ttl\":-1,\"value\":\"{\\\"field1\\\":\\\"Srac4L6RuHYJyWqJRphDoeTLpDY6qc6Ns6ge3Iac9yew5SKIg0KgHgHCnOtQvJiq7QRHJb1ZvpPu4uEInnIrxpbqBCu8RPQyr8Qf\\\",\\\"field10\\\":\\\"nn83xwMDWNXX2RLXZyKadZcPvvcr1Qd1Kcu9XrD0MmzT5FfvchCuyzssduvWxyTjWJbS1K4a3vqR0sSLFPZMTY4dY3Yamvxz4KmG\\\",\\\"field7\\\":\\\"ZJZEKvNv8dj9mkoShID7IKJu93hkZuBuMEsyMFaSGBlZs6PlKIboUycBWkVHBa5jwIWHrQD4MqKSUHRzZbqzVb0KT7gsz3lM6ymi\\\",\\\"field6\\\":\\\"bWrRzQxQ7cEo9W9Rzft1FNSmtQ6m0JsYLUxjnctU5iwU4UX8ydG6nYMoP7yr3oMucZJy8CqDUgm2z0pGYkeTd1kKqKrkXlhmm5he\\\",\\\"field9\\\":\\\"5KBNnAdeBdLlLDCXWHHcpHt325bQMFfJ9kljuH9f3qa80rWRf4DxUQB4OQ6lowTJgqUsrYxKgqRqKAlutQLtEbwYbJkn2wTwtBEQ\\\",\\\"field8\\\":\\\"9QBZkO4D8CekqKcJIIARWp5nAG1F9HJzIzeyYvHclCOArdoHgr4u1i0yf9o15s4DSzaQ4bvdQvLbe8Gnaj1Mshg2rUAYOeMohFlz\\\",\\\"field3\\\":\\\"otiV08rxmzxNTRvPo3gOeGpaOVyKMd593bVBRrbmRYAmJ1BqP5ced7yHydJ5nSlmlwDL8cf7RRYd1cUkkOCl0QDkMGN2O4DSMh71\\\",\\\"field2\\\":\\\"qEi2CNV0kaJxBLT7fyZq6uGojDTwCbzkme29d4KAdzXG4FRDJjLYjXJ0e6VAe0WeNSQGNslb8c9PxXkvq1xjxL7siEIT0YA4jmtD\\\",\\\"field5\\\":\\\"AQc7uuoUfd0Uj2pVaBb3a5DBGpnWrqW65V2lw48Imq5EG62ixJDzERPDAuBX1hjK9nTBdYOvKSTwOm5WdzkXbTuvWdnvYAFTVM0D\\\",\\\"field4\\\":\\\"KjQpP8h2cPzm6QsAqJZI7Oir9vv7eIfwz6cdL4GOpNrNEwM2wcyC3S7FzoRwKGZ0aOMIdiM6V4qL7QEpN1LDN4qI7vh6pIzM3IFX\\\"}\"},\n {\"key\":\"gen:39\",\"event\":\"scan\",\"timestamp\":1730880592560,\"type\":\"stream\",\"ttl\":-1,\"value\":[{\"stream\":\"gen:39\",\"id\":\"1730880588445-0\",\"body\":{\"field1\":\"xj26f99ACiX34lmDPOa69WcX1tI04F7qnD0uuDe6I0YKu8HPqLfXXrC2bgjD6ZNeAvRGKuqZ5YyxaleFcTHzgw5AJXhar4eEKX9X\",\"field10\":\"6IdJ0cfhYrncE5CFyQE2qimRYbgYcyou0VQ1eYCv0x7681d2forwUKOxxIITWW4wMUNWYSOZUlmuBXSqCBWfb2Q3YYKlmcQ5RZAC\",\"field7\":\"vkYbOORsimlPT6RsxKOrrMLPmAqBJdxmXaYzdPCyw8SJiulxPFTathZJ6ZuHeXp8NksFfQboUiORiDvjOUeRQ8kviVAnoYvw4aBB\",\"field6\":\"PfTjZu5Znybj1H2N7RK04s55nFDVtUnbVlFJ5q11tJOqwvOaAdOU0yzY5nv0RvSSUq067GIJgLyJ0ygWC2bfFT2jTqlP66u3gF4P\",\"field9\":\"XuC94c4L3vQfVI3e81sq7UX1VvEhiff3oBcTjsHubi2vo5N1x9ANcT0dFXJzrWbJ4y46sNJcraldIHl4eJYJ5vdZgHiAHhvvSjIG\",\"field8\":\"CGYtJRrO4jnnRusMteiJeVFCCngjNNJbb3AorWjTlE7f3q5qa38L1m8IG9BlyoC6C8wIKB8ELd0G8MpCFjCLzEZfcxg5eeIoFNx9\",\"field3\":\"g8u6hzfnJnvpRyh6PrAKQA8ub7yK3wSDr1vhrpA167J8XlPYZv11SslflIQNXfAGJ31qgC51hhAKRNe93KilCoEURV6Ysh8zKMfF\",\"field2\":\"Q4Bro7SXj7YtvQzIyFSdUBoVHl822wOYoG8foXljWqTODQBpTopQAQc6R9OuQMvBhUzYEoujrLV9R5WUIl8e1Jp4Jmb6AfgyblIt\",\"field5\":\"Uy3m3DJReVVYZ29JX5abgu8EykX98GX8h9OK7pUdz6k3vDtQs3LUT5TvLFIhvw37I8I5HXufBKAuFVOOQikGaJBiweglxCSoNFSl\",\"field4\":\"2AaE5dIpX6pCJYWSazOBPZwLZBoTEBFa3thRzCp1Hv1TEwWjqLNrFuaPlDgwg7GwcO9GGDpwin9kgbxE5GPSow4wPEYd2ZOJRZiK\"}},{\"stream\":\"gen:39\",\"id\":\"1730880588445-1\",\"body\":{\"field1\":\"in0ZwNqbgxjp8s6RuwF3UYYJCtQRThw6u5hMFfXp7NrXUWHKVPOGqdpTdfO5EJDSvNtAjcBQlavrZQjay678gHAahziK3A0IvZw7\",\"field10\":\"XJZmxp6Lir0pnEUU2zkSPJm8RrWRpdOu1PiwEQ8TVkGygQAhWuzYGlHcaZFwpUl1aI5kxMVM1jReAqtNaGsgBoZiHhfl6ovQU4l1\",\"field7\":\"jjPj0pK28BL0YmQC5HYrcr7cMUAyt7KCVEyPXXlnaQARzsqz76rUaetuuxRggLf9W5ri7sdJ7zUlUPR2UYs6roXCtDR7osqfQUnh\",\"field6\":\"vIeMHt1kwn2TbqJJhOiHNqDV9uJWJWg7Sln4ObSvS8RkSSPqupXeUmzDJncgN40JM00Xj7ZZ9F4b0655f0j4VVq6TbNHGU8gLOE0\",\"field9\":\"iuhT2NqSHmkFGbhIqQ9nSC5aB2PrqyzGzs50DH5PAlxBiaXvgNUKMKUb5rUlIx6giB5iaPOaHz5Y2OWa0F63qDBEMEiwhdqsjIhc\",\"field8\":\"Iz07isKLCyELJfgsfsAjgzBHAGRuc5ggAFdYhOboMWwqDicdzwcB5Z7QfrinSslTRdX9htt4PwuT69VI0xHltQAkoL1gCxcpmULC\",\"field3\":\"xFHpxrGi38ZITrS9X7ayXudWyBPJTxBvEj1uJxztZHDdTS1kv8F2jiJsmWgwEGmtoncG9tvxQlh0ZVWJb9N78aPx7vVY5QtyHwWq\",\"field2\":\"rC2HxJv1MZVqkO2QzMQd6mq43tjqitV7hSGnbi7OupFpXvfL9UZPBuXeLaQeLh6FfbgQE3fxq9gbbr5ZyuZUwWZRbOEDF6zjj9sX\",\"field5\":\"IXZfJ7HqiApW6REjQDJBLRvnoWjcvdW43wpJEG3Zl7YI0mXa5aHobf7VGDOhnmEfOTmu60RpXzp33xZbNnAtkJuecPynaBD3mcnp\",\"field4\":\"kWPF9gwJyOhOX9GbsnxsdE4Vptk99W8MkuGEt0guauQBNcLxj5Dj8i66J3q2pIeAkaLHcSrqpMHHfcYCfEM0kcbDzSetpHgHSH7f\"}},{\"stream\":\"gen:39\",\"id\":\"1730880588445-2\",\"body\":{\"field1\":\"OLnKMwjdyEBYeFNCmYAXIPbisZJvf3YTOcDT5i6YLRBKcnPrrY10XPPaoKCKnEbpC8768oOvWgihU7dkwh05xwN0bUhJmG7K6gGz\",\"field10\":\"uUmGRrCDaoNbRR1OGlTGyiJD3RfZwwZDPx9xEDQx5jE1X9kQ7INDN3orpe1yRcnVGmxNO85FDAgVnarQShyj2DWsTf5sf1W2wGcq\",\"field7\":\"s69DajvPR0hxpr4BR8YWnDSr407ozN7DIJdScizOXkqLZ3zSTAG0Ubz1gmR5cgK1WFw9sBMdcaHBml3rbWwxgteQutF57ReNMewQ\",\"field6\":\"sf0xpj8IoTi5lOQV3K6Z2e1k7NYXUa8mJS2Nhsuu8ojgMTy80gDYWbslIYOL6CjxrH29d79SOsbX3ocjYUYKqZx3i18bgp1Yw2L6\",\"field9\":\"va5xJJ2me7DOpRRdh2FRUlEMTbCh8Nl6IJ2AEHieHeIbcnlKg9VdWSEtVaL9U3TwTxV4tHLE4E8QvB41ZkZsFvTVTlE9tOye7Hjb\",\"field8\":\"PH8Z9lAJD7c4MYFHSzAlQjuLhqiGiGlmE87XuFkWiPAXQzQ6KV3C7Gbj5nWZMmES7kItiCFgIGtrxtcpQt2HDrtkU7mcd1lpcIhl\",\"field3\":\"1Wmrdpv4k0BmuxvYi8HCEFYomXq1QIRZj6pKAgmZLLr4QQlVHZdsDNUMCuwnPOA3iKLUjmlOj6qskGsQmScILucG5YtGSxt8nXSi\",\"field2\":\"OOPUFwq4w3dtpwqG0fEMjL2gfYG2f5skkEixlptjIIt6Wf9NimOQyYaJmyjSYnEwkQOGnI1nAp8rrFH1NNE4WE8YiOn6DQNQ2mXg\",\"field5\":\"jsxzOJuTVBDw6UOhlSMsh6o6O5YhCIpGQgDXM9LuJwyJ2y9vHOd57a9jwsrGDKjYpJwiDIJQfK05lwOBVBXdSjHEKhW0E9TBqgd3\",\"field4\":\"2tDQFFmzUZtVkwwpB75VqP33F1a2e02ya4uXrMAVujYaOlJjWjEVXerf16TAdTJDPQdZKwiB3ZYRWCuWjz7TfcWSNX6m0P4ybaPH\"}},{\"stream\":\"gen:39\",\"id\":\"1730880588445-3\",\"body\":{\"field1\":\"u7lAbI0BlKIChs3iccWfI4sQWnxqWMhKBfkHyD7HbZhfjz2do16lHT9gQh46KsZenLQqaMHz0Ebw7m83VTwqTDZfZoXjROfr0SGl\",\"field10\":\"W8s8yUfAW4FokV28DacTwoZb2xuvPKFexzpaSjEDvMNmDdougf51fBXSmrzephvFgI26E3sIF6JLFDTFhjFJ7eZJVEz968xIiiqc\",\"field7\":\"KBIlTJfZplhMkdUMDmdzz8XslZvz1u8gqek92rZSyYsVqdaZEHpz7juulKsyt7mXl7SWwJQ1gHMHlipJNGzKtjKCqccCPGiToTM4\",\"field6\":\"Zq1KK9L75W24yv9VRPxhbGQGfL7uTroE0ciAPlr7s1YatzYruWXI22mIQJmSyzrBcE90ZM9KpwUr2NHKw19Za50VSyKGwc9K4SSD\",\"field9\":\"8dnOlhmzr9sh57L0kH2WQ21VgChioxrXDmMVWFGIlaeccWGP1AMEvIkqpDV1Y6DqvKhk26y8cdwFsZgLioUC4JYulHT0yBQMIkxR\",\"field8\":\"vgDOVdchfYtIPvwMgH29R8dCj9AMwHwosvzL7MAsGAqDF6rFrF0Ixw9nwYP2sPt4Sy1f7ZqmMDsF6lW5qKwjfzwFfmJQYOal3c2q\",\"field3\":\"nKEBjz1diLubEFNokD2gKtnLpCxadcLHMty5IDLXuf7M6SPyiFm0GRfPsNcLuQNKMMg0qQ5gb95SAg8hrErCfN6PLZd7PPxDuUvM\",\"field2\":\"hVdms2z6zgWuokFRp0VlSymWqxRuDQKZbFX2pwRGEMZiCJjvStf01A2cV712SGul44V0u5daVeaeRC7Z832BlrlfqZM8zTVFS138\",\"field5\":\"5aeFKc7JSluLCxSg5x4mopnklLiMw4J3VLzcrqeAzkQTNqPc83ywfwPTougL63kHXtnoN7wNcF7GYzJznXbpMiMbUItRuC8lRUqQ\",\"field4\":\"lC81jG2Mna52bi7i0zRv7iG8VAYFjC8QiVPtL7qGyz3owW4pAQ2oo83BWstUjitbmqjDzIdHgRJAPMYuLfSrk9sGAROEX7VQppDE\"}},{\"stream\":\"gen:39\",\"id\":\"1730880588445-4\",\"body\":{\"field1\":\"SZw7gVZi7ZBhEdfexMV5GzyM9R7z4rqi1m3GgrSxIqOqTXf8DrWos0kOMCeTppxVsO2gD3oWKGM7lxJCSsgcn7TgxHn4CZcfAJLH\",\"field10\":\"Zt2R2ehFMJF7rhiSFT2bnWHrGLAAcOPVkX9oXLp93Fv3H7CxQ1tew1NOyiF8U3OE14XTernhqbBNk9jbtjrk5d6vRuZB88A7yFY2\",\"field7\":\"xX8cxlPPHsDltobogO1NPA0tPhcfJtz2dJhMl8msPtU891SXTHlmmEuaYKVuRckbUlcB2XS5E2UfWkLMwS30P23Xnh7SJaM7tRNT\",\"field6\":\"PiEGMsFcTjUDjcYkidokQXC8GoMVwh2vfwu9JZDE6YdPGQ0cMkpl43LuMya2SjBkFtE4tAFntTlUboYjAy3v4SXxO5zpx7EMsX4w\",\"field9\":\"4bovHLs6nLrYk7hnpj7gHNUmzdKbZTmttNv6MkgBxQYDzKPXR9EeiItbvO0ehhc1KEOgWlaas8A8Rok3Nk5lYXXaoqOeFmguMkLO\",\"field8\":\"OSl7ZFZxHx25v37rMtfoDkw3g0lXCq7lJ1aQa7I8mcDOUk0ZXsSQcUmpR3RtzNcPLP06Bp5admEimSNV9Dv4M4Reb76T4d6Pj1Dy\",\"field3\":\"MuePz7o1jZHfWS5uFEqMcpRs01LMWfZ4aH8SfME5OdDuhBQ13V4SnS3AQRjZrWDq6JgYEpa8SUsnRo4XWHntojUJDFiIi80LYmLW\",\"field2\":\"pYbQg9OHKQnAZgVur1C3d6nHSEGRLzxfeDZTCVchBW2BFWOcdCMlJrqtKcAgZq7Lmp0Gj3atnEuHKpJJPSWjcI9uMy4GD4ATOsax\",\"field5\":\"fSSF3kM7Z398bxxN3TnlwKVPwL4JpS5oIqLORNWYEeCaCi9yTLvYVPTlJoAb4aQdLt0PsbtcaUNx26EGptmTkFdw1KPAAoR3wf0D\",\"field4\":\"GrenyTldJdKSQhfFFLR61ZqUkUzhlW4cn5XTJggeXYXZXo59UfCf9uCnVUpqcwkThubycUYGxFusKtT3ookcJqKqqNVfOBmHwCUM\"}},{\"stream\":\"gen:39\",\"id\":\"1730880588445-5\",\"body\":{\"field1\":\"HTTCzAX8JCICk3Law3SGCxmDBDO0IPkLsKcrnlJ7xGgQKshQyWWQdgCXcGO7x6zn99Der4g5mvk0BOaYHmPhpaWGIs3kKgF1JUZ4\",\"field10\":\"SvzxPFkD3FmoXLWHknFHpIhutKZPMzvMct67ZISUHq8kVSEExFULSVY6EQ7Sgw5SVf2ajIbHubpl99zLacWNoWwDo1TyPNHiQyT4\",\"field7\":\"75PkbSIz2Anv4ZNDoXYHvzWhRis4VFjICcdUNT6h4qFkfMRA11AmJN8cSkEnSg6RVHGHtUDG1G6yEXW0zibES4ucgUVGCSbhyRsd\",\"field6\":\"ogWPAi529cvWNmCPzGc0ApW0vUfnnIsbgtz0xRL9Qi9hXeftcR2yTLDzD41zxXjLaRXwgKFFJy3kWeLZ5QkYVztjQxX2Mb0qppno\",\"field9\":\"azX6n0Ej5r1TG23i4OAXtG1zVzaz6Opx8Y9q0NSJDlw6hKTm8aTpNVnkOi9iQYnS5tyHluOQtKqf7mFasM83VotRDzHBh2xVjV3o\",\"field8\":\"AcjmJjEVpEQzwOj3LRqtdNXcQ345szML86KqnQz98fEsBhDlAlmd0De8Mbf5FP0WZYEJioPOPKveh1pcZQhmq2bFL9Uj1tGbogqI\",\"field3\":\"P1Al0wc067MynDoiaLOducBaJa9wHhZCqBtGZ6dbclbdjCKCi9G9Qgm3K1KN1a8rWpA4NLu9zFttSkHJp8ViCL7Uq9TculOxf10X\",\"field2\":\"NglFOwEc5THhNY5nMCFIOthMarUDU1LCwU1n6rLogPk6XIyFMAaoaCFmX3ZiFh4FCQRl2s98bfnkynb1eGxVFBmpoImX0YuYY4MU\",\"field5\":\"0vGM5GAeqaYiDcGp5oyNwchUQhisl6ZmuSk4fNZQfH4Hx1xz886TBzpwiFWcaFCdjvsgty8qiojpMAsdXYkvNwoPl3dWDNU4x6TI\",\"field4\":\"Eu9IuMkGoZbpOLcaRpl0CuZyNsT9uGds4ki9SCSi2psFps9R8Hxpj5lfB9S3kX1j40dxK2w8A5i4t69Y64ZHSUm3esMd7iSnYYdr\"}},{\"stream\":\"gen:39\",\"id\":\"1730880588445-6\",\"body\":{\"field1\":\"NF2w4dM7k8IZkqv3ocZ4kS4v5rvlSzEkRx2Wd3fR6m8E8DuZNXsiaFyZBeVp8JTgQXgTkb63k5VS1AdZ3JQBZWdYkvwh74ptIGEO\",\"field10\":\"lUXsaZDjyFfRBLzqXWHM0FN7OQ5VbAQcertETFVTGUZtQmGlGnHmnOyfGPzftlSw607Ub7w31VAAlkfHQ4dpYiNKxr6GmohRZkWG\",\"field7\":\"kKxVHCxkOiYUMBqsX51ODYTS0nghtaHguTbVan2Ji5Dkfplk2BuYvEN85Cqjjj3P7lq9Yykiys76iwyUumfLMRklkuUQSNnFsOY3\",\"field6\":\"pt6tfuB5QXrI8gz5RuXgm6jCELszwYkVOPQWDzrgYbsJ2BaqLpWAcjRaFYxONG6rc2vuffz21cSmmg94AQRPmbV6uLloOroptlEC\",\"field9\":\"z8dJAsd32cLeJjVKODtSnFBjLh7Kxe5oydzONzbunuxlc0LTNUPxK9iz3bDxZy3koCqbYOHfLyAp6pszttylNMxNm38XZLTw2d9q\",\"field8\":\"s9dvlAV4yoQEyKjhcXnzGdYNf4lUTbHfgtNXQV1yTROQ2ZWb970SHfSB4NXreUq9PoBRkNm18jIbs4MVbIdzBao4ehf6NsyI2z5i\",\"field3\":\"CuBl4p9tpIyOh18NpGHNtRlOE3TuFoiBhdC2pehlJdMXOKB5pl9Avsr5cFVKCmWkyCi94WYRnJ9OlNBYmp4Oxb7LiuN7tCkxy6DK\",\"field2\":\"Fhtlid83P5BuVubSyhUaQL76AnUiuQZsKQjNl5QYu7YywOweA22r5DSmJGF57KMyj67fgR7U9A4TV8psFmZMZgO1qS29066BDoJK\",\"field5\":\"VKKTVJAdt07eDR2TNtRbuRGDUA3ZPc21PrhoOeZ3FUbt7vs0ry9Gi6S4G2w5XU6p2zAQZegJFnrmfgGmYI84jQSwpyXTby3DFeUf\",\"field4\":\"wTe7uLiWyKvTLFRi6WLjtjEbfeLFRrhtTlRA0sv41OTVr7EFS5SaKor57Hg40pk322nuO20LSE2Dg5qv5lVy2km2MaoUNgd52QKZ\"}},{\"stream\":\"gen:39\",\"id\":\"1730880588445-7\",\"body\":{\"field1\":\"8AKBut64zc95Xtr1mtuPhbikSVSpsrgEhJLv7uGtyQjFwa7fmVKqtfFGUPU1k2CNBltAucBHB4ltpALNnObBjE7AvAqyw6VlpyP3\",\"field10\":\"OyQVogA5XTZC1omBDQH1hJ5hpCeUdKxITFQJEUUPYTrSzNGwe6z9Wel43uTzUeyTyz6X9Sh6Jz1imBrvFI4wbXUHRIzR0UkxtdTo\",\"field7\":\"hf50OLl2p4CpeXwVfNbfoVXN6Bzl1YJFaN2u0bDuzdjOLsFIPVLcwWG3vgoB5uRl20XtT5CFK6ne2oCy8f8EM7Vw8k7jOlcrEyQN\",\"field6\":\"cjQD0f7rcJpDetfkLYPtk3FCMlZLntCwRRoXjS60gzoZbolTvvDtEv5qflSn5TVQtivXGBhpKjXzPBTW4k8SIVlKsdHZQVYtC644\",\"field9\":\"GSNfwSTsODSLtzvNRoneVC90p7CRJvNj8DHJL3pAeu5FooPMhBCPnEUlhtxrPQ6K6XuASDmcNP6cNOuevjpw8J4N0qmquFdqbRKF\",\"field8\":\"Ax2G2qcl1hc9oUBF9zfgHZA1rEkLEwEFaXMJ87ggLNL2gBapiu3FLcfjqIxsLvaNS6N439Gsnc0w6revUhb0AMRHjENxziWQ6wfu\",\"field3\":\"ZsSsVKXf4OJ8u9isv1gRhR6gS9675ejslUJ4s6o5PcGa50a9j1deXdfTfGNv8QQ45vT9DlZmdBeHMXhd09zBzedoN1CVPiKkQHdU\",\"field2\":\"BkigvWNVYmwdpC5jrRGBPMFrLsRxOYWav4cVrXGDtCjzFwVJDYajUpcf6lFgTex1FOxIUO16sfcoClItSQOBW2MQtxaHOcC4j8ND\",\"field5\":\"7g5gcUxluoafkzgQVILw6Ojb6uHiSrkzRSNVFG1RzwKsqQaR8Tk6Bej5x80qLbLqzQruXFpzmrZG4oCIGtY6rtzAbYTOgSZq3DB4\",\"field4\":\"6SRs9pjoTEFEa0gxYcCdsKLHDKqYilm2JWJaVQBVZ7epVeh27QX3GsnBpvCvMFeN4JhowPm58Pp7j9HzVxrSyEwUepz48W6tDiiN\"}},{\"stream\":\"gen:39\",\"id\":\"1730880588445-8\",\"body\":{\"field1\":\"hO5LaDkwHx7WnH4WPwbVWBcubHhWdchPeGZJcphNxJg353GlrHLRk2d76h9TxmJEdjCglAVi9Cy3xITJoXa2KTj2N6hWSqvT6P2H\",\"field10\":\"508JcUtjXRwAiPJelIiKjRlFM9uwip0KYMdokCQ0XTaLgzNNJHDH3IGYin5lVmONqaoTKu09Qjqmz3eVVULlLfYmUHQotoQmZoYW\",\"field7\":\"rOce6xTHJWGfJb6I6FkoiLomjfcTf0opQ0muX2Qet9IoUhNkRYgu3PUiN1RqCHhITb3M0lFsTZrDXRA06actC3laRTXS83uX5mnF\",\"field6\":\"97cW19UlwqkqNVIthj5qfSm7hZa29xEkSKH5oeDz711xLaCemkXUPyuGMOqtJ3YPXbscMX3wyAC9BgWjVMcWBTWXAbtABgaTM2lg\",\"field9\":\"6htaok2o388qULXZWGb2VY6zN7WAyXchtPd7cBu6b7tJFuuMTY5ZloPRXTkC9LdpUjxzqq98cY2fHwwkyR79PgsNpN2JChuvnwFP\",\"field8\":\"0s7Sn5z0OpcEFZyGnTkT9f8W4o9PwSeGy78SUXgsOSr5RlquBS4iuo9r5VtoK6bRxI4UFDoC4T97GXtnktHSNNOCFeHBMBp9A5OO\",\"field3\":\"UapnDR9NhIN021wxoe1eAPYp8E6vAq2raSLpmDdHDoLkM2wKZ3cOgcwT2yEMMtt2uUtG7G8zh5Ti6QNWHcmSChmNODH31vEjgcjW\",\"field2\":\"po0L6zchisWeC1EQ6hiMht7XTd7Wk0170a19ZG5ZMxrfoOQiHsTUKJhqkUxe0bv3lfqMucroKnnFaki5uYaYh8xH9xeE0Qw5ancj\",\"field5\":\"E4Y0hL6a0hjm4LeeCqeopnDS6FVc11LaTZ4Ru73AYmTFbj60zW8IotTjJZ2sWVMvj2wIGfIkXxkVrfQOg7KQypCJ0SQn6nBPbe9N\",\"field4\":\"9RNvTbwtPj56J7eLYaig9DNhyLFiRDrZB2Ns6z1bKMq4LVnyemLi0XzAAhJrFI3oJ9mCCuXLmiKQC1ecmL182Q95lOVcpclQNV0c\"}},{\"stream\":\"gen:39\",\"id\":\"1730880588445-9\",\"body\":{\"field1\":\"hf0MA58SG3fBDEWrNjg8gErcHga1G4y3WPgr7TszsZR8BoPwbyFkPk09e2n5y2a7WNiV9MWAvPzxAsTF1CGT22ZaS4uAN8hQvtXo\",\"field10\":\"R5NL7jAdQlhThAMsbWP97pdvRK8cVn49CKandRhXfzpCOj6QQWqKEn1eXTcKwfwGtJyE10hhaz39RU9YEd1ZPJvgTePU3ZYgLhNJ\",\"field7\":\"bDk1qZytS9AdeAvCy4rcsjmcjRXzkhgiHoLW1ZpPMVv3rUsYjoWrGi3oaieQuhvv4vVzMRVsBUROFIvKyW5cxhuBI9hCgIsba4XI\",\"field6\":\"wWjxchE0GElRSQqjOOpA8sMYRG5uJd1yUfeLXSiGeDUhRXS0eFwoSHwG5qs5jcZwpgH9X1YOw7cS04791T6WQdCokikxC1Do843S\",\"field9\":\"7Xwv1bU5lOanbhg6PMGQWhwBUNfs12k2xXAfLoDWyfEgJQzHI9QLJGLlPVHbJYnCACUMJDz46I4x0C0iqSTzXJJWvwGruYTNQ21D\",\"field8\":\"Xs4dfzmRwqkjgTTE1ORe9JtbrqTdMCU01ow8g2SFodMeqPT59uaAKF4dtl5BwssQQ26Cl1HEFkTjBthGwZNToXXQs6mxg4nxZnkT\",\"field3\":\"QAwZfQXONXgMIiL5qv7dbMhVAsq85uD6zs8wtKTZ5oBXDq02KzHuzy1FmwnJuTYOUYrAxC4Oy7K0L9T1phheICOWrFLv4VDWBzkD\",\"field2\":\"UhFWSaDhjNrnCezQ75DNqZTyHQfsA1EGaAyuJClGLSpOofjcYt4Gzx4Yedrx4qGoG5u5su5SwA4M7miOsGZSih1dDLMEVdT6zsb1\",\"field5\":\"VTbZ7n4p8QlElwneQgpXzdubyKQH4TwzIZCVEarwpudwT9zalHX5xr0ElqYSmmLLerN1L4s2GS6tzQVPvY1QS69Bb8ZTFrxHiNFP\",\"field4\":\"npHzOibnv6V2MzXlU8d3GKCwqwwKX5eS39509Ji2Ah1KpgqKkjq2r01XJZwgbBaVf013IeodgImc72etQcBWNYYHPrETeWe4oyhr\"}}]},\n {\"key\":\"gen:72\",\"event\":\"scan\",\"timestamp\":1730880592560,\"type\":\"list\",\"ttl\":-1,\"value\":[\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\",\"20\",\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\",\"50\",\"51\",\"52\",\"53\",\"54\",\"55\",\"56\",\"57\",\"58\",\"59\",\"60\",\"61\",\"62\",\"63\",\"64\",\"65\",\"66\",\"67\",\"68\",\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\",\"77\",\"78\",\"79\",\"80\",\"81\",\"82\",\"83\",\"84\",\"85\",\"86\",\"87\",\"88\",\"89\",\"90\",\"91\",\"92\",\"93\",\"94\",\"95\",\"96\",\"97\",\"98\",\"99\",\"100\"]},\n {\"key\":\"gen:44\",\"event\":\"scan\",\"timestamp\":1730880592560,\"type\":\"list\",\"ttl\":-1,\"value\":[\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\",\"20\",\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\",\"50\",\"51\",\"52\",\"53\",\"54\",\"55\",\"56\",\"57\",\"58\",\"59\",\"60\",\"61\",\"62\",\"63\",\"64\",\"65\",\"66\",\"67\",\"68\",\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\",\"77\",\"78\",\"79\",\"80\",\"81\",\"82\",\"83\",\"84\",\"85\",\"86\",\"87\",\"88\",\"89\",\"90\",\"91\",\"92\",\"93\",\"94\",\"95\",\"96\",\"97\",\"98\",\"99\",\"100\"]},\n {\"key\":\"gen:27\",\"event\":\"scan\",\"timestamp\":1730880592560,\"type\":\"zset\",\"ttl\":-1,\"value\":[{\"value\":\"8\",\"score\":12.159410096526724},{\"value\":\"82\",\"score\":27.89578763955961},{\"value\":\"40\",\"score\":48.497592118801194},{\"value\":\"27\",\"score\":29.36056767821996},{\"value\":\"44\",\"score\":52.29410731397597},{\"value\":\"74\",\"score\":32.00142980848647},{\"value\":\"3\",\"score\":86.03610176073754},{\"value\":\"21\",\"score\":58.46536952996376},{\"value\":\"38\",\"score\":8.571394366044805},{\"value\":\"37\",\"score\":46.7752603863542},{\"value\":\"20\",\"score\":69.02057673903121},{\"value\":\"23\",\"score\":65.44606160455949},{\"value\":\"25\",\"score\":89.06715773465689},{\"value\":\"48\",\"score\":32.87873089128412},{\"value\":\"97\",\"score\":38.924866002790516},{\"value\":\"7\",\"score\":61.21570859211918},{\"value\":\"47\",\"score\":61.89586442568648},{\"value\":\"19\",\"score\":62.23941412688695},{\"value\":\"4\",\"score\":54.28309049990845},{\"value\":\"45\",\"score\":79.28894765715351},{\"value\":\"64\",\"score\":0.0723164872783233},{\"value\":\"56\",\"score\":37.28417096841071},{\"value\":\"89\",\"score\":3.2051134327087616},{\"value\":\"51\",\"score\":63.614650065365474},{\"value\":\"75\",\"score\":9.673784741789815},{\"value\":\"61\",\"score\":95.29394877785468},{\"value\":\"90\",\"score\":6.320269358954766},{\"value\":\"13\",\"score\":32.57417806422174},{\"value\":\"86\",\"score\":35.90121836568541},{\"value\":\"77\",\"score\":44.42082977746804},{\"value\":\"53\",\"score\":9.935206969249322},{\"value\":\"1\",\"score\":8.453311644735273},{\"value\":\"32\",\"score\":87.627992688573},{\"value\":\"29\",\"score\":58.50270976214148},{\"value\":\"15\",\"score\":95.28441657489198},{\"value\":\"35\",\"score\":67.20883817165499},{\"value\":\"49\",\"score\":44.36496333006479},{\"value\":\"52\",\"score\":52.69967942962026},{\"value\":\"12\",\"score\":66.24811085404203},{\"value\":\"92\",\"score\":48.55335909376879},{\"value\":\"42\",\"score\":26.405019150175193},{\"value\":\"36\",\"score\":69.55594777294766},{\"value\":\"66\",\"score\":98.65723604407988},{\"value\":\"57\",\"score\":73.526706456149},{\"value\":\"24\",\"score\":7.952314773827862},{\"value\":\"93\",\"score\":1.2875423930468477},{\"value\":\"73\",\"score\":2.6046540314410005},{\"value\":\"80\",\"score\":21.69796734202847},{\"value\":\"34\",\"score\":70.31342512939939},{\"value\":\"88\",\"score\":72.36210440843523},{\"value\":\"14\",\"score\":73.92098852214856},{\"value\":\"70\",\"score\":84.33425678023056},{\"value\":\"71\",\"score\":64.5873977244708},{\"value\":\"87\",\"score\":91.20190284867124},{\"value\":\"94\",\"score\":58.19407040921279},{\"value\":\"39\",\"score\":90.02859863205566},{\"value\":\"65\",\"score\":43.27894716979894},{\"value\":\"69\",\"score\":5.958310911634356},{\"value\":\"54\",\"score\":44.53341966766372},{\"value\":\"83\",\"score\":52.58325169549203},{\"value\":\"30\",\"score\":92.51242736199424},{\"value\":\"17\",\"score\":41.94000009877175},{\"value\":\"63\",\"score\":60.04582611560475},{\"value\":\"84\",\"score\":94.86274234280654},{\"value\":\"85\",\"score\":5.598123774900953},{\"value\":\"33\",\"score\":56.49856152534749},{\"value\":\"22\",\"score\":57.49585105910312},{\"value\":\"100\",\"score\":97.766225332168},{\"value\":\"2\",\"score\":68.55032221621019},{\"value\":\"62\",\"score\":17.980350284941615},{\"value\":\"11\",\"score\":0.8842888348986278},{\"value\":\"9\",\"score\":30.990358802178086},{\"value\":\"99\",\"score\":18.760628384700894},{\"value\":\"16\",\"score\":56.44071490886916},{\"value\":\"95\",\"score\":68.79852095645853},{\"value\":\"43\",\"score\":48.82006265621355},{\"value\":\"79\",\"score\":59.27749521148523},{\"value\":\"59\",\"score\":0.3636576595941743},{\"value\":\"46\",\"score\":24.51775648669231},{\"value\":\"50\",\"score\":41.68172426087747},{\"value\":\"81\",\"score\":48.74324061518133},{\"value\":\"10\",\"score\":84.08895519037426},{\"value\":\"98\",\"score\":66.57658332381956},{\"value\":\"78\",\"score\":4.377906331113046},{\"value\":\"41\",\"score\":19.632917430992613},{\"value\":\"18\",\"score\":91.15627667309882},{\"value\":\"72\",\"score\":88.13083378986232},{\"value\":\"6\",\"score\":21.287032160489574},{\"value\":\"67\",\"score\":44.894581283533356},{\"value\":\"58\",\"score\":36.7282628897848},{\"value\":\"5\",\"score\":23.421556256329822},{\"value\":\"26\",\"score\":63.98042479459922},{\"value\":\"68\",\"score\":17.00779188090278},{\"value\":\"96\",\"score\":69.73705721403518},{\"value\":\"31\",\"score\":58.52664513659865},{\"value\":\"91\",\"score\":81.66525654605194},{\"value\":\"28\",\"score\":46.747684992797346},{\"value\":\"60\",\"score\":71.3618392137591},{\"value\":\"76\",\"score\":25.182718712600625},{\"value\":\"55\",\"score\":72.88559445984009}]},\n {\"key\":\"gen:56\",\"event\":\"scan\",\"timestamp\":1730880592560,\"type\":\"hash\",\"ttl\":-1,\"value\":{\"field1\":\"5vMHE1MymqcM9vO0J4atvbAOkTdTlvqK53PymlwgHj2sqPkDj47MfTHrggca77AU01vaW1sA0NYbjvSltsLezDTj6aj3NCs8I0Nb\",\"field10\":\"VmrZm7Bul3VP7bDVd26ISicUQOuIIGaJbouLbOBO6CTzJMcBRu4U92J5hA23GNVnGwlFGtWdmpx3RDkVwt4a3tj33UvwVQHdn8lk\",\"field7\":\"2ygUJmlkHDEREZe3TooG8tyVZZQWwSWH3yfIhTeh6LPM0e2TYzZOarImrlHlHJH6Mzcu2JfEu5t7rn0WD3IPyHMvmWtuSXqb4piF\",\"field6\":\"Rw5ruuVhxLeMBckX8jtPO7X9kQheowI5fUTDHt2EMhUWyTXOMoHr4Qdvn6JtolmguntGwSVcTb7QM0XuJfM1epK1zP4bGFrwgG02\",\"field9\":\"u0NwJn5OveogcVUxEST9XKEPp3W8LMbhk1Qh7BWcGsiVdBHZtX3gSlFUcBc7A9nCZiPjOxHW1B9Gu5hfSkLkcWgqhsQvCElS8zRV\",\"field8\":\"o1QpaRswHNZMLSqEFLmiRtXu5vjTngRDMlTVzdZKwIaVAn6kA0yxFe6DDN5wwXKltjMR5fbVf0rjXHs6jSFQNNBicW5hXr4URm7n\",\"field3\":\"e13Pz1SuRIs8UESonoV2xwYQ7lcLeU4wuEh3rPpvGZovAVzQ9z7vkX3W2Yk41Bk34Oc2VN9JOXcPPr2wcJUiCQUdTpet4z6cfoXG\",\"field2\":\"B5G5QB3oTjPGmbNuH6tWgafVIKu5PNIyzuYYjsGjTYsLYycmmvsIA5dE1zE8sDApYH09MufWt36O1HHOtLGCIo2z6VwCTIDhWZTJ\",\"field5\":\"LEtut0tFD0NQfmEVe4c0H8eKTFFMDNRSCRX6FKjNHsBS0xOhikNQb337JUFNnrbSSROG5jIrxRzP1hpPuAMILNk7ZZlapXboXipc\",\"field4\":\"0TkKDMvKwgXIcYpYN3YOYXjDcu2mtBIPuTSKbuopNtvqRLnvgLcfcTNtFAVcWPjRLgaWSCP7TydJZr04SL3pzNSvF7cE95Q7cEDm\"}},\n {\"key\":\"gen:33\",\"event\":\"scan\",\"timestamp\":1730880592560,\"type\":\"string\",\"ttl\":-1,\"value\":\"6ldp315We8oHSeAGE0lUsyyRmkcrfPQMO287PZcgewxbCl4kAyT1Wew74K31FNMf1a0Mmzf3bisYLXuLd01q8jCDxaqjDWl35tJe\"},\n {\"key\":\"gen:31\",\"event\":\"scan\",\"timestamp\":1730880592560,\"type\":\"set\",\"ttl\":-1,\"value\":[\"88\",\"89\",\"90\",\"91\",\"92\",\"93\",\"94\",\"95\",\"96\",\"97\",\"10\",\"98\",\"11\",\"99\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"20\",\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\",\"50\",\"51\",\"52\",\"53\",\"54\",\"55\",\"56\",\"57\",\"58\",\"59\",\"60\",\"61\",\"62\",\"63\",\"64\",\"65\",\"66\",\"67\",\"68\",\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\",\"77\",\"78\",\"79\",\"100\",\"80\",\"81\",\"82\",\"83\",\"84\",\"85\",\"86\",\"87\"]},\n {\"key\":\"gen:87\",\"event\":\"scan\",\"timestamp\":1730880592560,\"type\":\"set\",\"ttl\":-1,\"value\":[\"88\",\"89\",\"90\",\"91\",\"92\",\"93\",\"94\",\"95\",\"96\",\"97\",\"10\",\"98\",\"11\",\"99\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"20\",\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\",\"50\",\"51\",\"52\",\"53\",\"54\",\"55\",\"56\",\"57\",\"58\",\"59\",\"60\",\"61\",\"62\",\"63\",\"64\",\"65\",\"66\",\"67\",\"68\",\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\",\"77\",\"78\",\"79\",\"100\",\"80\",\"81\",\"82\",\"83\",\"84\",\"85\",\"86\",\"87\"]},\n {\"key\":\"gen:100\",\"event\":\"scan\",\"timestamp\":1730880592560,\"type\":\"list\",\"ttl\":-1,\"value\":[\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\",\"20\",\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\",\"50\",\"51\",\"52\",\"53\",\"54\",\"55\",\"56\",\"57\",\"58\",\"59\",\"60\",\"61\",\"62\",\"63\",\"64\",\"65\",\"66\",\"67\",\"68\",\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\",\"77\",\"78\",\"79\",\"80\",\"81\",\"82\",\"83\",\"84\",\"85\",\"86\",\"87\",\"88\",\"89\",\"90\",\"91\",\"92\",\"93\",\"94\",\"95\",\"96\",\"97\",\"98\",\"99\",\"100\"]},\n {\"key\":\"gen:52\",\"event\":\"scan\",\"timestamp\":1730880592560,\"type\":\"set\",\"ttl\":-1,\"value\":[\"88\",\"89\",\"90\",\"91\",\"92\",\"93\",\"94\",\"95\",\"96\",\"97\",\"10\",\"98\",\"11\",\"99\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"20\",\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\",\"50\",\"51\",\"52\",\"53\",\"54\",\"55\",\"56\",\"57\",\"58\",\"59\",\"60\",\"61\",\"62\",\"63\",\"64\",\"65\",\"66\",\"67\",\"68\",\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\",\"77\",\"78\",\"79\",\"100\",\"80\",\"81\",\"82\",\"83\",\"84\",\"85\",\"86\",\"87\"]},\n {\"key\":\"gen:2\",\"event\":\"scan\",\"timestamp\":1730880592560,\"type\":\"list\",\"ttl\":-1,\"value\":[\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\",\"20\",\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\",\"50\",\"51\",\"52\",\"53\",\"54\",\"55\",\"56\",\"57\",\"58\",\"59\",\"60\",\"61\",\"62\",\"63\",\"64\",\"65\",\"66\",\"67\",\"68\",\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\",\"77\",\"78\",\"79\",\"80\",\"81\",\"82\",\"83\",\"84\",\"85\",\"86\",\"87\",\"88\",\"89\",\"90\",\"91\",\"92\",\"93\",\"94\",\"95\",\"96\",\"97\",\"98\",\"99\",\"100\"]},\n {\"key\":\"gen:94\",\"event\":\"scan\",\"timestamp\":1730880592560,\"type\":\"set\",\"ttl\":-1,\"value\":[\"88\",\"89\",\"90\",\"91\",\"92\",\"93\",\"94\",\"95\",\"96\",\"97\",\"10\",\"98\",\"11\",\"99\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"20\",\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\",\"50\",\"51\",\"52\",\"53\",\"54\",\"55\",\"56\",\"57\",\"58\",\"59\",\"60\",\"61\",\"62\",\"63\",\"64\",\"65\",\"66\",\"67\",\"68\",\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\",\"77\",\"78\",\"79\",\"100\",\"80\",\"81\",\"82\",\"83\",\"84\",\"85\",\"86\",\"87\"]},\n {\"key\":\"gen:66\",\"event\":\"scan\",\"timestamp\":1730880592560,\"type\":\"set\",\"ttl\":-1,\"value\":[\"88\",\"89\",\"90\",\"91\",\"92\",\"93\",\"94\",\"95\",\"96\",\"97\",\"10\",\"98\",\"11\",\"99\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"20\",\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\",\"50\",\"51\",\"52\",\"53\",\"54\",\"55\",\"56\",\"57\",\"58\",\"59\",\"60\",\"61\",\"62\",\"63\",\"64\",\"65\",\"66\",\"67\",\"68\",\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\",\"77\",\"78\",\"79\",\"100\",\"80\",\"81\",\"82\",\"83\",\"84\",\"85\",\"86\",\"87\"]},\n {\"key\":\"gen:3\",\"event\":\"scan\",\"timestamp\":1730880592560,\"type\":\"set\",\"ttl\":-1,\"value\":[\"88\",\"89\",\"90\",\"91\",\"92\",\"93\",\"94\",\"95\",\"96\",\"97\",\"10\",\"98\",\"11\",\"99\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"20\",\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\",\"50\",\"51\",\"52\",\"53\",\"54\",\"55\",\"56\",\"57\",\"58\",\"59\",\"60\",\"61\",\"62\",\"63\",\"64\",\"65\",\"66\",\"67\",\"68\",\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\",\"77\",\"78\",\"79\",\"100\",\"80\",\"81\",\"82\",\"83\",\"84\",\"85\",\"86\",\"87\"]},\n {\"key\":\"gen:64\",\"event\":\"scan\",\"timestamp\":1730880592560,\"type\":\"ReJSON-RL\",\"ttl\":-1,\"value\":\"{\\\"field1\\\":\\\"7f5tf2QFzEU00b4ExeVYjctOgoiDoqfOnTp4C1R8N1hyM7Vusu5MobxxC6Hbwx9Z59cy0w3ozGiwhUwKD2PbT0iyaokkliFriWFb\\\",\\\"field10\\\":\\\"yXMuuXkHfwIZfyeHuMHr7DK1dqv2DFjS79phwT01nRHiU9qf55suiOqOQvLF80QctjVIf8vIJxh2ZnfLwTBmyttaCsBWAg5nqZRE\\\",\\\"field7\\\":\\\"3DzLlDoJrSnZuWYb9t4XU5cjtE473VnJ3GU5I33AfsVoQoLObqsHasLdgEhIKGPGdpE3ivWNGZQgm7VGYycfLpU7YwfiFNqfQtev\\\",\\\"field6\\\":\\\"UkSd5sBJ8hOCI9VTZ8cG2KeDXAI4saQ5RjUC4cu54PJFvFazRQ8KiYd6l2yJ2AigdtDKVfQclEDkTB2i0UruTjX2hSI9rh3J7pxX\\\",\\\"field9\\\":\\\"jjMcpqJkI2Cxl3GQr9LLCeGMFoV02l8eY4EL3IjtjARutDYPyyhzINjQpib8mbrUFWJOd8QFawobBwkvgvJAtoMEU0A5U3EW2eXR\\\",\\\"field8\\\":\\\"aZWzbCOo9verkgeqEm7TMe0sOizhe47TUBunQPvHexSd0eryMMiKVx42EuSakxZtOzNKZQgRc2K8JxmVyFKEdk2VATy66p3y0Tap\\\",\\\"field3\\\":\\\"Irjb8JupWpwa1LpgfhF2XtCXtcuDDAFLs1bnE0V5EhSQjjNvYlRtWP2YT5VSAbn0Mxw4vgM2bCzdb91xQsNeV1rv5ri3O95RKSvc\\\",\\\"field2\\\":\\\"cywjqPp8HkCmSD1JC9YEEFsaiBUByXKM1zb7U9xGJAw7aQfdUikU65FzHlcRjvmKfAZuaSy1uZy5nYO3VkX6wEObMCr4yeiSOGJZ\\\",\\\"field5\\\":\\\"qpHbCbApGFedgTQTgniyI7tE3SlEUxeJg0nVreAn5ruf2I338lBoAJNQokhptgFyV56pVw0hHRuPySg0qwRrHicFJ5khVv95pgSz\\\",\\\"field4\\\":\\\"Dt7J253fKLiud7TR4rixSDLGhGhza6hfMcy2fGh1Q73HJ6rPBp99bi4WoZVBRZ8TRp3EMbVKwOQgTKMpyRJ1Ol4vHfyyHda63ZOx\\\"}\"},\n {\"key\":\"gen:58\",\"event\":\"scan\",\"timestamp\":1730880592560,\"type\":\"list\",\"ttl\":-1,\"value\":[\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\",\"20\",\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\",\"50\",\"51\",\"52\",\"53\",\"54\",\"55\",\"56\",\"57\",\"58\",\"59\",\"60\",\"61\",\"62\",\"63\",\"64\",\"65\",\"66\",\"67\",\"68\",\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\",\"77\",\"78\",\"79\",\"80\",\"81\",\"82\",\"83\",\"84\",\"85\",\"86\",\"87\",\"88\",\"89\",\"90\",\"91\",\"92\",\"93\",\"94\",\"95\",\"96\",\"97\",\"98\",\"99\",\"100\"]},\n {\"key\":\"gen:69\",\"event\":\"scan\",\"timestamp\":1730880592560,\"type\":\"zset\",\"ttl\":-1,\"value\":[{\"value\":\"96\",\"score\":57.50513666397497},{\"value\":\"25\",\"score\":3.526128644696791},{\"value\":\"90\",\"score\":23.274299962520438},{\"value\":\"63\",\"score\":29.73091515874978},{\"value\":\"4\",\"score\":29.932146272082292},{\"value\":\"16\",\"score\":47.578845282241325},{\"value\":\"32\",\"score\":49.94371878341891},{\"value\":\"70\",\"score\":58.766346872977316},{\"value\":\"5\",\"score\":30.20313540558879},{\"value\":\"94\",\"score\":83.69104996448982},{\"value\":\"56\",\"score\":8.699673119811745},{\"value\":\"41\",\"score\":33.49191898638437},{\"value\":\"51\",\"score\":72.79193890779108},{\"value\":\"24\",\"score\":6.266761417544375},{\"value\":\"74\",\"score\":36.29586287600338},{\"value\":\"39\",\"score\":70.46854306957871},{\"value\":\"68\",\"score\":1.480151984055933},{\"value\":\"54\",\"score\":31.715630368426297},{\"value\":\"52\",\"score\":93.57979516499742},{\"value\":\"45\",\"score\":37.659851901020545},{\"value\":\"98\",\"score\":86.22728625763452},{\"value\":\"57\",\"score\":89.53402209162164},{\"value\":\"46\",\"score\":91.28443547267817},{\"value\":\"48\",\"score\":12.470368498656182},{\"value\":\"92\",\"score\":42.97662483176836},{\"value\":\"29\",\"score\":37.91388616486242},{\"value\":\"85\",\"score\":26.061230729059513},{\"value\":\"27\",\"score\":57.00772111314113},{\"value\":\"10\",\"score\":40.760387908897634},{\"value\":\"17\",\"score\":65.05575439112769},{\"value\":\"20\",\"score\":87.84747724538904},{\"value\":\"97\",\"score\":29.35557855476131},{\"value\":\"47\",\"score\":75.43888903609265},{\"value\":\"7\",\"score\":94.16805346087727},{\"value\":\"22\",\"score\":1.476007247570732},{\"value\":\"73\",\"score\":15.634348248896146},{\"value\":\"62\",\"score\":65.56399092521941},{\"value\":\"37\",\"score\":81.06792419704449},{\"value\":\"82\",\"score\":87.21261347566805},{\"value\":\"83\",\"score\":23.87863286990697},{\"value\":\"100\",\"score\":38.45061484652912},{\"value\":\"84\",\"score\":56.105419740285},{\"value\":\"21\",\"score\":9.946098769245737},{\"value\":\"89\",\"score\":44.45071228357995},{\"value\":\"81\",\"score\":62.45186759458616},{\"value\":\"59\",\"score\":15.989005308689286},{\"value\":\"43\",\"score\":41.85606920786964},{\"value\":\"66\",\"score\":21.40398552382926},{\"value\":\"31\",\"score\":81.68723446811332},{\"value\":\"75\",\"score\":84.7470800843277},{\"value\":\"88\",\"score\":1.7680259678562016},{\"value\":\"30\",\"score\":8.842079512939026},{\"value\":\"49\",\"score\":66.2813252631019},{\"value\":\"93\",\"score\":47.39438814161756},{\"value\":\"72\",\"score\":8.7934373916149},{\"value\":\"55\",\"score\":14.515825608132548},{\"value\":\"2\",\"score\":37.387286013077905},{\"value\":\"69\",\"score\":47.843850584545514},{\"value\":\"40\",\"score\":92.42033192482094},{\"value\":\"60\",\"score\":9.316583121776345},{\"value\":\"34\",\"score\":95.06073587336763},{\"value\":\"87\",\"score\":96.06188333760669},{\"value\":\"71\",\"score\":9.527186971},{\"value\":\"15\",\"score\":66.32813018588351},{\"value\":\"53\",\"score\":15.598372252550973},{\"value\":\"64\",\"score\":4.635925323137579},{\"value\":\"42\",\"score\":33.81441716747947},{\"value\":\"36\",\"score\":69.14189163575178},{\"value\":\"44\",\"score\":53.49303009709576},{\"value\":\"95\",\"score\":36.23597273977772},{\"value\":\"99\",\"score\":99.05987093131488},{\"value\":\"6\",\"score\":23.578158352595246},{\"value\":\"18\",\"score\":22.856066762919358},{\"value\":\"12\",\"score\":98.25535854512725},{\"value\":\"26\",\"score\":24.832020908725028},{\"value\":\"58\",\"score\":11.600700246806294},{\"value\":\"91\",\"score\":52.79489899712223},{\"value\":\"86\",\"score\":23.88405046130343},{\"value\":\"13\",\"score\":1.1994683809878115},{\"value\":\"23\",\"score\":91.5256866960814},{\"value\":\"28\",\"score\":51.71300272793589},{\"value\":\"35\",\"score\":33.49858425296791},{\"value\":\"50\",\"score\":29.836882186958903},{\"value\":\"78\",\"score\":47.43858716668505},{\"value\":\"14\",\"score\":37.370814304931834},{\"value\":\"38\",\"score\":72.77912184540804},{\"value\":\"19\",\"score\":98.5881065232598},{\"value\":\"77\",\"score\":37.38289109261169},{\"value\":\"76\",\"score\":78.41225332881375},{\"value\":\"9\",\"score\":93.4070652559327},{\"value\":\"67\",\"score\":44.84358291855891},{\"value\":\"80\",\"score\":93.53083342661765},{\"value\":\"8\",\"score\":71.02448276086884},{\"value\":\"79\",\"score\":34.52589302328262},{\"value\":\"33\",\"score\":57.210314361833525},{\"value\":\"3\",\"score\":98.38880126154189},{\"value\":\"1\",\"score\":75.92530012598993},{\"value\":\"61\",\"score\":91.63214805678443},{\"value\":\"65\",\"score\":50.28932290990076},{\"value\":\"11\",\"score\":73.90623502739427}]},\n {\"key\":\"gen:48\",\"event\":\"scan\",\"timestamp\":1730880592560,\"type\":\"zset\",\"ttl\":-1,\"value\":[{\"value\":\"40\",\"score\":28.029138393657092},{\"value\":\"48\",\"score\":3.4719359143320805},{\"value\":\"61\",\"score\":53.82415575199211},{\"value\":\"91\",\"score\":57.82367124820218},{\"value\":\"35\",\"score\":78.2458506294902},{\"value\":\"97\",\"score\":66.02937116553478},{\"value\":\"24\",\"score\":64.1678586296324},{\"value\":\"51\",\"score\":37.196906316058076},{\"value\":\"66\",\"score\":32.58313871451589},{\"value\":\"23\",\"score\":87.35155717127292},{\"value\":\"16\",\"score\":88.14433403747302},{\"value\":\"39\",\"score\":85.81882967912222},{\"value\":\"81\",\"score\":62.75496787308491},{\"value\":\"50\",\"score\":43.15997479203446},{\"value\":\"45\",\"score\":45.95974372927139},{\"value\":\"41\",\"score\":6.382422014211054},{\"value\":\"77\",\"score\":69.69328137826064},{\"value\":\"90\",\"score\":94.91289584341807},{\"value\":\"32\",\"score\":35.517010131410544},{\"value\":\"22\",\"score\":44.553977429437374},{\"value\":\"59\",\"score\":8.062621761669842},{\"value\":\"17\",\"score\":90.68786183407285},{\"value\":\"42\",\"score\":0.7982520026646567},{\"value\":\"57\",\"score\":56.7820115718075},{\"value\":\"21\",\"score\":60.21485773182312},{\"value\":\"9\",\"score\":8.843043689751562},{\"value\":\"99\",\"score\":40.60895048583153},{\"value\":\"89\",\"score\":29.928810086797743},{\"value\":\"27\",\"score\":29.709030701864947},{\"value\":\"79\",\"score\":71.56100118230962},{\"value\":\"2\",\"score\":20.61868492560294},{\"value\":\"4\",\"score\":91.8466280172971},{\"value\":\"18\",\"score\":84.1147708730423},{\"value\":\"92\",\"score\":0.8781509370398455},{\"value\":\"52\",\"score\":32.983786883696474},{\"value\":\"19\",\"score\":67.11676663597652},{\"value\":\"80\",\"score\":94.75765940531214},{\"value\":\"12\",\"score\":4.045739338277709},{\"value\":\"30\",\"score\":42.797211269260735},{\"value\":\"5\",\"score\":42.4139911820679},{\"value\":\"43\",\"score\":28.97700875078716},{\"value\":\"94\",\"score\":88.50533503644928},{\"value\":\"62\",\"score\":20.036690729740457},{\"value\":\"13\",\"score\":3.8422922664955617},{\"value\":\"29\",\"score\":60.15244311293729},{\"value\":\"98\",\"score\":74.92623529676689},{\"value\":\"100\",\"score\":58.68866632380596},{\"value\":\"36\",\"score\":0.9713562567778555},{\"value\":\"63\",\"score\":95.07501276627602},{\"value\":\"55\",\"score\":8.393172059138754},{\"value\":\"10\",\"score\":79.63876603166399},{\"value\":\"68\",\"score\":99.29556032574631},{\"value\":\"1\",\"score\":94.87319422549805},{\"value\":\"70\",\"score\":7.7653698573827645},{\"value\":\"67\",\"score\":7.903461405178458},{\"value\":\"76\",\"score\":88.52792446198727},{\"value\":\"95\",\"score\":25.504555484468618},{\"value\":\"37\",\"score\":53.36992306340721},{\"value\":\"14\",\"score\":37.951245625916265},{\"value\":\"58\",\"score\":23.16200016615757},{\"value\":\"87\",\"score\":84.6670034659042},{\"value\":\"71\",\"score\":79.82379934139834},{\"value\":\"38\",\"score\":82.95711414539544},{\"value\":\"85\",\"score\":36.66304832629928},{\"value\":\"83\",\"score\":59.60689440274909},{\"value\":\"53\",\"score\":46.061975880937275},{\"value\":\"7\",\"score\":36.29790021499812},{\"value\":\"26\",\"score\":13.863056896130555},{\"value\":\"49\",\"score\":46.60610943902982},{\"value\":\"33\",\"score\":80.65824535854628},{\"value\":\"31\",\"score\":84.61720535369089},{\"value\":\"44\",\"score\":24.882331696163806},{\"value\":\"46\",\"score\":82.95433583801918},{\"value\":\"60\",\"score\":85.74700611334417},{\"value\":\"82\",\"score\":85.43867834786013},{\"value\":\"69\",\"score\":20.324764927074224},{\"value\":\"78\",\"score\":71.80956224367478},{\"value\":\"73\",\"score\":75.26805206991907},{\"value\":\"84\",\"score\":97.60700340730008},{\"value\":\"8\",\"score\":18.40327831195083},{\"value\":\"3\",\"score\":48.459136532180395},{\"value\":\"72\",\"score\":33.91638459132991},{\"value\":\"25\",\"score\":49.44372093739814},{\"value\":\"65\",\"score\":43.99484169264478},{\"value\":\"88\",\"score\":63.408312172269085},{\"value\":\"15\",\"score\":20.17566326443838},{\"value\":\"74\",\"score\":41.918519009786},{\"value\":\"11\",\"score\":93.74105775747027},{\"value\":\"75\",\"score\":41.675372827200405},{\"value\":\"56\",\"score\":93.44540403418785},{\"value\":\"96\",\"score\":13.233671511816825},{\"value\":\"64\",\"score\":20.210231697560634},{\"value\":\"20\",\"score\":59.80367140144885},{\"value\":\"28\",\"score\":31.11717278493903},{\"value\":\"54\",\"score\":39.99389562561301},{\"value\":\"93\",\"score\":79.66053082125428},{\"value\":\"34\",\"score\":20.972274841991357},{\"value\":\"6\",\"score\":3.160969204306474},{\"value\":\"86\",\"score\":35.90650562035974},{\"value\":\"47\",\"score\":37.73300653141488}]},\n {\"key\":\"gen:97\",\"event\":\"scan\",\"timestamp\":1730880592560,\"type\":\"zset\",\"ttl\":-1,\"value\":[{\"value\":\"96\",\"score\":42.87243684049796},{\"value\":\"72\",\"score\":32.75406382862974},{\"value\":\"32\",\"score\":53.630509464387956},{\"value\":\"77\",\"score\":57.24758852088166},{\"value\":\"26\",\"score\":81.64753120905523},{\"value\":\"66\",\"score\":25.188350193546494},{\"value\":\"13\",\"score\":5.472947572970044},{\"value\":\"90\",\"score\":5.076702076313177},{\"value\":\"51\",\"score\":70.13587102473086},{\"value\":\"15\",\"score\":59.06430365471934},{\"value\":\"9\",\"score\":97.11829887769325},{\"value\":\"64\",\"score\":13.839241885402643},{\"value\":\"20\",\"score\":31.968063113842593},{\"value\":\"29\",\"score\":94.16820636702661},{\"value\":\"57\",\"score\":24.03988888990032},{\"value\":\"86\",\"score\":73.10976594022284},{\"value\":\"74\",\"score\":25.904390088279904},{\"value\":\"69\",\"score\":64.0886113497413},{\"value\":\"65\",\"score\":10.264352867443282},{\"value\":\"4\",\"score\":36.00162111016546},{\"value\":\"62\",\"score\":77.00215220551787},{\"value\":\"54\",\"score\":31.055926572079052},{\"value\":\"40\",\"score\":76.65458088442416},{\"value\":\"45\",\"score\":22.457007945382045},{\"value\":\"91\",\"score\":37.018807170791725},{\"value\":\"35\",\"score\":60.64421692048063},{\"value\":\"58\",\"score\":93.35489099152699},{\"value\":\"71\",\"score\":27.873176505639197},{\"value\":\"3\",\"score\":89.8556323302284},{\"value\":\"23\",\"score\":56.82962134572821},{\"value\":\"46\",\"score\":3.716922869426098},{\"value\":\"76\",\"score\":31.189606263801338},{\"value\":\"12\",\"score\":27.517001347864888},{\"value\":\"93\",\"score\":36.534919887689085},{\"value\":\"63\",\"score\":85.21456127166678},{\"value\":\"34\",\"score\":71.98560932382797},{\"value\":\"56\",\"score\":12.816914619247177},{\"value\":\"14\",\"score\":19.418616140053345},{\"value\":\"79\",\"score\":60.288075220055845},{\"value\":\"49\",\"score\":19.353339656416203},{\"value\":\"31\",\"score\":95.3993241653948},{\"value\":\"5\",\"score\":86.26808095686948},{\"value\":\"67\",\"score\":21.23029950410553},{\"value\":\"85\",\"score\":87.07840048650726},{\"value\":\"73\",\"score\":49.00984733492781},{\"value\":\"37\",\"score\":18.135551904192027},{\"value\":\"47\",\"score\":38.3970885002504},{\"value\":\"44\",\"score\":2.0093468216099253},{\"value\":\"99\",\"score\":2.719165039227456},{\"value\":\"97\",\"score\":2.3789940425095635},{\"value\":\"75\",\"score\":99.9437320242238},{\"value\":\"95\",\"score\":11.488191189650843},{\"value\":\"83\",\"score\":91.00985344145276},{\"value\":\"1\",\"score\":94.02507907375116},{\"value\":\"38\",\"score\":26.119720515318445},{\"value\":\"50\",\"score\":83.90642247733136},{\"value\":\"19\",\"score\":18.767968561035065},{\"value\":\"30\",\"score\":1.3433129264707633},{\"value\":\"6\",\"score\":23.46060023579343},{\"value\":\"94\",\"score\":60.5603678486931},{\"value\":\"84\",\"score\":0.7103277186976897},{\"value\":\"78\",\"score\":92.44099339414034},{\"value\":\"59\",\"score\":94.6895752410288},{\"value\":\"27\",\"score\":16.85854543397617},{\"value\":\"21\",\"score\":26.70505621295375},{\"value\":\"33\",\"score\":26.741719771628603},{\"value\":\"88\",\"score\":11.076563305729048},{\"value\":\"61\",\"score\":15.363227108980093},{\"value\":\"24\",\"score\":25.18378601133726},{\"value\":\"80\",\"score\":80.21900646286636},{\"value\":\"68\",\"score\":3.461449444486675},{\"value\":\"11\",\"score\":43.071381809095946},{\"value\":\"52\",\"score\":47.84762552000902},{\"value\":\"48\",\"score\":2.335228334408135},{\"value\":\"41\",\"score\":55.37207129064857},{\"value\":\"82\",\"score\":72.62657129291541},{\"value\":\"89\",\"score\":42.54603451775063},{\"value\":\"60\",\"score\":50.19106572106426},{\"value\":\"92\",\"score\":23.45000802791535},{\"value\":\"100\",\"score\":88.76488542471384},{\"value\":\"87\",\"score\":15.755830238179314},{\"value\":\"55\",\"score\":94.16932672728191},{\"value\":\"70\",\"score\":49.51757495823881},{\"value\":\"53\",\"score\":18.031144338591666},{\"value\":\"17\",\"score\":27.414017288975813},{\"value\":\"25\",\"score\":94.79896518079065},{\"value\":\"22\",\"score\":94.35871556952058},{\"value\":\"7\",\"score\":79.42323313433623},{\"value\":\"98\",\"score\":63.88519583469693},{\"value\":\"81\",\"score\":57.054588621408186},{\"value\":\"8\",\"score\":46.42280151094622},{\"value\":\"2\",\"score\":7.445339649399429},{\"value\":\"28\",\"score\":72.44875841876525},{\"value\":\"36\",\"score\":42.20189797765983},{\"value\":\"43\",\"score\":35.13307149577813},{\"value\":\"39\",\"score\":13.91974070159705},{\"value\":\"16\",\"score\":77.75275615681952},{\"value\":\"10\",\"score\":85.1890036983207},{\"value\":\"18\",\"score\":51.0982113446217},{\"value\":\"42\",\"score\":49.67009848085364}]},\n {\"key\":\"gen:91\",\"event\":\"scan\",\"timestamp\":1730880592560,\"type\":\"hash\",\"ttl\":-1,\"value\":{\"field1\":\"cIx4bBtbx0ZiXyp5WmWW1zYHECgnQUrBRr2QjvYIjIaECWKhAXOXxK3M2Kqrz64iBvwfKbB7pAba06NgiNDvhBfWvt6CxLGVDjTH\",\"field10\":\"McCK7vsC0ctZzXG67BcD5K8N1bbE8IzPG46YOk1hgTRs7s5DH5dPbT4eLPPZzJdWRqgEwCWPuyGwwfADZ1UvSxnekPk9JMil127I\",\"field7\":\"4MgtsDMkoJi8KcdF5LaB8Rgdoj8qaZkGnQHPYcJfTJ7NnYXoZM1hjmkZilMrAkf1ucgn46idTsrIWC0hl42RdofXk3MH4HktH8RG\",\"field6\":\"iclft6GFgjdri3iqybbn6dBmjHaA1Ca1ba5MaZ2qnAzHCZ4NlHlr1wcLKxNIcwNQ2RHWh42ffHsvVopiDE0LiD8MqFINqxQByUVN\",\"field9\":\"FhRpLMM620w354Tu6eSrhRvO8yqE3T8UEuZfzPnWX3T3cQtrMk4U7qvpBQm52FPHopkW7mvgoRTg9BTjcnHkVX63fa6AGb1hf2G8\",\"field8\":\"Bnd54WHp5JzZsxBFjk9afFh4ITiMVMrULOuCVeFtIq2S1P8NjBNoeq0yyqZX1PcPAnMmHtZilpkA4m8EzqcBEBAIBeiqLswHVWej\",\"field3\":\"Qo6exq7XWqogmFN5hP9Gap8PVlf0eGanXPlhDdqxlBer6M4kMYSeOUzIP8EXQsuhN5jotlctpAB7e3QHpEiI5ceyybNX8iGAMhSf\",\"field2\":\"9VLHPL05OFDgrhM5woQ2cJyZ44vhUV7CCxIPsRZNjEPUQfNEqYKiQI5aEEEk9ttkFQjpWOk6XI0jwD5EsCF8FkjHw9HSP6JrWIVC\",\"field5\":\"1q0brdtueLfao1v3bObGogH3F62ccmEjOrpvKMY0j27V2AXFhkyc9xzVoWSUiLLFPakAmZ4IZ5Es3YNhaMHfRTwTtSAMzGmFzXQU\",\"field4\":\"qtCQ0hsVzQKy4kPgH7TrACdJC8In3guC410omBA4tFh2DQ42nXab65DM5Nlbu4BvBVJ6bqER6ucO82HmsmUUl3gd4X5ywzk0wbQt\"}},\n {\"key\":\"gen:70\",\"event\":\"scan\",\"timestamp\":1730880592560,\"type\":\"hash\",\"ttl\":-1,\"value\":{\"field1\":\"qXIdaQmj3ppFdHtn86g04ufU8jQGgpRe19WoKc3Vomtp4uxC7ZbAvUzmfl0eSeFJEZODxWb2KUE3BmKWkn06MdoVdA5uSfRwh2hV\",\"field10\":\"1CaRhCDlLzwoWW8B4Bt4rlPqHCOyHmUdh2SGDIZseqvWmeXn1YuUJX71eu797m6bPyUOLqmYrghreJjT4Fu101dovYMUoggW3Prd\",\"field7\":\"UqilIQL46ckMH8LluAFJTZAAcUPVJiJ5g9MRHNqpVgHRHkvsFFW9AZw7LvbAZC5b0YcNrhTe2EE6cwSvDUBwrPCIWpdfHzEjO5CV\",\"field6\":\"WZOr5q2dGKBY99BmkDPtLdtemSrCsnvYOkVuip5z9uV8Pnm4Ul1tqpdhW4CMV3rxJhaKPyijLz3bTxDdDgtA9NGBKByAuPWldQTr\",\"field9\":\"CvdqwBU5Np2I8ZXtbi2gvDpF6ZQM85U05Xpufq4OYvUIffESLdizuwCH15GpS8K0zfyUXfZfSe6rSw0UpTOJ83HjxLYwLdgqcPPQ\",\"field8\":\"oItDi2I6UGklzGRI83pR2PgWCd7QSTzt74guB74T8W6fKXrVYHwyv7mVFPotQqs876hKHSPqMzC6nGarTP6maYocdU4M71MyWYTx\",\"field3\":\"NSXQVdc8PPonzpzJzNKJNotPheFV8yfdvcjfC6n9tsyVUvlDzP2pXpXFLKdYVS02pADtUoHFUVsHoHExV7vGNaYBQerbGu9yXZwU\",\"field2\":\"tOU8R6XmehmGvFCXwFfxaHMN2db1R7vMHeVz1lGqe6iWj9t3ExsKeQa5ZRIpgWGRBshV1bWOhjpHtsRo6Yzz1tWkBKOhkV3E1J1v\",\"field5\":\"wRddC88u4PwtAVPcV8snH9qgbTKILYin0W6KgtxMMeDzcXsu2RKzhPs1HVeoW2pUQDOifjTQCWGHNOfV5ytYEewCKcojCRMtGdSh\",\"field4\":\"Voard9gfXZCIIW9WO8omkXJS60jZf36njSQqMKn94AVXvDwbN2ECdHhJSb28IyEayo6leAOlIud3v3LoSws9Cqvwd1trQLK31kgI\"}},\n {\"key\":\"gen:22\",\"event\":\"scan\",\"timestamp\":1730880592560,\"type\":\"ReJSON-RL\",\"ttl\":-1,\"value\":\"{\\\"field1\\\":\\\"AO2HMhHnWlF5Ni29teMO2j2PnqYg6ALJBMjrg5ll3ErXVYSx0R2TbjnWQ0ou21dQGJpdxkFItHp2Ey3km212WYWvdVNmy664sgQ8\\\",\\\"field10\\\":\\\"1f9ZadPry2geedlkBCtEymGJocFnWdoUlGg0d95o9BN123ZMMe65sFcSO8alxrMBI8PoVXSitelKuIsX8OvlwW0YhzoD9OJ6qowS\\\",\\\"field7\\\":\\\"vqe1euKxDq2DghTJCPaKsuGOHI9RjaTpbm97Dnj4Eyf3LmeMemmBzb1P6Y9vaPH08knhc5XSDurQh7GgtYueQnpcI70hG8ja8p2s\\\",\\\"field6\\\":\\\"iKwQ1YLhmNguLGvRiGeAmQomZu2DR2IebVAc6XQuP2qajkasbPrisTVdoeHAMEPkrHXidUDCKjP3LNj2qPW1fwoqIbnBMtV3ZdDp\\\",\\\"field9\\\":\\\"q5VNlPbETEUEQC4XwbDIzh0qd2tn1fNhBhxXOsw0aLagKCXpNRs0lLW5wbXorJ7zC8mH4MHieOg72JPzjCBxhX8ugKwEXzgTZLjL\\\",\\\"field8\\\":\\\"pAd3UT90QYnDH7YIHliipEdwqTLHfdIuKT7LDPTqO5r5LUt9NqgdJjBZWMstO4fRVc1b0XRZgifTRPJBREpLVtQakidB7nLZhgIX\\\",\\\"field3\\\":\\\"H7IrzAvi5JZUlfGLH2tSUQLmlh7LApUk26gERC6Px7ltlevBSjAnbNpj3Vy8IrkanxXMmpjD5UQDxDnCUL55BUHvgXszrClhGi7S\\\",\\\"field2\\\":\\\"8HXzmpp0gwI7ZCdtU3WgpizfMVDl9pu4zoZwxSMCfWOX8Sylle0K6C8mJE6Wmxj1lKyibfezapoyWndQ1xyMMgvNHABDDofqxTgH\\\",\\\"field5\\\":\\\"ztSVkjYr6TJuESasYR8kH9EOZmiF8B4yBQ6BQzNRInUObRt2tLV8mc2GI3MlSiR1axh6T25HhetFfDMJOjxR6E1xtSvUKYxb3OJo\\\",\\\"field4\\\":\\\"wQ47t2a6cDGUhm0NjrzyL7KQashISADOh4hDu9T54Zp1pFwkuMqsijXjN7KZAAKBhXZHSGdFtWjFn3sWPLT5vyhss15zvScRCUvj\\\"}\"},\n {\"key\":\"gen:55\",\"event\":\"scan\",\"timestamp\":1730880592560,\"type\":\"zset\",\"ttl\":-1,\"value\":[{\"value\":\"20\",\"score\":21.903624205288164},{\"value\":\"12\",\"score\":83.20798818112904},{\"value\":\"37\",\"score\":1.42399082732938},{\"value\":\"98\",\"score\":5.539403951238353},{\"value\":\"24\",\"score\":20.629608029333124},{\"value\":\"90\",\"score\":68.46232710469123},{\"value\":\"93\",\"score\":18.89937933715563},{\"value\":\"96\",\"score\":81.40060695942508},{\"value\":\"76\",\"score\":13.277059412090896},{\"value\":\"9\",\"score\":91.53784673046769},{\"value\":\"60\",\"score\":86.8590175694203},{\"value\":\"11\",\"score\":73.079696404112},{\"value\":\"56\",\"score\":99.85445859292038},{\"value\":\"63\",\"score\":12.223271146705915},{\"value\":\"31\",\"score\":64.8988296734752},{\"value\":\"26\",\"score\":61.217004324282975},{\"value\":\"46\",\"score\":69.6008794220385},{\"value\":\"81\",\"score\":54.19720458817127},{\"value\":\"65\",\"score\":15.454544815106818},{\"value\":\"62\",\"score\":26.691129326335417},{\"value\":\"88\",\"score\":24.15169651338799},{\"value\":\"48\",\"score\":89.56565911719697},{\"value\":\"73\",\"score\":91.49593580452337},{\"value\":\"28\",\"score\":84.56259575223322},{\"value\":\"3\",\"score\":23.514013369635112},{\"value\":\"59\",\"score\":92.78886348188416},{\"value\":\"34\",\"score\":92.76163571451684},{\"value\":\"97\",\"score\":80.6130301816768},{\"value\":\"35\",\"score\":95.379344695946},{\"value\":\"47\",\"score\":93.21222401251583},{\"value\":\"91\",\"score\":53.60485059178232},{\"value\":\"52\",\"score\":54.227336924581635},{\"value\":\"6\",\"score\":18.091108812703595},{\"value\":\"39\",\"score\":35.663414695588635},{\"value\":\"51\",\"score\":95.08192262805093},{\"value\":\"49\",\"score\":65.50494593607642},{\"value\":\"2\",\"score\":28.504160786523624},{\"value\":\"72\",\"score\":88.95385872891485},{\"value\":\"27\",\"score\":40.09433922554584},{\"value\":\"10\",\"score\":75.02028728218592},{\"value\":\"1\",\"score\":87.43130072203986},{\"value\":\"25\",\"score\":60.434177347827465},{\"value\":\"78\",\"score\":50.58601992782123},{\"value\":\"95\",\"score\":5.511509019881955},{\"value\":\"18\",\"score\":43.2075824587963},{\"value\":\"71\",\"score\":86.89952345489932},{\"value\":\"64\",\"score\":3.9235781090225963},{\"value\":\"70\",\"score\":12.245559514610349},{\"value\":\"38\",\"score\":90.5981971737886},{\"value\":\"83\",\"score\":8.920720169044161},{\"value\":\"66\",\"score\":81.94595096644554},{\"value\":\"84\",\"score\":93.08649262843169},{\"value\":\"57\",\"score\":89.37440253514588},{\"value\":\"92\",\"score\":3.818767593209671},{\"value\":\"79\",\"score\":76.47350024794783},{\"value\":\"44\",\"score\":32.051916274174495},{\"value\":\"54\",\"score\":22.59982288099166},{\"value\":\"21\",\"score\":51.241363420438766},{\"value\":\"68\",\"score\":25.67630665082582},{\"value\":\"58\",\"score\":83.1947902212351},{\"value\":\"4\",\"score\":67.36078856801907},{\"value\":\"50\",\"score\":98.99408575802327},{\"value\":\"87\",\"score\":34.84286880709874},{\"value\":\"94\",\"score\":84.36349628316039},{\"value\":\"29\",\"score\":59.75072953521507},{\"value\":\"17\",\"score\":64.33291634213762},{\"value\":\"85\",\"score\":28.750774555098225},{\"value\":\"30\",\"score\":98.09313307896444},{\"value\":\"74\",\"score\":17.919558308657813},{\"value\":\"5\",\"score\":79.7947423286659},{\"value\":\"43\",\"score\":44.12025482912221},{\"value\":\"75\",\"score\":81.04471709493683},{\"value\":\"61\",\"score\":40.8515760814782},{\"value\":\"19\",\"score\":47.800954051450496},{\"value\":\"100\",\"score\":2.7034435725642347},{\"value\":\"13\",\"score\":45.876768020950344},{\"value\":\"40\",\"score\":83.3951725172861},{\"value\":\"53\",\"score\":6.718287215053065},{\"value\":\"45\",\"score\":13.143317632940555},{\"value\":\"14\",\"score\":84.25340089971648},{\"value\":\"82\",\"score\":52.483103228909776},{\"value\":\"86\",\"score\":98.30969893599006},{\"value\":\"69\",\"score\":4.083164768073111},{\"value\":\"99\",\"score\":64.39167090360975},{\"value\":\"7\",\"score\":99.83359173821447},{\"value\":\"36\",\"score\":81.388599786088},{\"value\":\"15\",\"score\":12.963439603199934},{\"value\":\"55\",\"score\":3.0698855280211435},{\"value\":\"77\",\"score\":5.084699793166547},{\"value\":\"33\",\"score\":35.98085019313694},{\"value\":\"89\",\"score\":17.70506924285136},{\"value\":\"32\",\"score\":57.36330756712853},{\"value\":\"80\",\"score\":68.08175152565715},{\"value\":\"23\",\"score\":37.279662725867205},{\"value\":\"8\",\"score\":55.02018300579289},{\"value\":\"67\",\"score\":67.89477078783979},{\"value\":\"42\",\"score\":59.8755219709966},{\"value\":\"16\",\"score\":16.616305409425745},{\"value\":\"22\",\"score\":75.2185676651983},{\"value\":\"41\",\"score\":61.475204799100794}]},\n {\"key\":\"gen:25\",\"event\":\"scan\",\"timestamp\":1730880592560,\"type\":\"stream\",\"ttl\":-1,\"value\":[{\"stream\":\"gen:25\",\"id\":\"1730880588445-0\",\"body\":{\"field1\":\"FqKpjWGkPtdrslzaQ8fwm8atVQxP8IBVZJAFNcuYmExF9PSV3PNOMP9MBMV7G5VubzoKbTc9fblOJJnSZvxVTsSZkNOhXj1tOGl8\",\"field10\":\"slTWsV0Ehem7CaCEl35CcVY16F2u44OBusynXfvldoE90mseAbauZ37a1AJf3pRCSHeowqM5Asfowq9s8PkjVZYFSNq4aqzppmHl\",\"field7\":\"AhgG39U8t0uvQ44NuMeYEmGn37PrUWvGgY9k92HyxfaW1KWBd8HsmvEVtUjqnit6UFa63rZKZLV60Svg6oy1TxhJFqzY34UsgP0d\",\"field6\":\"NI6AZAj61oNUJ0GtXnH3TN3Z0EYM0KrNENqCDSa1nrHHI0QqmL7oMKgjrFZqtjwRMIo4j5wc3TFJ7fZXuTOuwEz1qjmHN83wbhKJ\",\"field9\":\"sz4AxY9qhQjXgUZqHHowdiM4yAOHF8TObWKIdDRsLsneui13ESOc5zCzafwG7yde4ygbgKgP7kbUSzvFIfg2yfBEtv0n06TEyEA2\",\"field8\":\"xl4azjNgs5948O4bLc9Tg4FUTQ89teQeq0GQD5CXqHm9rzHpZSVy5sCPf8kSCmH4tMAb8Wr9zOsXAoCKYzUdFRPLandg8Bup7CDx\",\"field3\":\"Q9FBADBJ5u78nK2uwrtO1XMkl1fsi6TDFsbraDxK2nol5MybRB4UpXS09UQjw4V5aWxWZBh5XG593ccEmIyS3OT5N8lRG9R95q1d\",\"field2\":\"Z43ZCKKjjkVovBbE4dbBfaX3hAXbUbRBoq5n8qjryOWkFEk8dP76LmLAN0PHHn6xrYT2cYHJPeTFdDclITpJ7N3Tijpfasb71Hos\",\"field5\":\"MO50GJJBTLL5cmvP9Szo0sWtedOw3Mbf88nYjeogEHnZqqiW9dYkw2q9wrUZXmgMHF03NZhPl2NuEdLBS1WJCBr2MalcDNeUmyav\",\"field4\":\"wzLJXAs25oX1PaUhyF8srYaUqOzKeEbA09iPcrWEYZNwEnkTq4Y7tdttqLUJYbxAsReoEmItst2XZMvu3iOp31CsF4irNpwhrHZ3\"}},{\"stream\":\"gen:25\",\"id\":\"1730880588445-1\",\"body\":{\"field1\":\"3Gb9YCqHqkzqr0UVPLlYH8MtETcVpxOqAeTcHDf0CXYZOGo3zlM268umnipe5cRXGnxBHkEGi1BiwaFS9MVo4KfPGJSERXVAYe7I\",\"field10\":\"2bnhicAtRMH1w2g8qCsSKj1caAxEw0WaOfAoPzwX4WkfdJAWxYLcgOaqWOn0GZsHFI38UXqednY5Qq9mxGQzeP7KX9QVfdsDgUUT\",\"field7\":\"mgROrXRpViKoL2ACRXEQFaJTYFtf6rT99OL9Roa8g6ML970nx1G5ai02Wu3UQ9opHV2DytOtlmci5FMOIBGaebAluhw2mYCCIx1j\",\"field6\":\"g7Pw08TPccJJGY1ypEAymJgAF5iU7TTLJDZF8F9VJo0eQbthOf0fIGfd45VDR4aSjM2Mh0bkIj9y6mHaDKkjDC7DRzuLE6nNGY1b\",\"field9\":\"ItdDmER144uiJiMIsOKqSVyIql2Q9cMEn1NuUkcm9S0KZ9VD0rviIydSdfTZYi17vgEx8PDoPBromTK0NxZLum6u1R7moQj1fyIf\",\"field8\":\"XVjQRrBMCsYNN7vChV1PONjD79PHp6PxR1OzZwZ3BaaEQMWBvIHlcDAlnu3hVUD6hr0P4It4o5iJmApj7UKoK3XslRRwFduKeH3U\",\"field3\":\"uuJ4ttxoIVHXujXaz8YrV8D1wz4UTqb1EQTGGlMs5OUXoAypsd1fC6I1ODmgpUTTQnlA0JOi5QGQOIedWkpMtrLl4EGKcxKMaBK1\",\"field2\":\"zHJJRUsvHFMV7B3zLLKcyTi1Z5MrX8QqY2sOWfVEgwK2Rtftk4tM6xmO8tXXKoTL7Ha0giicvDChn0dJgEzOcEMJYY8nOBYUkwDi\",\"field5\":\"bvHmWev04hhD4eo4F1C9Yr8Vz0h5QyVw6tymQhtvMQHuEP068gORXndT4l69pfmObxmc4e7aN9qhXPLIFIF2TajfnG9RREdET2QZ\",\"field4\":\"T9LYa9yRiZnhT8yWwTdTCfLIoHmyiiR4jTfOYih87ljp9bpDNtrDSIybUoSBvashts3Sg9cnF7IRJ33IBpbNgqC7jocx62pvscqE\"}},{\"stream\":\"gen:25\",\"id\":\"1730880588445-2\",\"body\":{\"field1\":\"eXIEoQ2iL03HOfAwjQQj0c65PVIfFY3nFLYw2oUV4pPW8T7unlNTCqN0KurHZlBLvSJlg2amw576fdYYM1uVyiecd358kXNyguhW\",\"field10\":\"PzJzyZtXkcuc11FrrO9KUCzjZduaDGFH2OXaWeTIMCssmWBdrnnIDS2d3RFrHBw1O98f18AzpwwjXJjTB9HWPZhjr3KcfcbTYoGZ\",\"field7\":\"1zXhl9g4SmBKULiKu3dQNxb6u2Uty77UAa1QUscAuB8HS8EAl2eoovfKrPH1eTE7tg3KfoW6IgyEZnsxOc5CPsfFdoGs0GwJqbna\",\"field6\":\"vMnfNATekp3dLYfjHEFuFmY3cqIavhhE3klDEuUp2noakqxUsfwQtSD1h48DX23ACFkIauDD91p45wwuq5KldJY1ktiDuEiNX76C\",\"field9\":\"VFZuTjKEpfSwjGWZ3PG2m3rG9Pr8oEagEGZuF2XZcQMg3fjgHB41zF47bkBdoRl5hhsdLM9IEPnxqyAJjqvGzDwXMVGVhyhRTVlr\",\"field8\":\"EMAgTmyWVJc9y96fjZe1XI5XCjYLbE5P8CofhiXduSVvgpwo3fMl6uDYBpVXyZ0siPt1VuxS44IIOz9Nv4g9KTaUSZ7S16wJiil6\",\"field3\":\"bG91WKXGG0OukguwWo9GsXhvxC6WINh9Pdm1bLTx64coaAR8sjRTjJJ2aUDpAc83DeTJILSDWTvH7OTNhLbwm4KxJWdcpscTHxPZ\",\"field2\":\"5oEEiNMO3ryHbLYG3EbnPTebx73o6s9PyNFqbPMsxtwViQSl0AYg34tzniHD7JCMGpKDjaDZZNlbv6Y3wLFZF7uktDSoliYIxAj2\",\"field5\":\"CEf8CRRJdJY2ozbVIwPouSHObJNcksVRvBAxlSUT1jcfK68hTnqiOXkPfyM5jpDdqmqpx4bJVp5eNS5Yc0Q2vNGP3a9vTUop6LRv\",\"field4\":\"k79Re7Xotq4P9u191Bb9ZtVLJJz8h3KhHz4mJZzNU5q16Kun6j7PRJ5GJBMFt7rYgV6w0i81mozOXFWcC6Y3CEXsn06ps3BgtV0K\"}},{\"stream\":\"gen:25\",\"id\":\"1730880588445-3\",\"body\":{\"field1\":\"9dapznlC6cSUcTIUykXboBSJiBl9yiyMFfo6uzP49RgbAzkocJdYV1xbRyjKcwQJkd0jYJaYAPbdKtw9Jf7cc2npDNVMyH0hFOrO\",\"field10\":\"n9KCfEd5kFkrNpKJaqPgj4aMKD3ZTq83tVkp1bJpu4hdtiCuaG9HIY5oOJZP0c8p8JVXGlqCV4RKSWjqSrtN0DwZ4c0Kqb9PTpSp\",\"field7\":\"wdxuAYOXlqdWIg41BAoEf1AYEIix60n8BrSdRBP2X4YEpXHhSnG7cyeTOFF2rv0qkW8DwRJ9SfKW23u6PY0npq5iw4rFeEOIhCd2\",\"field6\":\"r3vy6GCIYtU5PAskzC842Smo1qKjdBnZgYdmc0qs3RXI4Fv5s8WMMuMeJpVIhC254zhxnbbJfbbmlunvWDmJm9BOld8AizkBB8le\",\"field9\":\"0KBpE3GMtRsZp3Ye0nr4Sx0ehTdXMkPNE2riSmvhjCGjA0SRPhL4EuokDPmjhYK9zHswcBwpUi8o0R8DAGbFKWwtqIkEtlBhp3gO\",\"field8\":\"De8Ksh0XoYafJ48tkmGBtmlFztQTDFDF1rhRgGfimI6r4XZDt6CiCbSJ54ciLumCHOhO8ZSNDfz6eyAJ1qGAI1mQliWkMCSnVOwc\",\"field3\":\"OAIBCCOctApIPv7EdNaaB1XxAkgJUYpH247DIvLImAGuGPLzGfYNGH1fDEkzLkkFz65pyXIXeZxIFtLdNh4Q7f2ZBiXoeOn532OF\",\"field2\":\"cNKC7lWRcn3NBGlgy7oiSlj0WRUXrO1M3c3PiC09QnmYKb28ygc69nPszkVsuPZtOdSD6IrsPneWzHZOlgO6PzxzKmF514u0S0xC\",\"field5\":\"LAB2SEYmbgA98jerNi4oXWSPoashSi9K9Od6MUyzyffTpNaL0edff48elc3QcYq2cOXQew8O7Bsuyc8u6QeNzmGdVMZSDrbPj3x7\",\"field4\":\"7bbQ7m3B0xtB0jFK3e1oDq1ywU08ccGDIaBLtETVzdSfg3C1D3YGExxGIfrlTGeq8MObgk7EvEDisKCVavAqSQ9Iq1cTWdaoU4ot\"}},{\"stream\":\"gen:25\",\"id\":\"1730880588445-4\",\"body\":{\"field1\":\"LrsdKWbrdenwRyNlxo3bkXz2tGL1ffOiKxOT2KgiXOH3ablCKORNQTpoYb8cMlthKFjqCQKnjxzBR7ABZLPQGNQxnR2AmDTAC8b4\",\"field10\":\"eFU25qrxRS5YBf3rfWKBuBr7b1MwQuNsJnQk4SBiDgxIyo8YMLzO6OEjEElNkHvZRhU3lMJuidwLxVJ5IUaUd9GN1rGDTqBnl18v\",\"field7\":\"S4rqsEwnHXFmSOJA9YiiMosxG2pgLN4YJg61tAwvbtvs5M7E3a6bnFDK5lW6xBCL47coE6ROdp82IUgsqrgxaExeyRqZ02Kc1RQ3\",\"field6\":\"d45j5uVRYbBxPqwuSXW2pLabOiwUi7Sygb2URSYp5nbNh1dvP7isjZXocelYDxfWcsAJAEMlo0slkjWuEgF6cULpvW5X9CdWSrsP\",\"field9\":\"xvnPP8srdEHOYnd2qHytkDZQRDSWOrS9LqwmVY4cK2zqHAHzf2nOnYrR6ezaaKdJxQaNP96CnfUQ7oFHFaaIS1w70xpLf5ojgwmi\",\"field8\":\"OI0wBzmk4kMNm4NLdOsIIbSGzjDPHM70w6fr96pB8QkIwbINoi2ev7ksxpaXHOSN7csYK7rzcQpuESmSk3IyGsi1NjvzhGyUI6Uz\",\"field3\":\"r0uuCGcB78vuKAivbFDnPoGU3UtUnOQx5t5pBjFsDx6wJPmAl6Vv0SumvVpe3QjiKK7py2ObqS91zoBCjP4wwELgbtoU21yBmVfO\",\"field2\":\"5wgWGVH8BsgPE0l6tGTPq7qUV2gCiNnRpvKRT6AuodR6rAZUEZGGFRdMWlkun73FOmDdqtFgZ6maQQ0Bu7HtWwByAKvcCaHO4YWa\",\"field5\":\"xZK8pr9AlSxLimaExBEbcOXTSGFNgaAjrdpV7YbGap00uMtF1o9MGzivAavYGyEC1A0lpFrEWv9MlDP6GMKEMrOa9l2NFvjFpdqk\",\"field4\":\"MePFDR2AiGWwne4tmWqeCY6v90lR1HWK0iAX5B4D1br5EEc56VHYBPbxj7sUr9AblDCnM9CeGuDIAEpMH94mFXvUgsGxedA6IA7f\"}},{\"stream\":\"gen:25\",\"id\":\"1730880588445-5\",\"body\":{\"field1\":\"dcVU40a1Cf2ZvwOeiF7tio7s6QlfAOduOyT82DRx7SZyEHeFj45lHjpLhfJc0FbKDNs0O5u1IsNxp7unu35hJiyAGPzk17vZ2Hhn\",\"field10\":\"39h8pOScWKAPBclEmFXUAyAn6rGDzAgiIuaS5v88BrukyK0oYEh8JBGl9Cy5O9uRp2xjCbhBTvNYigyvSh9NcCdgGeKnMhb7hG8f\",\"field7\":\"wisQzZI5dstN0kYwrPeqcJQAVt1LoYC80RmQesCmlOIsJBMXQqoSx5hr2CCtqyLh5kr5mT4RE1SRglfgZNbdopDU8rnW6tp6bmjo\",\"field6\":\"y6jhgxDSjWxKTtPmiUk4jTEiRVlLAlHFkSJF0TAapAXNwoNIlpLVXOYVysZidWYKzIusYOWXlDiTC1yroLjXAZnHYeOcLTemDN21\",\"field9\":\"n1KZHlYubUWrbzNgvz23XPPU9QspKSsxBK4DeIilWXGMQxATkXHnZXcQEyuXNCdUxNm00q49pmugLoV5HHOXzqRSKOPUUw29vgkW\",\"field8\":\"Zuc18V9eqoXhGYO9THzgBct3xDU268syvbhBbUq7J7a6VMK0HlRafORhg5wp6cF8kCwxkuqWgKyTra5DoCZoTYyZYNpMvH7CpEJi\",\"field3\":\"4GFe7LDDKUpPZTPRJjVBWu8KY7UbTsT2nFVrecKUWktsSuozUTGH1eKzgksZD02rT170gz3t18DgUI4zk2NStwdfz6aj38KxWhkb\",\"field2\":\"XBPWG4wqOHmzyLk6ejJAFAwKay5H6JyNJzvQ54QrC47McLf9LNVu1Rmwz9lFgFIIwDpS90QuQMSHUyZU2P19NHjKvVcm6XchOhNn\",\"field5\":\"NKN6UMDtmCXIHUybNsKG3T8eyvzBIP4ELX1A1CjopTiN1j0XrSBdYWVOmNeRy5hgqk3w7Y0gNssi5QcSG0eXFSiXdcAT5LdvJaP6\",\"field4\":\"XBqtyIxBaTQMRq7Ew2gkaI7fLrhjYDD6jBu63Fz5Tlk7ikwrQDiMtyaXGRxX72IO08JOY8AhY9JHOSGHjrTocohvhasWK0nD4vdK\"}},{\"stream\":\"gen:25\",\"id\":\"1730880588445-6\",\"body\":{\"field1\":\"vB5dmE4E17gmv9Z5yKxWRYsRWT7KvMd3vp0bG2iuHipar5kGnxaW75bxatGC40gaCEfwVuK3Z4MDQj4fDd9Z4AwvPrfIXnTMpA9N\",\"field10\":\"CMwGS54TJhXsmpIir0WwK8jYb7gVlkhCt18c9xL2Se7E5300C4ky083a7I7Xie8emxeFaB7DGF59n5n5z2NGM7On8cZuQhW35np2\",\"field7\":\"ArjXAHknWb5jUJIpi6TzKBH7VwppjYPZPec0W03AR54LVryHYHxxqtIUXSJ1ACoq2tW2rErNTPOjrQmEcuc381pu4LItfoHkHmy2\",\"field6\":\"WoQw2JIp7GFxp37e86thpsBVtuEhoyl5uWAVUzB8ZRXku3EX5rK12tWbewnnGy0o2J2PSkRN2DekXi71XC0IGJpl8AJgB5yG0fqH\",\"field9\":\"KWW3mwKv11Cnj2PaGI87WIzn4jzJHyhi2hznbITrjY1wvtYG8cfsbIrgupw59IsQN3iLuLSeS5nx25PDwNnRCET3IIJ4mIwVzQzu\",\"field8\":\"4Pwg0elGBaeCT2VN79VBFC0GjGSDZSL4CfMVfGX2nIVhLTkhFkX6c1YrhgogZTlUgHLKddkHuWGEPIquiQKVnbVU0RBxi8tprFYY\",\"field3\":\"E9KLwYYoWLAPGmAcMxE9wlgcTJ9AXmvxx6uUtuSVegs6U0SFAD6a0SrwOrlmMP3VIV0W1tfiam7JPoGtZ8rv5JDDLwvaDCbR4iC9\",\"field2\":\"Qi9sdvoYbV7PoHZH774PuIPhTZnox8wGBwKVBxYyBOVbpLIbloZe94debuoPAYBEwD0D9shp0akeL5lKxL0Ot8gFTEsVz6TqVcya\",\"field5\":\"jVRZ2hxEUlV01lmLVCOulY8SyCQ6uMLCX4XLLayZrKDL95XEytduFSStGLj9BdJ02BwgNKmbRiYZjqgp0SqHVh25KrYj4RztNr5N\",\"field4\":\"gdBAiXmLgE2sUJKkcHkQMWej7S6PiOud25Pz9dfbPzJEG7rlMnnwovxVOngo9bZVIwCVtYBuzUuGxRMVP8Lra7PsavoDRGEezO7d\"}},{\"stream\":\"gen:25\",\"id\":\"1730880588445-7\",\"body\":{\"field1\":\"bhvyyZ0VU8P6pd1KJ3vyPbuGK6mVKfFjv0EPCm0Lug1jyXdr3poD6q0ykORlxxScY7qi6IEkS9wv3l230YytafaCmWWHLkNsYSME\",\"field10\":\"NZzdPvta8v0cJg3mw6WeAerWegwjmRtq3IoLkL6anPJ0pQ7rAi6cQ59n9G2YVSgVCaPRw82Amwwxjn3vc0mwi86e75Hi2oKHnzsJ\",\"field7\":\"EBcHvLBnq65wQKXfrA1xjx7F0h5dxCe7jhdggSG4ZsN4z6l79w7QMbeW1vPm026fHrjPw37en4gFWcVohwOmZ8oRTOeyRI2JUsZq\",\"field6\":\"LmfK8nZiIoKwFgE8Td4BoebLPcighTN4cWjlkMnaqjm4pPHEgd9rw0EVpd43HUNLP44XspBhVJb1nozax4phHSlApBoLxx3uotjV\",\"field9\":\"FKKaf1w6TTOT8ETZ6088nxfkK80gB3cmCVpTImXXXGgrmnh54GEYamtxsNH3QGJjiZpW3kDuiPEwS2UXwrgSu2jL6pWRna3cWbFm\",\"field8\":\"plOgX70yRc4PtXH2lAc9yBYZx6v6OnAA0IgmlQoae98TBEym8t3VN2Z0OWJgP3pGNIMJ5OXHDHLCYPM3TXalO2ELt08cCGyvw9jH\",\"field3\":\"YkSrVo9Zkyf6BWEAIzf4iOF9kF8VbYHwuZFm7pvwNDuqNWD55vAXbBWu8jGBr376aB0oH63hcaEQpUuN59xMBr26296h7WCuEIbh\",\"field2\":\"FmnKEP1yhfps2lSqCKhKCFp9HaQ7CuDEWhPFk4epGf85JpIrTHQd1bH70JDpPWEaoLJGzsyPq9MBUAxA69ebYYiKpAH77TPlCcHC\",\"field5\":\"5o1nwXnfbFfQO0SoEtJAxx3vUm4k9Uw30YPEU5aPDWmRoUEbOlVfel2K3USLErfyb2vXEciL4oxMQw4RsF6GFocK5sAVLaBDNn9y\",\"field4\":\"zFXcicbBs3FIbaxVoNo0IDymi4zKWNbYLzApuBYVjaj6jrAZBremVCxfQVvcnLN57NxZ5CIAnAksHWkTCvYrgQlcQspuPy88bp6s\"}},{\"stream\":\"gen:25\",\"id\":\"1730880588445-8\",\"body\":{\"field1\":\"uPAIDAMzsLyVLmBnayHCqnJlhnB8AIRKcf8WBwpu6qMUg8BwKLMbbcKNuwdeohcbflqZJ02j64H6k2IGOD2Cu95FLmrTnjWaZye7\",\"field10\":\"ita3CYBrJUMhT9jGg5dCJzA2JI7tDoaymx3LXYz68GWFjPNVr2QG8TU5XBNl4gYNZw3HBXFsHWkBzWTIPBjTBtmAUhmUkP2tshVi\",\"field7\":\"AzbjNPUb6XtsBBGCwqby988K2qXxexNilE9WUjbpyuwzlKgPDb6gNcfySxOv0YC4rHDetStVzRn3gAdRiCaGsNETmnhNwmXD52ry\",\"field6\":\"Jig4zESF0H6PHLa2cyViDN5xxm3VoPuoRyuUQuq33Qo2gEIgJ11OxzFVkioSEyOuyxecGVdlvHkHSSI5jgsVRJrQaLKhoJ10bqaT\",\"field9\":\"SoIyVomXPgn7DYmJyAVAe8rC8dyvkFltWLS2uh6mkPBrqG9FpUT0mMXgtxzjFB52tpR0s5G3bjRR3TXi3tOuTwrsKN0Yy4kLmWri\",\"field8\":\"1qgDM5PDud038VPrTa5CVxiowVNRAIK2iBlmBB9NZ3Ps0OR9kAWT0KVkoKYe8V7NBb2ghXxZippzhrDiKI5LUj3YqK1pYb3xZKgw\",\"field3\":\"QxEGRxNXlwhcUcIO29I5rZa8RZKRiqni0RyTiNpVFJlB3gVU2ux73VSyf0mJjwIbkWSRqKMU2vZIgeD98pKvU17f37ywq2RVpxpO\",\"field2\":\"Wr0K8KZWJrFSF3WYXp7uoweNrdf5Wh6lfZP5KExtN7jCP3blOk9jFkcUqvKc1QFZHmD8QTMj0tlDLAQeZcEJ8jtt5bJJKTceWUkl\",\"field5\":\"E15J8jAKPjWXIxTIBtIcuD9nCAryegtRfojewgeixtFRndwaUxLLw07g5z97OMgQyvn0vjmP1xZrOf7JAAXuQ1pfBOq9g4bVbowR\",\"field4\":\"usSNUe5yaONDCLtbHFk1JMDKBR7VzqqZaH71qokjb8rRvq1b1fztqihVE61x1FRMFh4cE3hVofK5AeDfj85MzBlUgrqVwuuDyl5E\"}},{\"stream\":\"gen:25\",\"id\":\"1730880588445-9\",\"body\":{\"field1\":\"XWi2tI0MD9ubHV1HM5bqivJapOxKzsqlj8Qi3Vf51r8YS3dNtoFS07a1UQmyBLVWfNk7FRezJdV1iFThwaRjX63I5Lu4Ic9VT80Z\",\"field10\":\"nDYLifbm5Qzn5qZjsUBuDDfK1C53XLHA459nfHyNqZzkg04GIFVJysijakXlmfoIb3ocnaPfpDP2JHKYn9Od9u4fEQwEGcjadZ0B\",\"field7\":\"KUXjYSAheSUVNh48sIcbTsRCJ66pOVN7pMF0Brl43GZseLbR79ogG92hiYzHKxjtxDZRYrCBDIag5i5lVePwqiiZenNhHhqgaOWh\",\"field6\":\"XHxp34Hjd6qCpUoc2jvrZcERwYqzuktQechOH2YS0xu5KBWKcU2CEUxtRfsPR4r4qwO508a9BcmPfsr4e1ceJkHL0zOCNjhGVDWr\",\"field9\":\"LKOr6QWv6TBDoQFeRsEQ11XaCWsRLrtyZBZHFeLEFovny94ndvhdEmfq2tSUTNTzbMhmcS3CpXJsHWAC5ZTNKtrCYJoCmW6q5itd\",\"field8\":\"0oKQDDyv4t8dEKYrvwnl2RIzWkqIP0lEDZlHT36yt1jCrOcFNAeDgN26mmoLLAphZVyj6V4IGfc27jvo7SuC98ayFOF1CwqbqpdD\",\"field3\":\"vsF6KZkuQ7FrAbhe4shJn2SMvelsWjEnA7I5Ahk8ysOv39VcaO1CjGQV1dD3JPxVQLMLtLEgM51grAvIQfbxcF394k4HAQJxp5pd\",\"field2\":\"cPZclx3geADrZcoYtjWqCdnDVvrdy1fsQ152joVh0dnSTSSKgrMbb919DpSsHQyq2vDJ7zalLkL9g80eQmqxJ7N9uOundHja1lYV\",\"field5\":\"uN87vvX4Teb8nCwA6giQuZ4LtUESVDzgBNsBB7J4LdX54qhlgPW8AzrpVbpsPqOXQYPQJRsalvggm3hxMU2rsCRDO13HZwPjs88r\",\"field4\":\"YTd6q3W3LR1i5OBa9xlJQTtXseqjFDXVxBofeeN3cGk9DQyNncRwoaop7rVn3jeNI2h8S8XZCvpoag8Rdhe97528PM2RW6Errv2h\"}}]},\n {\"key\":\"gen:17\",\"event\":\"scan\",\"timestamp\":1730880592560,\"type\":\"set\",\"ttl\":-1,\"value\":[\"88\",\"89\",\"90\",\"91\",\"92\",\"93\",\"94\",\"95\",\"96\",\"97\",\"10\",\"98\",\"11\",\"99\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"20\",\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\",\"50\",\"51\",\"52\",\"53\",\"54\",\"55\",\"56\",\"57\",\"58\",\"59\",\"60\",\"61\",\"62\",\"63\",\"64\",\"65\",\"66\",\"67\",\"68\",\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\",\"77\",\"78\",\"79\",\"100\",\"80\",\"81\",\"82\",\"83\",\"84\",\"85\",\"86\",\"87\"]},\n {\"key\":\"gen:4\",\"event\":\"scan\",\"timestamp\":1730880592560,\"type\":\"stream\",\"ttl\":-1,\"value\":[{\"stream\":\"gen:4\",\"id\":\"1730880588445-0\",\"body\":{\"field1\":\"PMB7jnqp3kZleU71rMwXUXRiuHZtN6h9JW90Lbc4xMZoFhhPtrmeXiOnIrZTTqRUpvHJYjDP0r05vFeuJiQkkVhlo803t2UdrGKB\",\"field10\":\"Mn8eZIMYtjCOtGjGOJbiyEOvyImoPc05AF5Z1twvEfIAZKpT1WjufOrrU9rYbPQCNnIXzIBvMhLEt7iEFfUsz54V9EDHMTzo35RL\",\"field7\":\"kWFfHy97j5AnNGCxwvtzTI77Soe0bUpyiaqYK6XJ60vmroapYHXbFg6nARESFpMBirX9EySgWed8fSfaBFrKQEV1EYsPdKPYFOZ5\",\"field6\":\"TiyllbGfRDJ2xyrGOMHxNIvTDhcYZcVXz3mv4wqT4K6iZaw5pz32z3j6SxCdJg8EY6CUJVfu9UaY0X7tV4bH20sc46UCmsukLpsm\",\"field9\":\"ZoYSB0oBMdaBXvrJH1mYmzji0GEjL1JL0BSu4LzrinczZ6zwUxuzvqHmkf0g4EjFHRBZytIyUOf5UrYnxHdMvmnypJmgnE4Q1aC5\",\"field8\":\"XcelQgrjzo7rwPZQfok2gWiqS0me6PUesCO3YiFONkeIuNa3pO2cbXZKwIF6HTh4sGbhNGsqafccYSuExtx4mxdiOSzZWV4sZLdH\",\"field3\":\"PtUQ0Dt9Tpb8NRoyrm7LMx3j9DIRQuNoDPy6xqaFn4RdHjYe3G0bkoiupPTrBgU1EjFR9DHQdvbI4F5HJAm8gYD9XiVcAtYw5VhE\",\"field2\":\"FvHctzycHagFksYCre77SEQxyOLtsOCc5hq0EoHGXtRHze5u6NoZTr3aEKZclrzE6cx5V6Pj8gwA1Wxf0pjPehsRkah4snHBHoEF\",\"field5\":\"CnaNcmzAY1ruTzpzFpKNjOnp7T1MQGvJT7n7DqLgSDib3wKwXnheBvNIg2eDNGSEKlrfcmxuOHEtGjIHnWF4yeEvhAow7F7ze7uT\",\"field4\":\"ZagNvBIgJ4jVDUzRrN8wgOS5pxTImxVXmuixvHWjFvu9rqeFXR8IRgH0fUPKr4Er4mFDC2OffRQt0fJMLwAHxKwUP7OcgC7xhwUS\"}},{\"stream\":\"gen:4\",\"id\":\"1730880588445-1\",\"body\":{\"field1\":\"YfXtG0qRcngf83UhKDa3xFugdCG1nEa0nIHa4oYYKv7LDcn4lIeRmMOIp9kimrRN0ibhhVPnbkp27zEFw1O23gkR2YtI9Chse9eM\",\"field10\":\"pqjMqtB3jzAnhZBz71NTiChHO2bAXHlyJz5oM9caQDqhH3jYGEaeN0ArBerfuSI3a46Nk9fTfQXzxnLNNemHBoiPIveOLLFZajYf\",\"field7\":\"jn7gbJ6i9uEqflF8KYf7o5EhFwsx5w4mqULa1UNh3CEwMl5dnq6BanrOfS9iOYGY9GYtqYLK7wqDGHab4yfEZHh1AWiIR3e39WtV\",\"field6\":\"2ocyGSJrRsjvbyNPJgA8aNqETqfNLlG9ZOURZGstTOsA07bcEbcRvEdUiGM7pgfrkL3yDR96pgu5XKwNDMLE4xwCvbUZECUzhboJ\",\"field9\":\"aWAxfCSgDgyuRPqErWXzo3c9EHkFzGjVZryhuUhnK1FqtwFXrfQDzXXMDro8GA9jvoIHpQRz69ortFwdxhVsFM8ppq5TCpKyA1XR\",\"field8\":\"v0VktXVQ2QeaPaksFQPgDs99pT1unQBjViuhbmC85w5HWTnSN71rAE1LrPKWbO8FXAwdHzKyZwvoq4q9waghHG3iFETsQmtLaHGg\",\"field3\":\"JIspxyMMGPhUG5qDCMtBJjbO5rsOc7tpG1eiELjWlhgLUpXDuhY2qQUeAdgYSizpEIcJUq03vzSnUDSGoFhyPIIUmriZeEAvBwP9\",\"field2\":\"yQf9LnapRHwhTzRoMJBCK7lsikb6I2k080iuCOqa0sY6KTA0bZJfNprrsp18gE2W2aQK2O2FhxjIPfvLWodmWlsz3yr4CcucJSEg\",\"field5\":\"L6AIWwbgXbUqkS7um84CytaUWQtCwYI2tIraED0KdOVuTSZM3jthxlwv8OpI10V4srNCs2JdNbaB5AWsNwmyJ8bZIpBwMjfYI9Mw\",\"field4\":\"FIfqfL3MngounUhuu92wEDYt4wGKC8dvEATg3tPk0m5m30lXk0X1T1UCQAW8ttKxY2tvaujLkpImjKkWbqkLXmlSVavvQXF6oJ3b\"}},{\"stream\":\"gen:4\",\"id\":\"1730880588445-2\",\"body\":{\"field1\":\"hFIwUZHHWsag3wYEjhTbV486ENRbsM1YzwGwrsK2cPq16TDbhJksZpQWju6F6NfH6tx1w04Jm4tuQsS2KGDos9SoS1FcAOL0KMV2\",\"field10\":\"4Iftmc0bvD4yA5ZoxjkyUc2XeEhzIyd3GiyQtJ4FaaTtZbTb5VBIWImFHOHBliuURGUM9Og9RGtWEwIqrwr1PjtC5Xr0msrK5h83\",\"field7\":\"4tNHTSz5NLA4Ai8F76RmUMZMz5OTl2JnfoFvl0ChE9qIMbb1475XZGHAxtq6FEW8k8vqA2e5wzu1bOgFkalrmNpmrz1T4LTlEZN2\",\"field6\":\"qNhyj2KfL65lgD0W5uvPDQNN673JuQorNsfgELQSWXyXNy6Nyt0AoD3pNvZVpxzfoJ6PcFWDFCM5HiD7zvroaF6Rll6Vs1NTLe1Y\",\"field9\":\"JYjCFnIiy72A00ZKym9kD7a19trmgpnqtsa1UMIWSQjFYG6CoSYKkBCL0c4ydNysjmbEFYCmFhaIg15pjQxe4OAFNld9YUo2RlPF\",\"field8\":\"SlTRbeg1vI1DfxQztTge4V9Ds0wJsC9u2aC4T9FvN0jfX3Kcffo5lN7ROaenTg4Pa4w73QulOm3cUjXs50U4S7V6me9KzUAeeGN6\",\"field3\":\"jxgETeFJXCTZhIv0reVpBavcDfhHsrhwqy9ivTfM2dTcyhK3QVJ3C7ayoVW4fKTgJWwlV0v79ZqCS61H2VMb7jR4oQh8uirL1nqd\",\"field2\":\"H75lf7JI7tnhLNxIUxgaOHtDoggDk38KqmsbtjcIxnaMIWqnlC1r2r6McUJqbYVMkVu6nwM13vzLcCwrvN9KLhPEptporUIsqQuY\",\"field5\":\"7ZB3pZxp9P0Brb9vB6DHM69IcFhti24tfmy5zedDPVWvhH7SZku87nEoxkj6bfnL2WQeM6lgcxEcJGplztz0VL6cw614ZDNM6eZX\",\"field4\":\"xll3jVRdiJV7s3Bv8SFCQBuv194xPcgkji7SQSozKyQY39nQyKG9X2almUpY0aojPvX1ahsgVy268ZAXvGjo7oajbJyk9vMovUPV\"}},{\"stream\":\"gen:4\",\"id\":\"1730880588445-3\",\"body\":{\"field1\":\"p75aqJ0EClphYoGVL5aPg5e2J6dzwJtFpFRVpGyKnKllckM65RFRdrgndFMCe1HuxqgzWLJ3IM37BX9Z9GcNei7i9JrPNHSWQw6i\",\"field10\":\"xcvtQoOsBhgJ1Nn5IrqryqSy43z5wNWK3wLMxTysyjgvYUQlPhjzE01EQYDlue5u4Kfoll25IF2DB00bdRMW34IXWaLMftHbCiMM\",\"field7\":\"pD3tM7gVHAdffxOPjOfrXfgEvXvKYFzaiPksi3ljSI52Vf1JLYgNCG2vyS3VgCQc9Y0DRrMZjzLy2LXzMvYOmjInc3kR9wLKYlrW\",\"field6\":\"YIKo1gUdcvTVE4Lwz6YYaIDZYtwVSLcTfDPV84m8YFBOEXmyZzrhPhOIZWlTQ6pd3SmgozdmXV0iEVJBF9KyNvaGnQpz9DWeLGgX\",\"field9\":\"gnvqV79gXNwpD50uwNBLOB2K3jvD6pupknoWI8p7SQWXnq7Dwdg8Jyzeqk9enFv9HBWpAKSM5O9wF5PDmwa11j9W0IxFOSmw7h1z\",\"field8\":\"Q1S2LGsOcqK9RLivwAuR70IqjHqIh8KuQQgHFVjmNGYiVIb0TxyltVrcmMz1wNSbBskXIjSpi6b9CTmHT2gNEbgHMyL53dZGwbpw\",\"field3\":\"AJah5qb2jWcdPEjdR2fFL9G2Ra10CgloXssMpJb7030iAbZf10jtL2HbR5LpKHD0roV514lPRaoQaLSLnvKPo5YAcvj0sA7OTh2v\",\"field2\":\"IsQ0SjDskR2BZsMMpmFjulrlJRA4oFkuAcrQgYlN7SHnUoaYMZisKtclJkboKGfjaUekJZE8DCnH5sSmum56JmIHIYNS5yKeEIE4\",\"field5\":\"qQWICrDrHFG7RvNtwcjfi3i32Oxms0rN4lLWD7RsreCZuao8ruus3XdVelC8jrVQjAZnosCRz1JwUMAaMSCoM0Z9LzzXOKsGGrMP\",\"field4\":\"FCHM4EJWvR2wirnoBXrRQ2atDk95arN8ukwEzYNEs4KBMiB4pgKN6ailnHwfvcf5GN7FYF2AhcyHtmtu0QDGclwib1rmvEBFr8Rs\"}},{\"stream\":\"gen:4\",\"id\":\"1730880588445-4\",\"body\":{\"field1\":\"2BJctwZ7XmHStxQf957aDaPSMuDrrTMSx1gPIDDj6Ey4Vsmk170e9ZAnbhRm5vBBzpEkINNufhKvVs1FjMtyxWbYin1aPLF5Oqgg\",\"field10\":\"pLF54hbw6gBBL2fTsgryp0k38zKKnIhRXdV7RwWeJs3Qq4tYIHIC0de70ZqOJvh276sAiS9yxUId79FAt2iZkABGJn5Ycpu5nrC7\",\"field7\":\"Hpm3TfPdrMlWtChcsNwsomAb0Wxzv02AmBNJfT0FzSQYUjFFAjpfR1qUZCCe48E7xwjpXpSjhPZeiswC5GKM1WteowAvMVv3no6B\",\"field6\":\"cVWjWGkphxxRKSEH50mckcQ2x8qHTwVGV5464Xo6UxYfET2woRHXaYeHi3MbV6CEDwGR5Gsgr2Ctav7AJn1Wh9qih026mmmlY00F\",\"field9\":\"khBnt5K7GQm4xBtscOLiBFHebNpBxvriSZXqx2duEGnb23c85CXLFI7xy886q7HNMvvYaglJJCeA4T2FNAOKsZwOTrTCDSl4gY0X\",\"field8\":\"5lCoUdn1dH9eZTvoXINikIlfQTmBTE47RshpIRbSQYcEVFS6aOhuLWFfJ5YrTTwQxUZuQkuAHCWHA3PdIXAovP6Kq0Rx3xypJHSR\",\"field3\":\"T2kHeTzyv3AshhUr9U8ibIddts1NSGYz5n8bK9xwh6mfHJpv96NDMTP63A7hYkoWQfEEo559S0PLE247h8IR9O4ZlmwzvjreGAsa\",\"field2\":\"y2z9I9Za6oANolVKekUlpAOEWE0zE0ZWANYOJ8U8bbvC7VBhO4ioPClQCpCf0GOEPNfDwMedVjYPEEKOeylS68GoThliNVXfusNd\",\"field5\":\"mp7afee5YKoJ7AxxvVZbp8rVBbqWWhAaHdZFB2qjCbqsfH6ahlTyDiDjyEr22Z2S9HKfA5qSE5oThFEcmXHnBoofUjb57Q7dEyju\",\"field4\":\"g2CQldfBkWOeqOTjGa1StjmXPECsN1k6GpMfxBr4uYMJBzenJeXyn8a3UnDXztTQ8JXNSrLmci4Y5qDLqoanDF3nsZXmVDFDGFrc\"}},{\"stream\":\"gen:4\",\"id\":\"1730880588445-5\",\"body\":{\"field1\":\"yVkyqDiCDLXb7CyEtFUApUAH1BEvD1MjZJk7xXDOuCFHH4ueJVP9HKiOs0DkQPG6T9hB4skYcwiyGvYFizkb4fAB6Xxqb3ONAlIF\",\"field10\":\"vtbdWcBwfRmFUmDoKj9yngwxW2s72DqrYaoGrExeQrI3zoCJqDzGd4v4vgUc5lhFj9ohnHoOg2eeZcFm3v6eXzuB4NR25pW03Pfp\",\"field7\":\"VKIE9EJn0aTXXVKrPuNn7i4oCh1qMfJO6l5zZESB21tzWlWNCdRy6kmiwtozxS2vdxAP6eosKd4W7Gbam6GPfeaSzZxAgBjPfz4H\",\"field6\":\"meR1FjzQF433gjfoYZY8xelNUvRiSdp8vrdVGlQ7CxYHtvt57d4e342dHifW7a3u2OLZtQQXJawONdubI0x1K4X7PsFVoN3rjhSD\",\"field9\":\"4aMIP4ifkpBsZhioxuSnWLs56xiEN4ALgYZo8MBX7fhRC8HyXUilbDUGJgUNR1g7KRgHMpAHrIWSnsCTXZNizHr7iTMSP0lbTEz0\",\"field8\":\"zE98Czt1Nya5niTUckVeeK7MnhNgrPLguasU24I9mnatoXHoLQJ8IIWRmwn56GlVLv6JVxV4bC9jbFUBGvQkZHvhX6ryQTPN0t05\",\"field3\":\"BAYe7pHMbeQ5PRrWZig9EpTPSVTCbIjt4ONmjim2XwDycoDuvDhUfI1KBE38wvAYyKzDw1oRStGWA7ASkmANvcp9H9sj3E8Qy2Pl\",\"field2\":\"vxxjNBpQcbxYOoaqn0INUbpZjsSnifBvccQWCsA81veQQ9fulh40QXOUicLnV9L7pQ1iQIoylKR6xA1EPRneFqXlmCmGtlAKHmh8\",\"field5\":\"lgzcm4wXwsjX6n9Mww20xXxRqecFA05QK9tK0KhI5vCYxns8113sSWJKRJRR9T5nBeJ2fsc1Jmj0FxPtd4rZ4oLXFHOm1uvqcLO7\",\"field4\":\"kYFN6754J2G7TgNvYLncn19piG2lE9JesTEBioCJD2hjOw0H21PmQxFnT8oLcERLm2FNJybBzWk65kL1Z80X1nEk6shHdfIVJ6pU\"}},{\"stream\":\"gen:4\",\"id\":\"1730880588445-6\",\"body\":{\"field1\":\"4i11Zl2PJ1T9HFL8XZif4EcCCZXL9ETj9JRUmc5VbaM6uQ8bNLeYTuyy085LppWqvWUiX0FvHUjuQl1xCFez4CvzmuljsVKEcylv\",\"field10\":\"R8mFjHF0UMsJ6oia6yzIkslPTtaz2bRJDcMqOUQR1Cf8Oa6NlmB2NpESuCPDEyHK8GTbadEsvgehBpOIywgK73VXN1Hz6fhwgaF2\",\"field7\":\"xYBIpp85q2ctgO2TQR4tPiCxFlF18wUSUU60kGajawVsPnZTrL4U4P9YKUNAd4aPgbet8OwkXIHKtFbzCPEobg8ta7Ru41Ak8wKZ\",\"field6\":\"VcTcEJWcXI0Rs2ECxdl0T42kA26meG5IEy8XOvhWDJ5iKkB9kFQ6fRoRpucYRbZRJQqwHwMZ40Zbr8VRz1eogvrh6DYjznF7ui7P\",\"field9\":\"w6MGrkRjQmCIIffamblkfY7bxLMG6hchEZyGPlByMTCsS5qgCDLKdmdpIoqDikUY6Yq6FL4kXpHLMYDqCL7ggsaVfYK9ZszZyli1\",\"field8\":\"ZRSU6s1EJcYomOx8CkE0mPpfFPni95DtDGEX9INglVGaknXPjESw3avVLPyulKCmBiv0YwzKE8AYl2Wp9aBS2DKAQD6prKe4TLFo\",\"field3\":\"XELZ9wFJ8AV24a2CAT5kA0ZgtqPHrQY0euLa2222aSYYo9vFAcvKwA1stMSvlYq42n6uHflokOLrqVD8VAq00ILKXVxFnt3JvJ3O\",\"field2\":\"f46Mn6fGBoeUZAteSfXgDaUqPPCKazCSTINQDk5kUcxly574CThp8jsVOAbhY4cth5Gd1Ub0LIkxe6NC2K1xkCwGzGjfnKCZT6sG\",\"field5\":\"fn549KwYkDeARpf4xZi04Xc5fmlG6xbHzVDw9Oo86sWTwfU956ov6OEkSN2yMnm4pQUYibSfkNooPnETAnvKxNeTLAY9S8qqK2PT\",\"field4\":\"HBfyxh73gpc8A06DOqhINK3qgtS44Gmc5ljl9tO3bjlCebcOcjfjL0MLK3SCuZmhNCNfAJ8RdP2TLnicNKx0RfUzG94UtwkBBqzZ\"}},{\"stream\":\"gen:4\",\"id\":\"1730880588445-7\",\"body\":{\"field1\":\"JVAr0JWBW3JNehEej7psbrbm6egW3HVIJnjx9QyhnCtuvzaCXZTVk8w5uNzPeYjH9Xuu7eORKFtRiohWKW3rify2OETVH3YtVn4h\",\"field10\":\"U7DYBTDLAmn03cFcuYqHq3lvpPuAzZARAaqjJGKBJibEmtmJjD6mgY6UkYBfhYh1akoTSdFxWxVIA3RcEYkJ2GChoM40tH2FQAxG\",\"field7\":\"NPWTa2cLz8jemWZdvRq7zxupc3B4fZAcnnwgUGXo5TMuzNrQIuSYsrcOqtCvhb98GQDbyEiXDeU1GS63i46emj3nUZy6kOURldxD\",\"field6\":\"34J2Ecet4XZQaXNvkbqyLQjRrz6LZOZ3c9EJn65Lg4NEVVp6nusSyuS2V7ckIWnhNnSLcDvvUpr8rL8UawkIGBn6M26DHlX5DNkW\",\"field9\":\"lSk1AoJJE5Ba1v3QlkkDfu4l1VFDLiNu8N83poxRuMkD717sM2mvlN4rYjd0pniQXDtDAs18Hrflzt7qgIoCBUwizCeem9s80CAd\",\"field8\":\"ya0GNULnLRTWiKgWCUDrOVBAq1VYVxHBBLwcOBGzkosnyqHAhcy44orFqWauoO5oqckhGcHFTWrgyZCC395uqMAVYon5NUINK3mD\",\"field3\":\"UZ3u9ANneSJwi1wA3NsZY6kNMKxSXxwxLJNZZS8U5MfT9Dt5LMjIjYB9n3tp9yun4ctbXv2XDZ7RIZjCXbQwYLkMnzPSRl3dqOip\",\"field2\":\"66nFvDMEkh2e5O7Mpt1D0DoDoG6Xb4MRpllYaNbQSpgLlBTDcZR3IiqnrNIZfXE66D0ic3x64D7sEbcg9iF7H7vJL45QoNukggxX\",\"field5\":\"tihmcpovlLVvL1WFQrGmLP9OWAF900RyUJhqBTZgj894feJUFeVV6DMrJ3CwqfK6U61DRWYpaLvlvfc9UPOYaB3adN82IJFDGmJG\",\"field4\":\"Xpz13d3UmFW0ob1BMrNUQew7C9UXoAPyct1CGZP7VMb43wMWTpOV7yImxmHb0y5ykneiatiGfJTh4GkmsLWfSgOOD2E8gvxfbVGo\"}},{\"stream\":\"gen:4\",\"id\":\"1730880588445-8\",\"body\":{\"field1\":\"nwrySPOi6avTvqYYshcCakeSP0WDPx7WdcnS6HFB18qRHcjiAGmHxMgxY1Ix2FjB2fpsrBOQjdv4uQW3EwFHfLdrzBbD2TMMH40I\",\"field10\":\"lHqUuJ8dTFxt6FEjpIDHdsHPlYXnj73TBJBqD1DrX33IWZx557k3blIjEKNjocSE8np3lWT2SSwriVKYiGrUzM8gWYX8PIAL2pnG\",\"field7\":\"zm9Whq0IRA3cNanbGdMXr4IW9tf3H6R4ClKNWYWZ73Vl2SZMA5EC7yfhNyMqARFjJGLaaTciZdclUbUereg2tp3CJtu6mK9YhbZD\",\"field6\":\"2nNaz0uRkMTLFW0nWxTR3iIuVmRWKnkHyqqIY0QIRJpRZSp1A7txBDosiyFKjo6e9EKWGEUmBtGgv66KwnRMcDtjg7yl7PkS6Yua\",\"field9\":\"ZzgOSa7t3i138K4mcM1Qb2FQrP82upJGTDQyhfmiStBVSYCESEXcxqT9DHO6HaxfrFFWQ13p9aziHyvF8F8ORPMnTnryWtRpWbJP\",\"field8\":\"9sRBtjhnUlqassPB29PhX0VSSOfbQ6x1Cx006ONQ8InOuSnfvp8OIyMAkx7RXRTZ9M9FYWGLVIgNSL1OL0QyEtSfa4zMmesXMnbv\",\"field3\":\"CDqEOxn7otajqm4H3Q02VKse9MY2v1c5TRZKj1ZgKNJeM9YM7SW2XDhp5Lk0ks9GRy99HhZZb8BLEQSVFkofg4lO8NT2uDDmyHsT\",\"field2\":\"EtYmARWGMjWiNYIAsdJQLJryOStvjRPcP9mCYExmS6ZFiO2ALFN3tGHWGCJqIwghbOnP54lO3y3vy8rVDs00aCp9e2F0uGiMcS1t\",\"field5\":\"i7qOpwBevLuSF1u8BPhBsWtWHM6VHI1zJlDSj5qEuJ8EHfzABuAJ5LvTgNAChcAVyrgFDiu9Y3q300ALi67u149Ar0SzLdD8tPGe\",\"field4\":\"HW2cmrlkEKb7PwRpbqWFXtK1xJZlQUEwiXjH7fpYDs2udaCGH7kGA9pzbzK8pef0mfS79M9Ds7DzabDsURi56sQdlAqQ0qaVCBns\"}},{\"stream\":\"gen:4\",\"id\":\"1730880588445-9\",\"body\":{\"field1\":\"7e5vgomOfhabi7200l4GMKWL617aeFSW8qUwaZKdAzlXFhfusg3qm23qSZhKgOIZiVg9qnI1X78UCkHfpG1YWy9oHLxvhYxlGeXu\",\"field10\":\"c4qft1iRQ56VutrkoXdMVIg9qbMAuLNs5nxniKsGSJ5Wic4pTQHp0LSaDIfFBag7rKSzLxNB7Wpbm8mg6IrABE3djfBIvGEIhGpb\",\"field7\":\"OFzi79o8i5vjbnePrzmWnXuR4ltZ6bnEDb54exqpVmUh0Ezs9uLQ8xFxHi0FH84k8wrOKHfktxa4iu8ETwz1mMelusS4hbUvjC3H\",\"field6\":\"XUyyHK6JKBYwRSkdCwY6gEtbTgYM1zKBL7GlnHh4NLvvHVuqZhpoQIczqvl7zIcNv0jVNEyrrchOMxh0xJEoglVmMhFuGkesjwGI\",\"field9\":\"w9ENQuyxSd00TypTp6pce2Dbp6JWQjNVxaL96B7Fnn03v8NK7r6Hemv7xCMmXfmnp4e4NjfoyG1V0Zq0FMTdgU3yIFOKUGT0fVln\",\"field8\":\"Pi1XX3bAji6oImCaWeWbh3cPyGnZCTnsPfHeaAZ7Bh2lknMT3NtfoGGF10yVLGqHL6Mr6Rh1tiTHpeKlpcHL3cgumRJTTJU3upcx\",\"field3\":\"sUWd4MLF6zsrazA8Bx51hWVeJkPxuhdg8wUl8nOHdS2G4cxMFb6odrYlG6MRIVV8meOeCPXVc0VKkjcIL1tHrQI9ovYfftPbqfBJ\",\"field2\":\"FVywdpeipbUjryal0xP0e6Wqmb6XZ7qru6oNAg40XNlEddXtpUcjzN2jEq0msKa0Yij1U6I7fGfM0v94D9cAMFSUJOuTSCpASmBx\",\"field5\":\"HB8qbcTERtD2ASPL9ImOffZ7pUjMYQXmEKsRVzw5xRPZY8kdYBS9vt3R4mrUqbwaKiWMiNo9mswXvbdKjnRLHuK9oZM25Ku08LrA\",\"field4\":\"thCRxFJA4VNMxnFg5TxMEfyB1d7WD2D3gSpi4jUeG8SXd73rf3sXt0XAaCRrDZrqXgTUj6J0XyAGSKwZpGKAif6QQcDG8KbSf58D\"}}]},\n {\"key\":\"gen:38\",\"event\":\"scan\",\"timestamp\":1730880592560,\"type\":\"set\",\"ttl\":-1,\"value\":[\"88\",\"89\",\"90\",\"91\",\"92\",\"93\",\"94\",\"95\",\"96\",\"97\",\"10\",\"98\",\"11\",\"99\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"20\",\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\",\"50\",\"51\",\"52\",\"53\",\"54\",\"55\",\"56\",\"57\",\"58\",\"59\",\"60\",\"61\",\"62\",\"63\",\"64\",\"65\",\"66\",\"67\",\"68\",\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\",\"77\",\"78\",\"79\",\"100\",\"80\",\"81\",\"82\",\"83\",\"84\",\"85\",\"86\",\"87\"]},\n {\"key\":\"gen:85\",\"event\":\"scan\",\"timestamp\":1730880592560,\"type\":\"ReJSON-RL\",\"ttl\":-1,\"value\":\"{\\\"field1\\\":\\\"nhzVI3hJ5I0nz4iA8AzKvwpr6ob3DEFq8j2iOetsxn3K23ivnJGScrT7HoJ9pF0MmW2s3zHYw6V6odJXFtiLcjoVEzjcaCgQwQuJ\\\",\\\"field10\\\":\\\"ET6tsFbRbhm0D6yqHyCavIFwguNeojm8cE8ub5coUbafK8fT7vsofTSPkVheG7LKnL6COqru5L7NN5tS7Q6JYw1pRoomJhA8ecJc\\\",\\\"field7\\\":\\\"IruloZjHfyw6LolejwYXKIqGAbjKyIK990MFMBrcI4ziKqwMFxiiM530N9SaKVgIsaHuvQqlHVqHPMxWW9T1gxI3eZeKtfakb4y7\\\",\\\"field6\\\":\\\"FogXKK6KRrAwqDGAEqgAhhmeAsI4elgPzvRdeV9BuNmpEVELvEPyhSwtB8EmoYpAsBEeoKglCbb2fyiPPSBOKLDTT0toI7qdOulx\\\",\\\"field9\\\":\\\"cEXgxeJTxKYzPdNqtzR1ykZPih6O9BG3aa7W2s27U4Op5RUWFqpDUrzx7FFwJAZu2BvdlOl5sxB62NRFyx1jYsbMkkDKiWKFJAvx\\\",\\\"field8\\\":\\\"7Sow6RLs8d75rv73z369HABzhXWsMaE1DXItGkPuagG0uWlwV82OQ7ThYO2l6XYserkR2yhzYs338IbOcdwVYTV8OwHaW34waJcC\\\",\\\"field3\\\":\\\"qoAhe2QjrpFOpCGHX17CtykinwaK274Pa3np6STdyUUkXRJKUcRaTfJgDFR90jrEokXgBjh9Y3UvR1zDpMZ0v8vbb0oI0a24wCdB\\\",\\\"field2\\\":\\\"yX0l6g76MRMYpr3V5sUO1ebvfOAKqtKiE0DZGEgCr6JIpTYf3R6A6jrYqX2sjpHe5cWnudSBkaMHQNSSWwX54JKHTgk8H8SslUzC\\\",\\\"field5\\\":\\\"PNDF7iwhFxdDZsCs7Sc5E0UcKPnfN2baIT8dJ9Ul5CccYUqUsPZpbcVUq3FhrKSjpFoMkCkTDGz0ilfFl7JVxOx1XwLoQBXEAd6e\\\",\\\"field4\\\":\\\"wkoe1GT0DqKdDUxSeGEQAsKEw8ss7Pjd3DLweKK9kikejGtVmROi5tZsbiqJg5MYwvw0YaWVFcI95TD0u01GoQPa0tO4ufXW3SwN\\\"}\"},\n {\"key\":\"gen:53\",\"event\":\"scan\",\"timestamp\":1730880592560,\"type\":\"stream\",\"ttl\":-1,\"value\":[{\"stream\":\"gen:53\",\"id\":\"1730880588477-0\",\"body\":{\"field1\":\"piFFXqTQncB21gdgb6sGzBcJziiZWLmKO6DYaYmRa82FOouhCA5B2cE1WLYJ8T6aj7YTX5hr6aXU8XS9dpLhggTTrb8eIQEb7Atw\",\"field10\":\"HO9UZdOqAuNe4I6Vu2nmgorBVbcO9t6YH3KMjTCvALhjrKuoxtOpbIza67kPT0WKZc4woIuTfIfYxyZNo82p19RycpQCtcp5fEyh\",\"field7\":\"gjKpEh0AZbu0FJQc0jMe3eRCIqS2N3w8PNWZkqRHT12V0Ve9HkWbM4hMhuysh1PahmXDglZuG1IywOXEqlGJbxnuwfrD5eLxWsNE\",\"field6\":\"4YZliG0fIsrPXFLUcsX9tCgEaWfAL1G1XryTy6EE6pDzzAyEHa5d6XEzGNorcFLz6JCK6hwnirwbSNbobJBovx4QhSBKn0c50d25\",\"field9\":\"sX3M4vqpFiXJwRpwEbyzgLBDQ6AjzICnNNaxoJfKC76FG3V1sxz7CznV0EdqyCnM0RHzjxZaD3yeCyWYtonIu00JPp7LJX3Hp18H\",\"field8\":\"6fMhBpWflqahHgVzGUxpRiHctcCyvC8IkewOfhdRsF6ernbP4YA6qoOuoQIkxB9Z91sNkPGFIiNnXe1XZiazVeYxsv5v1ILGvX7h\",\"field3\":\"j4GTwe1XZ4nMxfeMVSixdBtiBovT2QCW4gAAMHjZKyfDsIuSsSBQrQPt9YeLEeLouzdbUX9llmL27c6oc8ht1amY8SLHXItIzM1c\",\"field2\":\"oPeRLh6jHm8Q7i9oIbwLrd7OOUswWaRviXyzXTdfZbDzqaSUdS11XhYP2pV99eM3GgPVshGw2PLUIH80lVg2SZoM658zeXQT1hCt\",\"field5\":\"J46F3kmKR44IddXr2gjqSPH8PdhMMianLbECRK8lffM39Xc7a5tOpv5nD3DtpdlktUfUw7yV9yVHvK1kq11jOUVdXGBQccvkgFKb\",\"field4\":\"VBP7TSZvV8GXl7YUamfYpYkKrBuFNHp3AO5pO9wjjFSZe3iSzjqG09bdBQzaXzrR1KK4TUTGNQS42f1W9wJzQVlZ8lyNyvssNys0\"}},{\"stream\":\"gen:53\",\"id\":\"1730880588477-1\",\"body\":{\"field1\":\"Aou9O0rsJ3vR7tLmkaBr38z3s5jUPNXNFZKk0YDhcfMBxoLV9SzIW9asuSxITzoTxqpGl3CXhShZ8XrTbldF10Kk4oDnsYobPhof\",\"field10\":\"RC4YPiBhT6gw1oVb3Xs1gccuw4Uv0wK7acFnWBBD8Xo9RczvxWqqADeJTvwoIuCDZTBZKNwIMyef1LmoWIH5gegpCSTpRGmJEuNO\",\"field7\":\"Vk6NrhBaZRxztHn5uoIC3kTjFTZEkq57zZGDZrPNs5VSesmt4bj4x6ShOqPwutEiV4owCTLqUpN9rpUdeZtNxrklRHvmt9aQZ6NF\",\"field6\":\"iJitpylJq5OI7LqqtSjcjIhndx30BA1Cp8suSQLvF52jaoWYqEE3k8bct4vhL4BiwqOwzkdbIOiuUtGDM8G3daZvvbkQgoVGDRnE\",\"field9\":\"PWzLqWzqH0BX8eyhLqxp4E1RsQcRysTCdiePUtqgXPZvHYZ0WcBUCSuILzEKEvjHiNyr1LZYynZ1XS80AMt5ZFFRFwMOPOcsbuJj\",\"field8\":\"KtWRevbOP2XG7wTQoTTJYccRHuzowJTZGrR7GpfvYCWfzbrt3kHQMb5GOWpOFGuqNjeoqG8vZ1aYOk3JzTEchkTVECSk8cPcGJPZ\",\"field3\":\"mLGeaWMe5cKRb5iFMPBc3qX1TS41VXTURJmdVJJDVMHOKji4i5A2cficM2Z077Cbj4TaidIMXq8YD0haxrD0FzW6gDcR8KmTfugY\",\"field2\":\"7JCSOmf0nTAxSPrTDyGLMNW9gvlN4ISJ1f6Mnn6Q3q8laiJXKL0wK0HFlzGRfQdpM169rbgzQJBG1rl3cAdBOiKZWUnIfv01JOLp\",\"field5\":\"8a96U6JHfDU94RbiE7a1Ip8yUJSGsLXMP64fZSyYwya7bSxB8A7j3F5b4YmTisq8CjaGEUbuJ92h4R5X8dD8DrZK3PvG89btiBzI\",\"field4\":\"anP2aS5FSUqWIDk1iSSOzj9klyCpCB6oUoIbcJ0DrH8WCBasrcnZCXUK38qbnUTKMFR77wyOHzNeUFosLrN2e4NuSgEKUjOLWzeW\"}},{\"stream\":\"gen:53\",\"id\":\"1730880588477-2\",\"body\":{\"field1\":\"P1VhCZOj3s0xFRuLUIInPgCg84dBd5CfmrbPhCKFb3q5VXdfYi5r1pkGk7X6JupfxcWBKcX6p5gzWWltUABej8EGIHtn0TD2eBmq\",\"field10\":\"CjJB8aBgIxaPAFHt4vJeSZhG8bROf0pxJUYYjzIFGijXcwRNfMDEqqeEcAg8S6Qm2uWS0Uq8sBeVweBMGfKGlhwJiS0lqsSca5cU\",\"field7\":\"79j12zldyIUmAsZUf1po5JDHFUgNOtQne79gpIfeVbxPk32ObaDoRIDPseR3ivjKABWfGCbXVvnaj1khZBv7jmqMkqS9dNLFh3Tw\",\"field6\":\"bMxPYR856om8BTxOuhH1XNZVgcjnIATUuN0UXFnQ63CvLKcxZJXPb73Km0zKIHkoLYxuhhYrgqUZFOHyGSC2j653CZhNTRNfiMyh\",\"field9\":\"hGbOoAQgILiKohm9UIsffzpWDOMSGt8Ira2w1IbVP1Zjt0VzR5DYUmSPkKifVQmLmvQmaP9LKFZCVyTMTJwxc6EKeFjosgSAN8VA\",\"field8\":\"g5lUjA3EQUgm8xDTp5xr3hrho1FlDbXXtf6nw5D5vuNEIzF8TPcRCBQrKK1SZc7q5gX1TVS1iMVIvrbR9e8N8MvltIus7yYJyaGR\",\"field3\":\"Oj5WeUmT7k2MjCQHqJgrDW2pb4lTdQOl7aVTgTHFUwPm2dJMQY80Z0oW2HiUnMWW2LAZTnDPgmSUqsN5hLFTtwJkWAF2oP8InlRF\",\"field2\":\"ntspP37tDOlBpyLMHjjLyGFtjzl8erY53wbJxbXKMZyZTTsjYrY0Sogo18OXo8aNU4nDA5K9CtfoCvWMUB364d9vvekWnKkEjNbu\",\"field5\":\"Tn36oZK3PZeymVmds40gbrOBDAqXfcpz1GctBN9F9xVJNWOTU2NORYZ00RUuR4XTGy7IiFwgvdIuNVcFzaKQczSe3xcDQe9eFJlY\",\"field4\":\"VTb2bPKHCqXGgQ7KeRupeLCCydiPXhANVsFgU6ShvqHalUqN1zpxglb7tKu8BAXNItnw7cs0Cf87f09wEgVUqP79yqJuwVZi9nuG\"}},{\"stream\":\"gen:53\",\"id\":\"1730880588477-3\",\"body\":{\"field1\":\"P9IVGVMj5Sv4ewKSrvNOAW2Q69yEVsnLOPdbf7qPsvjNc7K9pMiyJI9w4lzLcHD5kNBaboazg6oXfm8AvvYHPBtSjbJqMCpUbK80\",\"field10\":\"reKG5HKcJSCD0UBmhScThJizh88nShZVcnzW7QicYcVmioeGY3GErNsoipnS63JCdkdYhhCqMLapLneKbUpY0xCWVhUsOoyL8GHV\",\"field7\":\"bZzhDRGBw1Ew8meHdtTFeZltJ6hFia0mYsTr4f5bvwOTKGv0ij1iKQZ9ZFlSVUSULeq0QMV7qO0CX9kFoHt5NpN6owE5TSHjOq4w\",\"field6\":\"B1QjPH30sOVURp6KcwuMofrCzEqEsul7ThG7M1Z708GUmLB4yO1ZVZ7wFytXoUNRRIJkiekHhjSWCh8XzOCYexobnyXCa4I6dXgh\",\"field9\":\"EBFTidOnqXkENAF4qmryf9B3wvDW8xmFqgEsesgAeHgHmHiCsGNbMhcSNThupXXPBjX7n36qogYDq2hG7jxDFioY46CsrFE3vGEf\",\"field8\":\"ZJC2aNEX15V49o1n3YZmGn8AReK4x1H6PYaPGL5Ptlwl7taohXs0ougXZwvFbQyHRDMPIezAs681xI37ry7NbKRAeaSCBVZNhqtv\",\"field3\":\"bawYtdGRqZV100XtqfneiWvG8iQ1UqUGtaJseaKH2J6Vq6orpjrqCO5ayQ7LBsP6OidTapowGx0zSwc7qXEYXF6Uk8HZmUqs0N9Q\",\"field2\":\"o5VwrXyTdRVLYm1eLTAJ053zVB0W9oxZjaiH9zSaPtiRUT9g9Faxff9wJaPKHvZJREx4Nuy2xCRjcawl9kauGijfRTJSfx7gVlV3\",\"field5\":\"QP8B3aa9gRHIKxm1kkrwBtir8baPN47yzGwg3UAEyarqfXcTJHotRI12uLEHLoLhbsa3RC5KfxDNjPtkpPBl20WW0EAIXcB2pbAd\",\"field4\":\"24XXFiEs8zNLtUUOgXy5o97RzrGRo5NJwM5pU8RBsMVAtzxra86vlU79EwJcqpVk50Kyuu6DMBRuKbLHTZ7KtBUTX0Jp65maDpt2\"}},{\"stream\":\"gen:53\",\"id\":\"1730880588477-4\",\"body\":{\"field1\":\"d0UynewlbJHMYuwAcMFWYxeYb5dgnMfU0rgQjAHejdqjiHp9LUbbsEWCzhEm0j1hKp0U27Qdq0uL2QmNF2UYV2Py7d7gDtMi7YfZ\",\"field10\":\"FLntEm1nfijrjnSBpwIL8bARQ6KymVbFdCEwQ631bbRaIUVjuWUdkioD5zEAVqFHCEvhlAn5mckqcoG9LeH8lN0ChZT0q4k59yvH\",\"field7\":\"eagxjWG7LtEGl0TySFQ2YVtv8XY0r8znecbYYIcGEDzGeVHdXbd7dXzi8SpCTkcF9ROUyb0hfcLo94wOKdPJqu8VGEgWkbBljc2S\",\"field6\":\"zbKKNNQJ6ZygiFqUgMQelC1utkT13VmKdosbAKioNlfMK53dywcXfORfWiBFOaYsV7S4cYZFhZBnZmT30xTi6I6Gan2udF2Mqvbh\",\"field9\":\"5Xbt5mUO7l0S2P8WaFFLxmpzzOEnFIqDJYUOFv18gZ0LQJXYHGmEw5j5wtc5OmYBGuhd4Y2AiuH2DMQczAipY9Bun47mo1Hm0lTv\",\"field8\":\"5LRZB01NgAnmiQ68AwHB1FhimMEczUgSHGN20cvwnIU8akbOSxT7U9C1JGUPtAvYhF2VVGbgbVQdwjJaQIGRjwPnHKils9W6XKDe\",\"field3\":\"cbWP8pP3sNytDp71VqbfWlUsOndf0LVGldF5pxGKy4FPHcqH1wO40eLMvXIMkEyBvEcrrtuLWNVvqSOkywd0Ov95yxwVlwtLAEWc\",\"field2\":\"CKAi9ktk9j1e4hTvXYLl86Ymr6vNmQXIYqnwp1witXgQaz5RaOJdssVSgrHy7iITRPwgt2yhgUofILjcDPYNbqg6L9JXaAA7QxIR\",\"field5\":\"jIG9bdKeboRmt0bbt9XQpFHZmvDDjuPhoJDtUlPe1h2VaFQBmdu2aCNsC2oWI2MEq6qKhSb5LL4G6HeVrdBf6IPkqgm0uBaCmzVs\",\"field4\":\"8VNoYjg5VYCX6P2GFd4swfesb0LbVOtCHpupig0PeSYb3aKMn1io1glGr9ybJtstxm4jpfrFsfLs6kMiQXWPCQ4CUZEmDYBzsVUO\"}},{\"stream\":\"gen:53\",\"id\":\"1730880588477-5\",\"body\":{\"field1\":\"1omsTYIWqjZd2lTWOP0OWJzsluIuvyakurxoB7KoqwwADvCniC0bi88tQpDhFF6xsGnUxsEJzj4yoBUnJHbD2Klvg4sGsn18lynX\",\"field10\":\"oUUZhwXsEDoSmxstok1Qpqe2yuwwFL0ocSTyeoqC52ElDCmvyAEIGx91l4gF0uNRfvyFRp20HzDmTh4TAiF4tIScsRlUWFbo6cdB\",\"field7\":\"XGdwZnYy6DACmlDpAuodaHwVDMMg878j3hXhW1igbsJvTmLB6WJPzkKr6LArERWUVurIR8TMpX4PbPEFOSgf5nCC12UgrEvVLHa0\",\"field6\":\"GO6hUmE6GODqYiJx2FR8CMXH6KSAr4reJpgdUKf3XWl4rj8oiNqXAGL6wmEwyOkUafotArYSQDs4bojCERII3ujCI1xBBYZfMHEJ\",\"field9\":\"kIaLHOUGmhWlx2kBPSZOlW3QDGl6PWRiMlkZtfLjmVNziIkouLUZNUhOtlCHMoAUZyW991UNSp7wjg6krvXzdYPlmthUpVWeyICy\",\"field8\":\"TkAujJ98XnopxA6lZzpAI35Gq4ubxYWO4HclZOoPzMZg6jrR53AKHrGK2Q0xfCtH3lT6PQTOGwg2r1vge3c0LePBB0Bm8NyEXZjJ\",\"field3\":\"ZjOfcU1Pn2sOt8F0HZs2viDtAGwMuEVmIcYhKumRuOEeujdlWg3Y0H6432ZU7S7DxT7YupgjhJ4o6FdpxJajOQU8FWBt9ADQ7Hzg\",\"field2\":\"qNtq17UJ581ngIYO3P6lZrNLCo9DFB1xwNkKUhHYuFmhkkzSi5ASTlAck1JbN2fyc06M0bsEPImpaCWihVN1p5QRzt6VHXUU1Wlg\",\"field5\":\"RmQ3wJTYKhDBfjQeqHCqXjozRc6wEZywdnJSrYUpZtDhiwiDYYjDx94hUfBCbUyYwoq3kY6VqCFDfcVFmaaF4rJTLK5YDji9nszJ\",\"field4\":\"n530zwzJOU3I3yn5lEhtFXfmNjKf7jEtdj9fWdwlKFwPANFXngax6PDG6M8ScWlwDQzPUhdk2Vw11tetweP2mW839D3HiwqyLO1X\"}},{\"stream\":\"gen:53\",\"id\":\"1730880588477-6\",\"body\":{\"field1\":\"0Lj5Bd2LMVC8WY0s7BU3IllF25TgZ8JqPzFH9j0I3I0rPPOvgRlGwTU7GwiWZ1G0eustPNl2Iin96cVtovbdw0tnVdvVjJSjj3as\",\"field10\":\"fpGx6ZRIUbSl0knh4k2fGcuUpGjYA6DdkZcSMrP6FyV0ceAwhSjEIJTD1j9MltSarTut0SVWeRfRLA31HcACqs76blK8UgV6XBjW\",\"field7\":\"SAdkTl0zc1CPFFcPjSx369Q0CPTshd59QiXC3kPO786jqgEY1CIjRHRxaODufUcMX87MTKySFdIhmgzhmpiJt9TmSishbpbkB1sp\",\"field6\":\"woFurTSFEP3m96UAGEVRAExQpnG3rv5algCDErRZbfzikvh3c9SuO3UQpdq5ONBhcmxinrkt9hiV5e35KkvNrEi1ar7pvFvLV78o\",\"field9\":\"NDrqakCa7kA8U0P7pLpg2eIQLNvG4K9SmzpDXHkRIuZzviLcbsWgwUGDjkZNoJWP8L5KDrPyfVgeRB1nBWLNZEfRjnJULqkh3C5Y\",\"field8\":\"OVYUEcnlEmBwv0HSHQf4vfeSpSwPeiMyO46qE6pDtBmIkr3sIaDYYcIq9IvWpdaISOt9uUN3VxE2tRXX9ZXxNnz7nsii9Zpil6hq\",\"field3\":\"Qov70lpzVIRYgbfjsJWQ99EMB4u52ZYkgZXr12gzov8y5fNutfNthmUny32skjeWOubKQDEXhX7x11dKg7C3xlmEydDmWia9hb9I\",\"field2\":\"EhsaiSZgQkEGLuECE4UAJJClJ3EwwUqw5Mr2WtlJN9xyHuw7CMmiLknOrJkXvv6rYBWb5gaIJVEQ51WmCITNFWCHI9JcdDH9nhPh\",\"field5\":\"aRxdrsqWuYBABwlSAU542KKrCBAo4PEWp9laQIe5Qf8wu4hVpBJcsx5yTbKkPBLqRfl8iVbtBkjzOerSzQiBmKBabF6wsJp4rSnC\",\"field4\":\"jYtLACxA3KDKAUDpJyKRxLPnJ6lCvRUjmFV0ZvzoK0TncVLhALISpOV2LpoycuOoGO8Om3mbbbj6pfVPYV9Fg9lVtuSSewlivQMi\"}},{\"stream\":\"gen:53\",\"id\":\"1730880588477-7\",\"body\":{\"field1\":\"CM3urqMung7cjQseGDY8ZnDmZEmN7KAaQsUUN0p21oH5ggfMJ85NBnbr0HDktYqzbeAqq2YhA1PZAa59eA4oYeugjOVJQHi8TiQP\",\"field10\":\"qVNZl9uNyO4AqZeSZU4kbN1vPJzogds4jEmYRBIUlewsiLUIlza9qTUnYuCWES6rsgRCp6zvWT9HmdOQohMzXLZxxc7Zdinz0sRs\",\"field7\":\"DmqqXZqLk8ddOtdiVE9mjo2y1uUAkrMmukaOsMtGePNQYNvqd7uf2OX8QFAivFo6SGdvIQf9BJYnH6LPWT1aV1PrwEmO7QfPV4pF\",\"field6\":\"xIc8mYhwh2fpLJI9QUYFmei41WRfPTbBxybbE6106CVUfUcw9jlL1nyjaE9W3gFHfXEYe4BZLByLpln1vpvuEl9fpEgRWXnsRBbQ\",\"field9\":\"KvwfnZq0fFpW8GaqnzLT5Qtul69c0HHRMnIlpgIIxkTEoDJ1qjaRyVt4dCTXJ7E2qb7VWUVSgjfy5t4UJ7twJcvi8kBhOH7KvKno\",\"field8\":\"yXLzZJ0fsGAEbDyXjQmQXpWvpRyfVykRzBFeiymtY3S44gik4sw6rzRhkF6yGqKgSKp5BMgd95N1aG6ZpOhtLcLjrhXAL5qANhyb\",\"field3\":\"2d67QAPtkWBxPAsjmHyoPvZK3eCfoZzcuktraSwv6cUAFZd9Cuq52txewCiFd10CZs3GO5srzuttpltV6bLS7uOnq0Ozu2te3kQ7\",\"field2\":\"kDoBQHjbSqsHGDPvhXs9S0XTQffvmqexRT35LgPAx4DC6NqtJvIPjkSTcJcpxC4oMwJvD915SswWDADC3rCtDTVC6iUoLEHMXBuX\",\"field5\":\"PzX2gL3kPH1t0Rs7tWSeNYiMOE6eRNvjwMs957mVZ22aVWiV8sWeqYKUOyn2C1qRDYR2G4SHP8CNdBuxGafKplzORLw8JnIqpeNa\",\"field4\":\"EC0DsOXZrNpfPJHHvQoSkppkPaTGHDWnzqXZivpqWHs0b3JZ5VeMw0wRUfa7dBh99CgkhI1s8YYgrCjLyNHfMTOqRHpx1ALm3dMi\"}},{\"stream\":\"gen:53\",\"id\":\"1730880588477-8\",\"body\":{\"field1\":\"LUSuONUTzPZUFeGDyhBSCP0BN7lc8R3Scd4wqMcEDyxv4uNEhyFUi5vg1EKrs9q9LaPtQ9iBeN6PblcLf5dUq9EbJcyg4pFzP6ed\",\"field10\":\"4PaKtqUAHnxOxZyGi2LGiCtRlbtPqNHully83wKr8MfzxUk4KTa2itp0Y7PGyNU5RjozudU55VZryumFji1jmLQIsQNsS6wa5w07\",\"field7\":\"essIMq2J4G9T4aR51zwMauKolbKiyChD6YzYSRuzMFK2rp6IAzd4kiqmH8707Smx5bIprKcQckwNMjDEkNOyxypvUfbqZQf5u3Km\",\"field6\":\"pzOyTfzSGZmCyM2FgvgBah7xlJrOogvGgE12MFo8MioW3b2WE5DRLLxamu8lxYi6U3YIikxBz7tLojs5qckMlLlYDpQ8N5OjHQZx\",\"field9\":\"NykqL97mSN6YvNoFe1mPHpDYLAxLeEVZgscXIgNQPqz5KV87Bo8dxmMNMGVXq6iuDs3nvXE7uVujMldFW7zouhqMbeEFhEtecN9W\",\"field8\":\"TrGzf8JdDeLHKe417LATsLop1EndnvB78gLgnmqnZmtYys5UZi6o6rLO5cogRSHwQX5snLeToTbz3Yeow3EaRcL5zoVY3PUGlTze\",\"field3\":\"ddA6ZfZ2JQBmlZJbpFVygM3GmcxrcSj29hiFdLsOgSh2FQmbxx7bAmmPP58j846Nr5sAXFCVUzbloPOFHSvZ1gSpw33rFZB5zYaA\",\"field2\":\"5blbilZpeLi8A7uBrt7ZwlNcec0OLRMeMJ7wzpFlt3HOozIl2thtV6RzPiOLocWGt4GxrBilhGAhCxvaRhGian0lbn8SiRhOXJ4s\",\"field5\":\"DRq9DFcJUkPwA12dxyZJfaQXrse356xeowCQZYwPpGj7vWMrxoQEdkzKSvZsuIXib9sPsVpnBCZBwtLiKyC59BlBVhpkqCxnA4iF\",\"field4\":\"jz54K04ZrRiXInB7XCpuscbjKOzoNl84vah6Q66wPv0SUNEd4VE45UdT5IRBmsyjsd6m40LtCLlXz56HIqaJyFZdgVGa5kk27LC2\"}},{\"stream\":\"gen:53\",\"id\":\"1730880588477-9\",\"body\":{\"field1\":\"2LdFG70iwb2LgexST6bSQn4C6lm2zPPomg2MqZmAwZuu0C0lyIDZbvmSkstSxEgCBcXyO1wrAtpXLrPteuVFHhlAW7Q6aMa3oxF8\",\"field10\":\"BGTKTmQblwNxTV0Yx8UcsdQRV8QlwYcZ3ofpNxLppvbcqcyFDebiwJ4gDouUMU0yJbJSM3xkUmbIK0v1TX9XK8l44Wwjm0D5JHi7\",\"field7\":\"sL7lVv5b7yKWlQGRqsDPqsuHpJfZ2QRk3aZK5VZATPuRGUYtbuiWTtte3ssBDUY4kcRZF6c5loC5J5H9A2LlzxY44SiJSWbeAlxl\",\"field6\":\"rM3jxMPNL9atgHfQ6cBBJrUKBFpWk6odYsgZ1PYeur5eluSqUCyMBIPg0Iv0fv2upIu7avltPChYf1q9ArpfjEIS0oWviIw2NANW\",\"field9\":\"xwiE7SJmXJEfn5wwV13OxvSZr8MvFRTkQHrGUSV9hob1N2MpkUYOq8ZfaFs2OyKUoWITQraEbPNtzbkXp354XP26Q4lBLqM25lpE\",\"field8\":\"c8poX9bE1ppjGHz8d3XMgARPrwhtkZ6o5omtPn38KqNQDrGVlMjZ7NW8qTVANlnkxDR52SeEjBfrSUd9eRItQgIL4cIwXyG9IQxc\",\"field3\":\"U0VSrdFPAEmmOU5mHel915Ea0Z39XNc2MwkM3uZx8UEXLaS9xuvOpWQR8bclMgoCZNIOA3jDkjSVSfTxCQvjWas8UXiWJuCqOyOZ\",\"field2\":\"5Ngrw60PZUtbalr1fdJKlnTjvAfBaRXJ1hWAkoorcK0BcDxt3oQqM9g6uEhRUiUMSLIRGHJBMo65HXkYcdBwSoVlxIBo0G44A3px\",\"field5\":\"qk29yWHF6x6E8sord2lAqRH52N1WV7t5JiFGaJjal1PoeYa0XRSVogiAVQgs93QX04LvVaj9KzgeT7HSVsrek2ymHtJIYiu261lN\",\"field4\":\"SWHcaHDAuhplGuWQttF1uzsNBEuWzT7aUXCEG3p44Li6VDLhaCfjt3ZM7wqofpsaH1gmv4iIi0ssToLjagU6aw2P8mDcRlDrsBj8\"}}]},\n {\"key\":\"gen:63\",\"event\":\"scan\",\"timestamp\":1730880592560,\"type\":\"hash\",\"ttl\":-1,\"value\":{\"field1\":\"s3K8ZZfbTMEGiKWyDsndAapszki5Ilu7wwrYGiVB8AuspiqmGCj0VQHZjBrEau9zitveeZ51maSWo4NELPvMFUxQlKJYLzjqA8rP\",\"field10\":\"YNM10FC4jqMphDLMzwfmNPiKTeXJ3bUPR5rrgVtxlgtsx0A3ND9cuIHs7EziEEGYUWdUvzbdElVaPuXqSHHK1emKcjaETMl2DGlK\",\"field7\":\"lpf6FBZNX00EQJLlPsg41pVqHb43550bCNiW3fRbCNEAb1PkNZOPtSWXi1kAVptksp3xjCdW84SlBG7QwSjE7CrsbJ8oGpnrde08\",\"field6\":\"bMsLUXN4ddexDb0qBUe3bm4wTHCfgQpWoOTDLd3vxSXkZrQPvtvBlhBA9Fe0lId36Nisfk63F0xAdq8yt5Jd4tAiErtQna2C6PZW\",\"field9\":\"IVTx52VBG0yy1gvQP1KecUOREt6Lan6vyLZqBq47wpglA9bOP5KNzwUCFsZSxXLw9cpXfjF2mJm90gHbxCJliARvorCOjXG6BE4v\",\"field8\":\"BrBYWyXbOlM9u7VtQ6uMoW7velM3xtXWYajA6hJmAuzG1NxbE2mOV0WNjteTh28HvA0nvfIY3XQMJzKJ5cWi9a4HWwsoOPLWhVcp\",\"field3\":\"PMxx8nOVH2PJMcgWFylrHhfTR7Uf1l8rShOurTVKrqbmPV7O153aeHbSp4fe2jn7IagtcmoyyxkoZZCwxBCcoXQHXUnu4jB78FdA\",\"field2\":\"pJscx7dwZFRUQqV5hWemxQEu8FGOIdyX2CwDdp76LJ5MqpMQv1zGBXK0qiUoRYNvX7VcNsermc55Vi8wIzXYEOB5VfB0ZvKCG9pF\",\"field5\":\"mmO6zMLOzuTPZyDyW4FoL2S49idrB5ubVDz4PJtcc64MKvdkDeOkTpuYZaeD5uIrkvCpV7hLAMjoTChg7u5hU457nVzDx32aXp8p\",\"field4\":\"bJjkh8EwEoHQx12ix3HukHZs2IVWj9HTPIRbEZ9ipCBEfI2GkT7aAwCGVHABFb88IFz9xjk3uOdqZ2k3dNbBK50cWunPIWnPt7sY\"}},\n {\"key\":\"gen:51\",\"event\":\"scan\",\"timestamp\":1730880592560,\"type\":\"list\",\"ttl\":-1,\"value\":[\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\",\"20\",\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\",\"50\",\"51\",\"52\",\"53\",\"54\",\"55\",\"56\",\"57\",\"58\",\"59\",\"60\",\"61\",\"62\",\"63\",\"64\",\"65\",\"66\",\"67\",\"68\",\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\",\"77\",\"78\",\"79\",\"80\",\"81\",\"82\",\"83\",\"84\",\"85\",\"86\",\"87\",\"88\",\"89\",\"90\",\"91\",\"92\",\"93\",\"94\",\"95\",\"96\",\"97\",\"98\",\"99\",\"100\"]},\n {\"key\":\"gen:28\",\"event\":\"scan\",\"timestamp\":1730880592560,\"type\":\"hash\",\"ttl\":-1,\"value\":{\"field1\":\"cJKiFxWAjRkdPXUDQOsyIchTE7KVQoRMJ3TX5kn3Fgk4JyIKvj3TgL0psOMFgHaeLGaqwD1QBuQFKa8FIAsrThC6WfYsZkPrnv0O\",\"field10\":\"u9LsaUNIu120ysTcvHqBlXWN5YMKTKP7Lu5tC3xJIVd1AnvKK0kuwVN2Mmf3NwoJdvJdTiRHLUi77HhrZaFcEnbVSnUF14XyDids\",\"field7\":\"itahiTT0NlKNHnGbtZpsn8Mbe9dJNFDaJhaCb8EipxLEHVqkrrWaWjRU9dnvyUcgTh3GBGoyh7sm6Hs3pBrCg1hRZsZjzfxY8LGN\",\"field6\":\"W0sU1FaGeGnsucj74c7VCJiHkjZwHcnvzCuzsNYS6ccNZVnk7yODHOwLBvHIW8KDL8xHkyUhQbX7IA6Dfb9yydjVYSPVuZQ02tYH\",\"field9\":\"IRngJeUF7E993XsBtiBXIFu3HjqgLXdcYKzyc7yTpFrJ0tPebHq8D4Kb8ZcXr7LfB0VCEm4FcRXdhjIyDXMHdjLCcgBgpfAm66Ue\",\"field8\":\"XcP19g7LVKBmCwWB3GekrIeBo23EOKMS6NLlUUm37qulRZDpPX8hLa8R6PDUuXzgIFL8nzNDcfX48yceGHNxnPV2Yny1XcW8FRz0\",\"field3\":\"Wnsr1Zlx92VkkXyQ9BawkSbTwwBzqAbY2IPfOUgvz1urOqit7F2zzlGm7vojqLpCwSwYlpGWxryxb4WV19S2kRRawM2bRatpDRF7\",\"field2\":\"cNz3l1RDSSA66Mdmcu62Pgt2wXvocgjL2cf1kPJkrL3lcGIjWsiOPRGg4zGvIKunH3OBGReRUaCpCCeBMVaBy6zqT94Bu6gGp6Fp\",\"field5\":\"bZIOHePBco3IB8VZ8C4PaolEVloAd9bJwS3EziH7kLufNYaCBISqgddPWk6jc7elsgEszDxtiPkei5AtRxKyg8aja2pIjcr1PB4P\",\"field4\":\"FqJwFRtU7VJTuwmn4QkGSXD6VJGC6XT77roDZWuEa7BsP40i1lXjaEua4tG443HkATKOGTi1t7bM1GLEpCVV3v8lAb3SJw8vgANg\"}},\n {\"key\":\"gen:35\",\"event\":\"scan\",\"timestamp\":1730880592597,\"type\":\"hash\",\"ttl\":-1,\"value\":{\"field1\":\"ZFwxExH97L6kzckR61e0Y3a2Qy7IZfV8ip4LAk554zHRKt4fZcJTnepAlMsfnPk5AiQ416yoSdzYESajmWIHk0pcujvVmu2LxpPS\",\"field10\":\"3CLApAL4lSy6wryItug6neu0t8kHFdcfbK1Yc1aY4zLTuzvRI2cW7nCT2Qjg3nRU4EIEitGXeoLgJrNJ71lKOlOe1o9VMo12Xltb\",\"field7\":\"sKLBbSSVHX8TuCUfgLL0rd98uWRpDLH5ZJYnECodkZ9GO60PUxVOzNvLrKwE5BYm85TZGx9uX7QU3MlmVrEOau0tGaIRhTE80XeX\",\"field6\":\"Vxo8CZ23P6Lj9colg1SjsQ82Qv6V9O9MCW1O3h6MdJJrzKY1Umwla96HOopSSInAuPdyDuuEUu5SGFIfvNRsN3aGKEaA89UtPjtm\",\"field9\":\"7zYt4sDl1tFIsJfG8dPLReXstXDHDAsm2b37RLrx6s3YnoKeGR1d56flkD6sVGOuL8oYXm1mkFc1IlxILejb0Iy8YlsT7eeQutTh\",\"field8\":\"t9gKnnS7mGTmUvchRnVfCcCCwpc2r3uyJ0leNj5NeD09XK4GBMxXMgWSekCI3WZYOTr2c2U1HHtCf8TOfi64mrCJ4zycjSS9UCPx\",\"field3\":\"EYuLGTVoBlK71yTLIdYFdLhj2XBY2H9eYon33cwo1KalSsvRyHs0TYWm1wKpIJ9FUvc18eteiY71qq9SRDh80W89rFxydaksq5Iz\",\"field2\":\"9GQJ4IOYDnhv9dGshxllEhQBvOL28Wirnbhm2LoGGS4FkqWh36gUVc1cX0fmCrwSfrw4STTDjpOmxMti9eykPwB37miYrd7fRunr\",\"field5\":\"5xrqwZpLmEc5zyPqLQ1hrZLhY9jK2XzJTESJqQhqXG93lUCjsBEd20SqbZxskbBwsWply3NZLeh1mLOKcaJ21HUVVWZ9vWFf5svj\",\"field4\":\"45pnZHQqbpZ4SY3V718oVrtJFTXjmjRnKX4CjBCXFuZh4Hmqo0oNLtgoAoJ8ttwCwZ4Efmelpqs3pPbn4fIuNdlDpNhyDBpcMHRU\"}},\n {\"key\":\"gen:57\",\"event\":\"scan\",\"timestamp\":1730880592597,\"type\":\"ReJSON-RL\",\"ttl\":-1,\"value\":\"{\\\"field1\\\":\\\"vClcTcXZCkuyTqQAJCxGK7OiBWhs0Et4u1tmjHTdIl0v5TmYS8cgXfoHUx1VdvZivTUkUg9v2xCk8CFxAjVlWU5C3WoJCodL1UtS\\\",\\\"field10\\\":\\\"7ciQ2TOSlEfhLBayBnXpRgtEe5UwBkvthSn0pCQ1LYcecCJVuFEYq1cUEMwKZNbqV6VEwrRfKxQOlD4XTy3SQ8lR8anbUROfThBH\\\",\\\"field7\\\":\\\"9MtXZd2YkBe5o9q1GmWThj2LNGtGj9umxOgMUs4tS34UWEpOhPLWZ3ZOSH136m3JL7noaRJChyp7dMtMSOoW3bMGzsXXKCZerf9P\\\",\\\"field6\\\":\\\"LA1HCjUlFMQrQCC7lEkPw4eja6YjyWjxqYbBVIqYXExaWNs1jUeZbOBtnahtvFL0dpnajCDdJEE2IZmjPmqqlf6CXKovgdgh1SoN\\\",\\\"field9\\\":\\\"g2hHxqoxvi60scQe76GoLkwfhOeQ7KSsTNvxi2kvMsQPo0hBL68FV2h0IzPlJOFXWUgaU1qXsuHl7NZNPMsB5M7SapymRwBx74h7\\\",\\\"field8\\\":\\\"zJrS0txFYMZouc2l2wpjTjenHWBBiR0jOHU5uz7QMRRXRQS3Bzl5CJO00H8sZdm7AwhRzcqszu5mZcxvRR2wvkB6hRNRCksSKjbA\\\",\\\"field3\\\":\\\"R7nxGjLEG7r0yf7XYrlmkbMfecnrdew89sP6dxJ8ZKv8j78SSd5AO77S6UQQyIEbY1rAfytvQhGlrIaHaKBx3qYsQ894YQ3Jv9qu\\\",\\\"field2\\\":\\\"ntCfwcIWSgsHEOJzoVSO49Oh0TT9Zv8OmRAKQnpa79eFyBc0l9GNfJWIIYFZBLbU8rufcWU6tCWQ7BKaTgI2AXhnhRyHSCatiRnG\\\",\\\"field5\\\":\\\"1KWlvsxye28SCiDMsmi0WE5hkyGkRPQGI77ij3sGs9FNWq3vpwT4OVdLu29v6tIdqRsoVmtc6W6Pmk0wVQVXeVUKNkktQt8kJsa3\\\",\\\"field4\\\":\\\"dlGw4xEdOi97ZLE6OQAnPP74mhjOXg6FQWzATLR5NMGwolbtBBQdv6lgBxUdyXnf0rZZalCQVFklBxRWtHtHQIceDTM055iHmqKF\\\"}\"},\n {\"key\":\"gen:98\",\"event\":\"scan\",\"timestamp\":1730880592597,\"type\":\"hash\",\"ttl\":-1,\"value\":{\"field1\":\"MrFn2GRk7r1EdQxy8mVxADpSrMHymA89LvGzGuvYrrEXhIrF5RP4sju0iQfEbvboCcNG2jIcjbygS7HKOg30pRT65VGXkzPulFEQ\",\"field10\":\"Ae8G8wrGawdftXBCzDtuPQHOc4MbTxmhhAl52tDHqdOIJHlmbnR4G6B0GmRGWr0MFuHIsrMXZzWIbJddzkHsycpRhRtNC5G3SfFf\",\"field7\":\"nIDSOAFRxxxMuKDZs8oJh0snfJfL48fCex2tI5u6b7UOVMFkot4h51pPCk1gUivhM6WAqiaarh8mwIR4sJVntBaEFh7aWnhqCxbZ\",\"field6\":\"uCNkEAAMm4nw1Jk9sPeQGMxaaCaDr9g6VXeJ0xzBYu0AONlHEYel15kkoOpqLUlrlB4bmP125dpKjvAGWdy4PrhFC65CkSfu3AKI\",\"field9\":\"pqrqsRxP1nfs1xA7nulpSUUKuZOjJazlMbWdt6yzEVpqbBBsfzJJOjtJuQr4Nrnpq4LNdzTMpwOyywHhGvvGXdOtE5OyUqoVx7mm\",\"field8\":\"TmRNgP661gb1P9IVWSjhqtPwqKQVw3BXumeq3GEppq2K6aQvfzKB8bPzbQYDU5vXLO1Xmc9DlsXUgvHQXkLYAN1zJAb1n2sxrzAO\",\"field3\":\"S7h7jRdanZcemDe0Wr2tSZPOSNox9KlcGbjEEFKMG8dwvxqOmsq5iVd8GuncSiLRSlBpGrQA2SpUPeM9mdYxWDKT1lskS5KP3Cgp\",\"field2\":\"99vlI9njd3wZSOZJa5acrfZ3Za1jqw9BpKiZWnxtNJLbXwuHJiYC8Up4daMvBATmevhDxuSd9y5HYc4hi5pd8yGWmho2WwztdZwR\",\"field5\":\"iMwtXViKeqzfw0NIMB0I1CTGiT7tcQ6YIom7R3qCjkxlx0y8pNmjoIyQ3bsc9Ozz6r4gW5nNPaiacR3pTrElk4AhDENAuUjef03q\",\"field4\":\"2rfwGtFxZFD6atwlcNFmabr3CeR40DvZCnZepotHLMqg6d8bpZjdeTEZi8pkWVxQxVae7g4kVawCkLLjkb4PqSFC17wIwjFS34Wp\"}},\n {\"key\":\"gen:79\",\"event\":\"scan\",\"timestamp\":1730880592597,\"type\":\"list\",\"ttl\":-1,\"value\":[\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\",\"20\",\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\",\"50\",\"51\",\"52\",\"53\",\"54\",\"55\",\"56\",\"57\",\"58\",\"59\",\"60\",\"61\",\"62\",\"63\",\"64\",\"65\",\"66\",\"67\",\"68\",\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\",\"77\",\"78\",\"79\",\"80\",\"81\",\"82\",\"83\",\"84\",\"85\",\"86\",\"87\",\"88\",\"89\",\"90\",\"91\",\"92\",\"93\",\"94\",\"95\",\"96\",\"97\",\"98\",\"99\",\"100\"]},\n {\"key\":\"gen:95\",\"event\":\"scan\",\"timestamp\":1730880592597,\"type\":\"stream\",\"ttl\":-1,\"value\":[{\"stream\":\"gen:95\",\"id\":\"1730880588478-0\",\"body\":{\"field1\":\"W8kzsDdRN1UDN7K3juSWlNcDutj1NcSE1JtD3EBNUH3CdCAD7MllY9BUqJXTstoS9V6e3RSogUZaBRpvJXgMFhtXpneQN7UzWAUd\",\"field10\":\"dD91Cac7Vs6E9S8WEciU1vY3ZkrdGEew19qDYuFRRheI3dXW07x80PSxaJ0PmUlE8ZgMtK3iQLiiWA5S84yTf3LzNF50aiqBxLIO\",\"field7\":\"ZdDwk8vMjkdL5b1GBhf7HtuxSvHwfD2Lbcm5ZB3m7smjP1VzVdG5wJILU4rThYV8PXgVUK3tMIq91S2nYAFh0Uc41qHhMU4YEuoy\",\"field6\":\"U7VyWUDCrjM65c3aUtitvDZaliwu1KmrRLLpX5Fzm0ZiosSRElmlVvXeZD5n3RyOammf1wbtCKBSdIP1HOS9mq0JkKI5ZgJUNrKU\",\"field9\":\"dukCaoZCEAEKtIxe32nhfoq2NtQHo0fx1IoCTVP3MvZBYjKZT6zw2NcpQpzHOC4c9i9fCkE9qS6BcVXagfG1UKUg09rkM3tai3Mf\",\"field8\":\"Ne2lQd9bZSgKOluRTviekUHSKcZGmyM32Us7gCwGO20jRIlijR81URVBHNmMPqPaCthxqWWAJyqZY1GXFoyJuJTiV9QsanDDcZcy\",\"field3\":\"Zesrq5kvUPcelJ3SWuUDa8i01rOZSpjOZ2DXPcQu9iHqN5KhaEV1IwuUb5KlSy7LIEO4kHTmLo3AvGQF0MYw2r1rwRZQJt4YA8LS\",\"field2\":\"alS1aAwVWn9vKWtMk2oFLNccliiGOqhkX1bX5aG9MqJ9extkg1RkKAAoOQPfMBKbHK5CGEqGh4SmgQazIbGC6YRDPQepJULu8ljw\",\"field5\":\"sZ9e0G02FtpgZXkiwxTDiqfMnF8AOSa34hBxrPMVm78YggPcCVE6Bk45bNr8YT9ozoj5xxRUC2QexKo0Q2Hd3imGvBzlxfxTfjOj\",\"field4\":\"WNThtxTCrLDzGgwLWVFcpDmSk0gXhaJUq3TDMPqBMEYolQO2V9ySgePwG3IN9CSzOui3GMLrLMoVB9EIw6c8QWa3qN6tZwFAc97q\"}},{\"stream\":\"gen:95\",\"id\":\"1730880588478-1\",\"body\":{\"field1\":\"wggWj8L8g2Pg6ssVCRRzb43C1Y7ubRi9x01k5h5VVm0Z1caDQweg2qGVHySS3qdfD0dwJQQCuMWVstOmNUkAe1CKBOvZ2GIWGQAr\",\"field10\":\"RFTOciavlP0bPef0SjiLGtA5OGbOqDyyZeER7J9quT3wMiMciJFj4OHONBi6l6yw94NpALNUa9E2nEHZWoEqGCWkmbp626il7Ty9\",\"field7\":\"AFcim2mmmd5cyA7Ea1kHgBSq3UQdMVxYZebJt2E03wN1M42Xfa1syboKDnD6Q0GRfhue2K4AW0CIWvQPSULqy0NnTkNF4sQGg6Pk\",\"field6\":\"sXOLcaJVgv8WJaxt9iIeDYKKHoVQUalb0Osyx6vIC6FdYMxkesUo8ebtvYWPJQoDTNM1YawMMmXblGYbTLJhsBiHw4fZ4JPrK9di\",\"field9\":\"HZ1lnCfq60mMa8ZM6PNXT4aeWF5QLHH2ux1T3WQSHvm9JvgAX9wG7UYlD3hlTcExtDL0sPn7KZWuFGhP3vUzCg9gXt9IGLnQn3tJ\",\"field8\":\"R2Y0ksglPcysXOH1smh6MSXkDkuVpTHWUKjGBgqIAIUnLd8ipbZlRGpB5hY2RIk0lgxTQOGkVIlKi4IwCgizXJwaqdk9xYegdG9L\",\"field3\":\"o5xtFCeMxJ4rdj07J9vESBNn6dLoFjCnzDS89XFs73BKOZEZc1XmNW16b255jXPEUtAbB2vQ40uHtIVza9W8kDUOB03WSy6AF367\",\"field2\":\"OQvOd2OJLV8y7rpYqlr3MCB7QOPWCL8JgFDIodAvYlpfJQzh8Z7e8eMexG4vXG5CsXCrIbvoeXaCsYHZ4fVTJFrv9DVmunHaIK9l\",\"field5\":\"SSm6qoSg9QWfIUSpmGxFWKsAwaHyLxI7Onyf90SLN1FL1C7OWcwjmFxn0LmAjyjl2n5jL1wQwlC4OCKyEnA1Ns2nwf0E9osAApjz\",\"field4\":\"fTp8pnufnA15fJJUnh588S1D4xiYzCVFft3DPZP3biSLLHuNLfKPRHYOiq68rBywjXW3OEYX6w0813Ayylkv7R4E1P8iVp76Mu5w\"}},{\"stream\":\"gen:95\",\"id\":\"1730880588478-2\",\"body\":{\"field1\":\"u2TEwdg9iIjae4IPaBGfemFOlFCvoPNax2nCgOPcojYGGLZwEzGrVnTEeV0vS1DvdXMgTk1jJddlGhjvLr10pRrmppjYLph0f1v8\",\"field10\":\"tzOI77Jy6DWVUbPIRwoBtt5KblB0FviRGVOiuD0dd38X8ssFfnCiHkjXBRRpg4XJIAbXWm2IS8JTNxyf8rjfM2a8E6uaBT84lKIq\",\"field7\":\"tSzMgwRh6YyPgZ5QBMEqZ1qsx0mN0CDIqmePbdEs50He1UielhiIzT0MOIUXktJqxgEx9XKoZAwFwpma5XtXDcTCJjhsTgXs3jjk\",\"field6\":\"mCDFfx5enqcbGqxZUe1s5evskdZQmMis31lK0lNACtiQA14qf3M6K9pRSye4lG5OjTiclx9dV52E4HCbQEDbpxAJUxlJRL9gSPEO\",\"field9\":\"8daEQZH5aXJVICzh6ikdReRk17s82mjuV3O2NaRe15AL1vPMiMEWvD7JC5JPc7n3zOz6Jt7cGHuoGCASkandLmJnqmQRStMNukQH\",\"field8\":\"uSsbIg0cPRgrGlKpG0c3cf7XOYgGvFGHAPmTMsC2whCUExTUoiW4JbtIn0rsjLbtZps0YspBWjPLXpSK3TiXKu6gKWOOx2HQg8Sn\",\"field3\":\"sPvSLfF6iD1QfaEVQBCJLVic3P6Bhyfup58zRXalDwcu26rFXGXDykedJ4dzkQNHU9FL3mZOMa0kY8BoSsV1lIJRlriY5uxBa7yv\",\"field2\":\"OB7lyb65smzSlpngWvDlNKGCDXIoPNXuSzA5QIRHaIDpujyIXaDalzPnJHW0XbdJCQ0D8BYyFw2CNQhWbX3SVCu3ddVhU2vzsa8b\",\"field5\":\"0U5N9qbwQ2fdGlcouMztUNWOdVcQAzhFy9BRUwR9RdsXcVm2PpoRSsWhIcI9KXLPZDiPNnna8C6SoKA8Yuvc56gafxUTWcvQbqiJ\",\"field4\":\"frTBtzJDxXLF9Lq4lPJf6SvcnDFjppaexQ2EbhHH3LGxQ4Oxee49z1MLjcoKv8DlYp0PlrlLKkfrv29GpkBdJifXxSJ421rLKfHu\"}},{\"stream\":\"gen:95\",\"id\":\"1730880588478-3\",\"body\":{\"field1\":\"jxpxXzGpkaxoFMQHKAkYfrOuUJBD4AUoCTfLkHx0KZpQ6U9p65ui90tcEmPPxgiwjTRdJAo4zq9jsT4bEd7ZeGFYqKtqztoBupX6\",\"field10\":\"hMmdUQZYO8dfdqRbMX9ce95FIgDeUMzW0ATnQzwIzGhrz35ezeO4YM2oIa3jDzfkAFIIcWH9Qdqu4Qm0MaFxgUqzKtLoujVUWX0l\",\"field7\":\"X2VsS7HPH3dPh33U0PP6SPDT8Y17vNNUaAcMTNtooCa1fglLuRIxuMuDfC5WqMCuQuFbhccJ5RkrbYHmqTngIIheLF1I5HvVt0Zr\",\"field6\":\"e4NTKA3Em10GVPTKi5SIhufPxJwhGBeZIMO5q6UEIyrT5yQZ0Tvc5LVnq1Nb6lLf8QtHIrRrzbeZNEqJcjRnvPAoFX8jXIbkvYCl\",\"field9\":\"Gif0sbLKNufrVQPNmM5PcwLszYJCCZlf8vPDAawJ3zAG7vC9dKK3GaTcwBsRkiFxPfReCcOPwtnX4WhCtduYwKozKqDb8eJdgaG3\",\"field8\":\"CAlvnJr5d581YpPMBhAt2CNe6YSi2VGTK5OgfGsvAZy5b7tlPsoXpbHZu1XfureebxD3Ee3ggrhBuU15sTs2wMUveGAXnW6abHsU\",\"field3\":\"gqwld3i5Jboj9JzEk31Uwl9huldPL6Yu9IJ905c7vpw170b5MIuATWiFCxSV91a5WJtR6RjuGgBSetlCNlT2xVb4GgSJymeUIHao\",\"field2\":\"XMwRFUaCLXHioFUOnR25fd2VtTToruHsaaQf94tsXdA5j8r5GZfiaTR6VJHR9fg7TB7IX7dVeaXIZCAlPb7OruY4DhaOldFQn9K1\",\"field5\":\"194ZRZTJHhM3IOgMnDlXBgnc0DjkPApGqUQ9qOGRLC5b2mAakXrmWDebtKVBerfs1bkcb1x0kK9c1zJwD8uu4fWzdOgCLJYrMdmS\",\"field4\":\"v556xNdSMwy9ZNpvJhIc6CuvFuhgAUMpMJVsg3zpDNohE8TaqMIKe8hMjMXhTpAayTSwsUEuBME5f9FbkDS9TLiafwuUO1KEn7v0\"}},{\"stream\":\"gen:95\",\"id\":\"1730880588478-4\",\"body\":{\"field1\":\"9lc4RGHhwFZ4wtRT75fBpDKnQscbJrVTd5EEx28jhVMkNk3jpiYyqAB470vTd4WqFnZPP4B6ekEAguuW23erqGsHehUiiA6PBdEM\",\"field10\":\"qNIMFEuvoINzXC4mK2Gv3F6ZFG5gNIBcXGgmGbLwbj1hz3JVmTfaK1jBJSV6sD0Q1bC1ga5pwEvp4LPyCJU0HOj3uMOIAP7845ek\",\"field7\":\"c5BNsVq7nYt6ZTA2r00jkdPd7Eq30Qeu4EGk3CLy4jX4Ct6zP5pSRI0O6IEC9ysN1sRYIK1kn2qfHLPMK1ytq3eoTPrc69zZb7lM\",\"field6\":\"SJGS0yOIZqGte98VFiqPJeiTTXKUVhoJ3XLUYFrkQpTx8WFGNbXDTDF3XBu38ylZASJutuLAS06DkfShDsRzJ61llZxG4askq6MB\",\"field9\":\"vHfUtb5ty978WRX4VrwTsaWMI3Vb5B7rADURO13yTkQrWGinCauYBwnNmqUFhuMcexH0nYDL6ckXBI8cXdX7SstT4oOvMF36MaFb\",\"field8\":\"UQgYXp3nrKK3BO8uXE0UJqYhJzeDkR7mmh6vzSq5bn1Ht9qHLP84yLFz0wiDbuTgGVpJNzCFEtAKS9h2D14SoBBUwG6JtUNkfXcX\",\"field3\":\"VdFijlnG17Vsud88i18W9Mt0u3eo2YM99zrzn66S3CHQfwVqJzeOJrMPEOjmYLx0alhw80FwlYzoYfkWNV7nJ9Glg6dECLsm5LnY\",\"field2\":\"sSDqXr63BiguQL52KyxeWUs3Ywv9acvELWMrT6607KNzIFiUGbK7QlPTsAQGQy936Zu2ke8VRiiY5DBVR272jWqeHmbfaIDdkTIB\",\"field5\":\"0rKPHfoCh2fL9IN5Wp8IRUCqpCUWflAsn6FCmKBfoq1o0WaLGLuGCvTLPcPbKkxTZPpfK2NJKpF0SJY7Ihk8i5ShMVmflj8L0PTW\",\"field4\":\"qBQZgYM0i5QKXaq8EtcE7LT9vAbBDFR7O2mgqqJgtT5MzciVQdTo5EKVk4hN1qxBELXxA2Gyr1nvJV2oOzTmr8Wn0FxEdVxsN9Bx\"}},{\"stream\":\"gen:95\",\"id\":\"1730880588478-5\",\"body\":{\"field1\":\"sDMxX632fx2oGuXY2WzTbJnac4nrAZ5T0dsNqNAfmyUbnf9rQUmqX49dE7kdO5PmAC7y6yvbSBYY1T0BAPq3jP9UiuAUWcQpnsN5\",\"field10\":\"dKlWSR8ijRTN1QuvZvyGU8gSBg8CKf54FALZ8L6HB26D5WcReWiRLs7sLc8KDoNyDoCCzWXMZvwlAl16idw32MiBH17HeaANkxyF\",\"field7\":\"RbY52D3JoJaGG6hZt46iUSLre6ly9L04ZozgQLBgATnJyqPT84Wv7jkqRVEgrk1ZJTSNPILBUVdnlWs8yx64YKiaE0v564W5G4pJ\",\"field6\":\"HC2DBoshRjEyFZ5S8d5DpzOvZ6AY2BBmrgUaSfDXXdiO7ayejeQHwErETFE4vCltiUfB6FxpvTIoLscfE42Jltp91XtboyiDoOtk\",\"field9\":\"78uT7ygB4PiT5Szi3DyjUM1lQb3WOpUQdHItUIR5KCpX2JLgAScZhd7oM9kbFIiywWp8e9LdmNxypOefqDIcLtQ3VzP5YNeX5FNi\",\"field8\":\"qdUc5tCtFDegbrQkJymydXEFhNyVs4FTzGGel1h7nGvLC1VTzE8baRh2q6xDCqSYEKZAJIT8ZFrd2yaIFlklNYaGFXLKWLXk4bOj\",\"field3\":\"VJ8gIK2PJo9QEA4JEp76EdKtygQfZAL7tCqRCUtVnryip2wHuXmCKf9FKeK9nH3cwMqSXUNgsmw1M97QYX7veGmziBbeCOFGUdl3\",\"field2\":\"cfACuviWLYZWPN7uUmzSE3EWObCxzwy45vB7dRBTDI9vT4KF2YUAteZtuYQHpKb5Y8l3YDiOMT4GDMYwUOTNrVdJIDkNuC7fsZFm\",\"field5\":\"RgHtijpqordFFjkihFlnd2NZZ8tjRBibYKW2vz2puqY9w04Y9JJ9JaPG5YfkVsOZhSWUvJLQwkF7NYFP8Xjva082Wrx7UYQuxEAj\",\"field4\":\"AP5FePVVVtv9bSHGVu3HZ3uqmMz2JHaIpmbDjlyMlvECrwA001C01v23T3vzbhm6jeWm2uKZ9bHpcwrFy8vOK7t2r79IqhJqNw5Q\"}},{\"stream\":\"gen:95\",\"id\":\"1730880588478-6\",\"body\":{\"field1\":\"eYGElNfPyXYIsGxHQg5ZGDIzXqyhavCDcDBpCBtEHcGuK72RhNLqR0KDu4ChGJ0ARkDH3aSRKcCIfvb0rnGlwAcfPhfKTTIvfimR\",\"field10\":\"SEk99zkdpGFLs2lophyq0PC2HvRnjbgmv6lWzZokKdBRXfvto3mUJoskUDP7gHQdf11NS7AT0y0caRSyjSP0jUKF9KrAIN8hgVK5\",\"field7\":\"D3IUAfrVNzEjnbHBiGoapnGGcfRlX38QhDwLaZ8Ju3YeRU5t9Hk2fvII5Z4rzfutzMU5NGhdHjI5YtviWh4hWY7jNIVdokcjFel4\",\"field6\":\"8Z63QI6dkACeJnwRPDljxBIOoRDYgzuFE5Waeo20OpzyoI9LoEv4YOkk5xlOAEMeKnEUZsKDURZfQeHODniAUXwfSIv11wXVoUJI\",\"field9\":\"WJif3WMdyryzLU7zSopOs8UDAa5P0MCg1A6xJvFb0qJEGxQBit8w01N5bfNwnWx6VFvglCxvJxYJVfMm8EyEGmB1lGbv4960jWxP\",\"field8\":\"tCmVNhxzcrVLL8j1bD1vQ2TQGm64WsReIFvUm8BCSrMusIMw0HyBlRSjl6bjrn86H1ccpDhPpJDhYYCfQPO2JqZRL0NwpHc0Am4p\",\"field3\":\"XeFfSkyW8Gl2GJskHvi5Xr3WDGeim2uKEVcRxydBSFTyQyBgmMGSCSLa34rJmgzJ9SfHIagJWpd3JOsuCZ3VG2F5zuOnbFxSsTrq\",\"field2\":\"Mu7OvcAQvaEIeJUYfU9w7SmwdVF55xFHZYnHeAqib8EzZ3QNIEIYcHwxV4fs6kXqojAk1FfLyv5WN1AjUPmzcgMkuVmGx05qcq0S\",\"field5\":\"CsoP75SYcBps2GJ43Lvk1UvqxHInnDpWva9joa1j84jTBzC1MkyBndChSXTzWVOA4LSf4tvsVGlinnt8TiBPvaFiGhTaz1jhKXHL\",\"field4\":\"src2AMINkiYHWMQCKwWWE3gcXBxPiUrIEbUjncak8iNHRuyc6dD8MWckcq7V6H8aGr9a0vJauzH19YaLNQjWn7pMtRlsGRSwQTz3\"}},{\"stream\":\"gen:95\",\"id\":\"1730880588478-7\",\"body\":{\"field1\":\"CstLZsx7ahWGZHjNlfCc9hftzIe7s0NcJTvIz5UuSShSwGAsfACmdUITaZdL6SIOgmUYMpQJqe2jDd2FPN36LxYEqn7FdfDa6jwZ\",\"field10\":\"cCh9mzj2EB1tqcZQiwUYTlEYu553mELS43bBPh2weqy0GScZE1pY0nI5GlI3WO4PG2STKyNIJMDWNen5UZAMRi2ezhsvdTBzsMp5\",\"field7\":\"3uUOlAHp2IOT88LvluHycfLCV76BZciqN2U2dF0sWL2e6Jtei3kkSbEUp7RI11IBYeUk5ZIOxY6Q20292amM2PH4Ph3GV0f7WNcZ\",\"field6\":\"3mkXJXLsBCVvFUsawy1LcYBfxEW1Uur4r7eTfiADquj0wrlg1nxkhENWlbrKLkIy6Ndt8ab4B1y7ZPmSJYLiECB2F5Kwg2TAHASV\",\"field9\":\"z3la9buivcCxsYr1MIFvxj84vT5fnAFbAPxrMrZ77LkPaZMUHzDSqXZwfgSLmBrwJYZKug6j7CgnkWogrWwOd6aCSu2ElXcaLbh8\",\"field8\":\"CoGLcu0iBDeexyYViN0sn4e067OGdLLS4wi0rTHufwRpfD4B1BAWTTngPECZX6EGsaf10iTSP6r0XHxRjvFtLrNzZlsBLAEIvXQM\",\"field3\":\"cwpD5J3CzMgUGANjUe6HZaaq1KnAWYnQEA6uoiumQuQpVrHS80MNqN6symCt9vfzQtBwNnuJhMGjDF2RoA36BeXIkSESDFS50BSd\",\"field2\":\"J8hAujP5A4V78saZthobbFIBAtovuyNJNfuEIZeoiSKeUzcqGXx5cDo7NB46spGGwFoaEBtTc3CLpMn7ME8Mws3MnYfqcQfLw5TH\",\"field5\":\"s4ns21nZXamqNG6OoeW4L0wHQJZkzk950RxrkPmpdhrBkdQ9iS4C8klS050EBqN8JIhUwnR8Zkb8RnGOIgGeRdysyB1W1hOXxqc2\",\"field4\":\"pJnh2mkibVtoIvEMdVmG9VW2JBvBmsqju8P2aslaH0P93l9DJzd2bXTKuBWPtvILRRcsLv1xvv2Ekddr8sWzo5QTGQAtMkMdDEY3\"}},{\"stream\":\"gen:95\",\"id\":\"1730880588478-8\",\"body\":{\"field1\":\"6DufvGoXVwf1FmgfOaNhzlIG1uibPiX6AxafCejtMmSA9B0pLSzJHtOkHJ3ahmCxD8rGfoRzlkag4GvPZV3U6RxvsmtXNrXrBO2p\",\"field10\":\"oxjPhxbmeBxLutEiZyGKVV6xSeQJ9DIpumgOa0iyWlG701e4PZXYcATzEJoW2X6F2LVmC5g9f4jOLamstAvgnjhc6Uzdk2woscNp\",\"field7\":\"ik4lc605KthGkcTIwMNLiG2Dhxqu7wLNeyYMCh46xlMI6xRenrVSWdKOO5FUd1byjvcDWyFokezXmhhi4d8awfULZoN79wIDzB0w\",\"field6\":\"KrxEWOt3ANVBb9YB0ncS4GLSGeEv4SybpeHdHhCuMGIbVPws6csn7rUtBrMhK2Slsri2lDCqr4Jk7pqRE8be3OtJ7rtcVM0YvcDi\",\"field9\":\"Agq3l3mmIYSvHHeLHNnSfZhf75DtCnZX14VdTu2c8XOPdiD3XZft6zh1X4dt04Jur2gEHyUBpQxcDhAoVignk9VQjni6VmbUNATH\",\"field8\":\"fMjTR1XsDveOZ8CanbiZ58G6TonV4IdaxWQL2TMkiJiMq3up1wADyI8jFRxytUzPFAJ91JpIZLx1AyLnIDgeGcQj5QHx17QCQoUh\",\"field3\":\"7nzgdM9qjwRA6kwTvwODGPsh897zhuLTx2dAYHvJeBHDpX9nS5xAGessEgGNKdTOQX9U5dOcuEfqBD29B3N7EcSfY4X6MUabomAl\",\"field2\":\"t7mm5PjxO8lKuZ45iEkPKVTMQnNxhz5gbW7zsWjVcHZCcsbcPkYcEJ3fJPgiITi2REGw5vmtsrBqfU6bU8TFiMNAOKuEdNwvYHqm\",\"field5\":\"Wpr8Bg86Hx2aPrHTRlq6eMo2qeAVaacpJYsZj4ohf86VsjVlrotmkLEbTivNR21jDIwFpcQtWkj5cxpPUhwo5YaLyweiu6QnrnFW\",\"field4\":\"fJSdyamyjV7DJDK9xyu2UV1rm0gqd3YNiI1dIeZQQVWmC44y1F3AcrEIMl6LHxbNelRG9QwRXaItdSfriXAHZmhe5iBMQN4qSNzE\"}},{\"stream\":\"gen:95\",\"id\":\"1730880588478-9\",\"body\":{\"field1\":\"RfSb95oJnk8brReBUyUROFmG6jQ4kCwJV471oCELXfD8lwEWoEUWo2gGXz601ih0OTipK2eV5hJGZW3ycSOeYv614hgrqCRuOn93\",\"field10\":\"guqqYNRlgAyZJMjuDR6O99a8ZYFjjEudx17V4qpgDpRDI2KBRTyAO1oRXk4nMnW55kic0KPhZ9H69hwPXTPqaPL5O2RYFgepDm1Q\",\"field7\":\"EhZPUTErdv5WGFGc4E8GQGlqquqkLz9nGFpr05NItpOsdsbwgKrDAWlIDQc9W3UdsoiIATmtN6Ua0A5ZkXQ2UzKald49bgiLnAcb\",\"field6\":\"Bk3eaOZTGN0tC9IC4EdNgGkNkY0wC3wdPA4yM4g9VJaxK2G9n4fZtRg7P0oSXXPT9ZzBj7buH0YrRczXflA2NHcWj3ZWLpkVaBJV\",\"field9\":\"BhbPVfvZ5bbeLUz08YEfQjJenmwTWV5l1vC2HS4fwozwFD7RapzhSwQpsqMUkQzUXlNnOS1Rl099Fmyg7Feh2qfEZN3x8sLBJ1rq\",\"field8\":\"bzT8Y6wSSjtomNVswftqaCOwBls6nTa65fIrQfx1aM4ut5nKRjtzeIZ6cEHa0MhYZEuBL3qo7OldPE4ekhSn4JqiQCUfZ37pxLI8\",\"field3\":\"bQ5SHehDEvoEU3Gh5n5P5JbPUBPU9DjkAZm2fICZjzJ4iJBZYA2FsfZRUITBFY6HVFt4TqtILsXMjwJPu3VQrNbw0cdtEwchkWwk\",\"field2\":\"HoFA4AcsiyopriEWwQKkAJ75hUVg7NfUwdxb7oWtouHaE8zLDBGVcJbXlBVIuKQl8V7Lm5zWEtCCRndw9Iuvgeomk6OnK0r707Ax\",\"field5\":\"gegugvKvLBRDOdLSuzOM8428Ma5Og5didwNK6rjPKq6lVFPwgivqsD8sDB9sQ7oVyesZYb69PVP8nPwSMRCVviPeTvecVGs3Z6h0\",\"field4\":\"Zs4DUu2RkdAPoCmMCFVXOqQGrT1RdoWAyvF2mnxucabH3u9iSUUg5KA5tIL0shwpqhcyy7kXYMu3oDx7kSRPnEawM9srkEObJ1W1\"}}]},\n {\"key\":\"gen:1\",\"event\":\"scan\",\"timestamp\":1730880592597,\"type\":\"ReJSON-RL\",\"ttl\":-1,\"value\":\"{\\\"field1\\\":\\\"4I0FZxBy3yPY5O9aELYfsz6EKmfK5dcrE00XStBb4z49m6kVqFSnhIBMoK0y9A7fsTPBvz05aZqOgS4fowPkmcibByhKtyYJjyI2\\\",\\\"field10\\\":\\\"cA8DELiu7wvQRrb1UwzOh2FRECO7Cy10XaAMv08GfdZKd7p17ubhFYgwOe5BN466qeV3uJoqpSEERYEKcCXS6eVQOdMhFqEftJep\\\",\\\"field7\\\":\\\"M0xboHOLVmegq5HJtWCC3MU1LR26U4elhTGuGx0jmSWUEC1aDrdRcZgtrtmibuQ1lcqNzLPWgZG7gesh7OQjLz3CMW4zXCw94NV6\\\",\\\"field6\\\":\\\"OcUhc8T5SzCVrJFhfG8iqz6lNIN9bPMx1qfedCgjmXjm8c5WToaQR885fplVR8nqeExxUyREVM4oGgN0CrM4l6Wls6IiJvrRBIH9\\\",\\\"field9\\\":\\\"zjLAfFwP1im5PuDTEfQLQlvROUaB6R4gZPYcVphuGtuGKPfNG7BaDO7FIEfu0OVC1q17CFFaucKS0JSLvZjEnA0ygH0vYvBFeWlM\\\",\\\"field8\\\":\\\"cS7Wnk6LOZLtZzUiN27y5N3Yjtr1m8Q4cDlRfQYp9ADfdmn0tweU92jxQOhFGco8xUkX138d3ODXOArc0AJHGHP9Q9y4iu8TJ0tO\\\",\\\"field3\\\":\\\"8bdwSpKeYIvSqLayEttCDsimEmO3CsML87bF1LPXRC0za0tkUV7vXH2sTEhDHMXmkEpBSG94JcozYPwHC7DUvu6IG9q1mGNNWTI1\\\",\\\"field2\\\":\\\"SuIfFbvuBQ67t9co7fX14YoTNiJzyxHbvJo0OpfJjC4voTAqOJq5eq22UAAWH9klpeYFepNEwb7xAeA6SWP6QnRdCgAXTbTXhwm1\\\",\\\"field5\\\":\\\"p08N28iRCXbusTrqMlO4djBm9gqj7FfsOrhnHM9bGmvVkCLNtGxinsnn4SlQzYoHlKcp81yx130BT2Y14rxLyVCb4Er8p6dhVbiH\\\",\\\"field4\\\":\\\"t2sTf4beYS7IxnjxdCdgoFb33rg564Sjx2lWPw0i7r9nwq2YZHWKopwyLwD8K2x1eNlGKigVSUBgDPTvkGl5Gh5bXSDweTQdSziu\\\"}\"},\n {\"key\":\"gen:32\",\"event\":\"scan\",\"timestamp\":1730880592597,\"type\":\"stream\",\"ttl\":-1,\"value\":[{\"stream\":\"gen:32\",\"id\":\"1730880588445-0\",\"body\":{\"field1\":\"kxdoHU2dy4sBtvjraht9kHcGIeT48HYZGke8VrLrRtnDUXy3mt2CRXTgKJrXV4uzG3qfsEn7cvPXakHNv1hDbSMfyMgSGDnYF8NZ\",\"field10\":\"E5fhhXvjLvwudHWb50UzOxhg8RTB8xp7K0kfYs2cF5tbiYDrVDPW3Ml556ZNuvtyaDm5RbbO7TN0UiA3z1rYDBMxpMBxzmSKPLQj\",\"field7\":\"JCa648C5p0QeOgZH1kNyjIIjDuUnRgjX3IaaaCkz21RY853BaUo6vMamnkX0Q1lKy7GLZH2oh0cx7lE3hqFce3qTyb8Ii9zxEGCx\",\"field6\":\"kwkzgJy2zkOmXbTUcst14NbaWnA25RFsa5YJV5STJjPEJXr5bLBpVM3kmqZhwHt0S1SXNhUX3ULMrl3lPbq9bMAu0KlhBKDuXVSF\",\"field9\":\"0Yoi1D37YbCvPi895ozsJYcQa1OtUQ87ZFzdrBQUVFvQEQ2nJnorVuGOcgkyWb7DgbjeBQdhpfdGfhnXkEOV06KHQnUxdEV5uquy\",\"field8\":\"3lS8WJJia4PZFl1OoqrGaBEWdYLQXoQXfX70p67V0iF0qn36znahGPuNbG4bG2QsAGQDZRGln9xOplazWKObIIRjU7LL8hf7iqst\",\"field3\":\"GZVmBCUBuNeX3lFSuKnpPft7qeWKCZh7FESj33YuKjVw4r3Ts5GhjreOYAmzBizwUbEGcA5DPHKDazsvyFxHZH6QU7CBDyUFPMJJ\",\"field2\":\"wIPkLitdcQgOlPNGpx4B3ObpWfZP6IfhXpWAkPb037g7rFiaDlSIC9Y29bohUosPk3f3qyaRYt4GbAIKvYbaKT5dNADlRcnktJ1O\",\"field5\":\"n1nXQnAo4dwzMi3RTpUTzXRo65uQ687Y1wer4JpCYXR5KSaLPOtDW2mDxtuztYF8nJNv1jX0iq8pBTFkzvycy3b7SYoEKg5qwgX1\",\"field4\":\"KciBxh695r98r23wekkk0YVdjUprJwMmp182eP194PjRUUXQwY4cWTy9F6yAADhf6FuqSSzVg4ucH5IC1LPyj1A8R6okJj4nk7rJ\"}},{\"stream\":\"gen:32\",\"id\":\"1730880588445-1\",\"body\":{\"field1\":\"svXMocc6sqefXMj6DoecUW9ehg7bWhnRM65lAAxCNAUsLDvVM1aQ5vOIn0kIpYapXJyMmckPx3Y4hgwm37VLefyN71vu4gfiIlWp\",\"field10\":\"yD5W4paQRc4fDrLkx4BbFLl7LWaEPogMBH4VGZVh3zNRMAHx5pDJKVAFAZGDQSpb7YFnL2GiEnXX2mMtc8UR6LQc2yBtS3lx11cG\",\"field7\":\"ITt5YFU0QiUzI23qzfN2ThMpQOMDLpHpfZmjp6oN4zsYDOchi42ahfuUq6oUR1UN5imV6jPTtNI9nGFsgVEfjMyo3YVK1St8CqRb\",\"field6\":\"4hFI5UJZcFRZSZEWQmg2qa3jc6mmFxcrqPWCTdLmGFg92JljSjgIVWRrU4vxG6fE11RIjhwwmzB3NfaBElw7RfXRIishVoeKlAnL\",\"field9\":\"Um0i4IQho6HeVw7CpZmya9WBUse2xw6t2AwU5xMuzGpNuTrUtWolClVpWw16BaO1dOPu0eCGMnkJpnIHBwhrtRtd1Yu1PVEjmyA2\",\"field8\":\"zJAuNG6Jb3Oe8ka3hpSDbmeldLaYZdeGp1eFPBpGUj97todthrIkfoaar0yky15IRAdGO5myNrgVP4Y5qaDOVFVeoIK3Qos5Vsam\",\"field3\":\"aU5AFH1MHmrZVU9eC9KtmHhQleuuPd1ZLWuQ7IbRQMHil9JLoosvkHyRE6QVQhNWDR4x6AHehlRfbgynkm94FxryBRITuqO4pymB\",\"field2\":\"aOG8ywTlvytrfN9nm96zI4XS52VE3opbgGNb2cVHkibFr9Xy9knQmGPviJ95DEhQwW5w1XTnWP1mLNpKXwyzgtEuD80yyDBWID7u\",\"field5\":\"m1oRACOMC5qeHUtu00a99hJPiLpsnQ0usvrnFcOa2xnPSoXjxGBKEtUXeKiw4TCoS5PAYOlyAT28uUAqvf827rWzHuhtzSORkaNd\",\"field4\":\"DaYCz7ykjAXFhN3W6EESoD4x6OSXsUlzwvDS8NfYCAfwVbYcaX15ZU9CfuD4qPrVDozScqMpjmqKK6I9GRonen33alRI2zmoTLYe\"}},{\"stream\":\"gen:32\",\"id\":\"1730880588445-2\",\"body\":{\"field1\":\"doUeJPG65VVMx0ZObGkjjlEA0wxPqsHzKxtkBrFo4vI4UYLXr4xcRB9LMfrBcTH0zymZ0ySi4JYM4PPOe4OTNhZXrKaiPNtzz2zp\",\"field10\":\"q25WFbCoEuwX9nATlSY8tekzlPqRA3tMY3A52M8QXZeBISI90SzU4wWGirNJw0V9fXMW1iTefYQp4PQbsHfzX3jkzUR7xY1II45J\",\"field7\":\"WdLmcssBRtzfwas4ScRCTSCq2XxExMLc9clVGKHEsbxYhwO4R4IOgOOaNZwOpCGZqIync5Amo7j5MLcWFk5dgl2YWiqTqNTYkxJQ\",\"field6\":\"9p8KdarBLoUPbWLkor4riLrQbqfXiHwhSxyBB5wYbtqViMAYiL2AC3UyE1WbEs8soCK11bHwqRledP7NWVBLlfdigxem7WQoRexP\",\"field9\":\"gjNoYFAiwxdQRQQC6SLxOuL4WwOPrSYmxSHBsBjYpyc3jbKRMpoEmxRItrnoZOofnO85SjcCmICxFH2XSYwM5vgcUK3kVmgKlba5\",\"field8\":\"7hHdqdVAcnl3tZDWx3izVgSf7Q4DEuJ5HETkG1KFHCQ0NJ5OY9GyGoJhtt8AxmrSWejo7VOFxMXvsvGbtolb5CtRZreOmHDrKqip\",\"field3\":\"89ULWzmxHKD0WLZbSIBgiOU7hoTKHwvxZvvJOEn7kf3FVoEAF9qlgaC2hHwAOzqNg9ZK5SRZu2oWYFrvQmSOvZtpTCbZK03FZunx\",\"field2\":\"7bEWMWmRp3bVF4P7KNsskbRX06J2OiGHDx9JyFw7sy2WKU09IWBGYixZcneHOqto8T95PCxwehNBeIFSihq8MllccubML7JYwKVz\",\"field5\":\"Zl1N0P80L3ntWnocF9OdZOwL75spvQoQk2XjCghNp9jwGHZGkmUun5P6EI23Fo67so1AgrhdWNRmwbV7I8sBem976903CvTMZYmY\",\"field4\":\"LrFDLddHwLOzFXePQkIbPgzLt3KwcdcQnoG2Q6N57beEqAkS18KK7XDTJOB1bbvEDCz47ZVJk4tbhLQ45hEERgYZskD14ej6L31g\"}},{\"stream\":\"gen:32\",\"id\":\"1730880588445-3\",\"body\":{\"field1\":\"aje7rp29kLz9vHhLOSwvNNQ8yhy7pXnootOLKhOf8GRM5rZATw4abEXZ00AczTuTVXdn4x1ZST03w27XyWCDxsuxSzNeCjuTwp2L\",\"field10\":\"XQWb66O1yeL3y0i2oXwjCVXvMjmesU5k1Z5bsPvfeASD76K8oJIV8CXtudVdw3a9IAJ0Mch0ujnJX1HW9PFskfSnV6jYwAwliyWx\",\"field7\":\"HDK7AjH7PnDNhzN9e07e6JT4HWaHxtmYQxvTtEBSKdiPNY0BF9IATcyRceOqe2w9WyE360x14rdkJQeIh49O14qb9ub5EvXKVnx9\",\"field6\":\"bGu0QKCu42Tyafjqc39gE3UomDrDPM4MLBDahsayHAlHwOzIV25BGX2ZQlcjH4KzBcTgM0FzEmPglE5LFLaHFJvDYGxCiKdZ8IBJ\",\"field9\":\"9E1PTTgjbnUeOFp1vCckE4VykN6udNHHuuhoDMKeW17JRGBvuzYU4OS4120AlfuTLPMgLAF3D6EGh4Qtdb00HUA3iLjnZ9WB0A8u\",\"field8\":\"lekais2F8rH9PLv6ec7pR0WrvYKw52BHHEy28HbFtW83eHOYfsBsO0FW2rwUJoluHZlOINOnj3UBTWIzk9nuAmdZcoJjhmhuP0pz\",\"field3\":\"32zjxq0V4ZQqMSWnG9tg5rBlHfltR4IBTwn9YC4HN13W5zYBFHNOIEGKUJS70MogRwrGWLpUrcLV8Dck2vROQHXK3StCcv3t18wr\",\"field2\":\"5G4IRCxxgEwOUYNOtGkbBrJ2W2uIpbjtP02p4hiVUqrrXqI86QEUJDyapk9XimcMusiC2A1uiEBFVzIkLBlnjXMDughui6949mbK\",\"field5\":\"nRdB0lmgVMyC0ebSHMWSs3C8su5PR9IuFegytMe2fdSNzSd24QAQgzQvJODH7CA95rXkyMJ1io2KToJOsl8wLF8WkftzR0nxUQ2h\",\"field4\":\"w4Ai58ji28isZBSy5cbe5BTIUlW2Bz1fbMWDMLe7gAcI75AOE5Id2VrJPpskDRvhptyiEsgg3p8AUcQY5I9iTkNigrfgKajFsivh\"}},{\"stream\":\"gen:32\",\"id\":\"1730880588445-4\",\"body\":{\"field1\":\"0Dol1nWSgDzPGwnaeoGNqUdVL8qPzEBb5ZuNxAi46yfTTBbzQbwwFzYh209Scb6eKdd8wDOeT5qj5YWJzkDOMDd78RSFnPO5yGkT\",\"field10\":\"HCKigPwLXWoi8NYIAjsOeKo0g9Ouknm5XrBd6nXMplMCK5QjabSJjye6jPljahbqd2vEUYTNsAIh6a2Pah3Y9J6knSoNf4lKcvgI\",\"field7\":\"ujGAk9vPDX0NWvk9uax4ZrjO3MFXRIXim49cWCkzRaOrbzr6GlMZemlOwWscuvMPnJPgcstOL51alzeyYp1sjRapE0sPzLPGZmgO\",\"field6\":\"CHsG2W4JwKAsP1WvuVE62kOx1ItZZwK1oXZKHtF3z9ReHY6slOwVRF4n9gtC9pGzLWgv9FgTYvgrw0GKPM4kkUPttuAhskp3s3m8\",\"field9\":\"lQdZVkVjClPAmJOAy20405MFxa61S6Fyq4C46nkSXHrwcToNpITf5KCZikoKAmQE6W9sodXzpkPgHmwodY5fiUgk2mbPWNW6KaVA\",\"field8\":\"jKmd4JmlYcxh2knuAw8nOOk9qcOXZ7nObIvt8WCYQyhVR0tiuUjhrwhFWgzPMxDDJLyhep0g7nPO1uRdNR7XxBs0OUSeSO748gRz\",\"field3\":\"FrJBCEY8B0sfM9XhV5Dzhte62Axdc2ww3UQoqR6jcCKQEHU0uzfC8bjWnpRRyGOUM9gwyJ3o99DQ6tVppEYc08V5LM2fAPaXjJWi\",\"field2\":\"u9YjAVWR1uxHV2TeZFumlNNWNFhN3eWUrkyVoo7CFNy6aVHxz4qVHd7WlczKv3v0CGXv2Z3gtPqJ5cG7QyxYqgTQHxJYUS9xZCB0\",\"field5\":\"8ZZNWKrzKQ2G6ArSVaZYb3zGVVQ3HnwkXSJiRLneuywZwkJSecn0y7JF0aUxaLMm4SrbXwP1iiye4In3TpjfH7mPfD8Pyy608hlb\",\"field4\":\"IP1PmdHC0CdTXXjzNWR0b6d591ErNdXiR0Yjg678Wc6D6MRKnMm7DQXykDWmcaHwUh6AYE19NOVLdnoQg4S4HMQy1H1gOzg6KPSR\"}},{\"stream\":\"gen:32\",\"id\":\"1730880588445-5\",\"body\":{\"field1\":\"f2axXVJXqSDqoQkOuUlJ5x2rAcdKWudhaoBzgSfsLz9X1KBvqXIahlFmF06Y87SLtccJB3L9lrsH3G8Lp0Uj2RFq6LPlacG8aZov\",\"field10\":\"xScvBFgGf6uI8VBy6qKtIaNtxyyg7Gy0Iwj3uwukxKXvudMG0KxKDDN40GkkKgUgtpaGXAyliUTUaPDVQ30u5s3MlGBoPDBC0JXS\",\"field7\":\"1mBjtVCyEzncgtiW7lWlEdxh0fFJ0hHNGKnZbrhw3oGeM4MXSihXo0TmY4l2Dv8twMfVkIhjCotieVdvA4kDCf05ePBcHuLWuGDR\",\"field6\":\"aEoBkp2NPfkRcndRL6Nv5pLIqRxXKcZGDxtn4JpOU1TJEdMNKWg33gwkSscRwcoQ4Fph4llkpkiGDk8BsFPvpZYgMsWWA1685IjL\",\"field9\":\"DTHjPGHAooLYQgRo1EXxjjHyiReSQZKRxImLPNmYxtHsZK6tpsd4POMeZGd5TAvJB2WlnJ0qzMB5TEST2BSxvcoirgM69KexVMue\",\"field8\":\"wqk9nQ39UgaF0i64RY2LTd7j7jwnDa3HHjQSCLaiGAqkuCEvQUE1ppZytNaYsJMo73uJiPjtmrLhXD9LkomPvcmWmH1EDS8jHF3u\",\"field3\":\"YR3EqZgjsecBsPCYF8UCPY8M3Ze9SKvSujfsm4QZsWcNLqHHJck1bbdBAKUgGtnbyoCd5DQ0qOcwXTLkPOrWbZkCEAEdfY1N57PU\",\"field2\":\"5w7N71Vsce64tXnT2sFLiYPWRgdj6esEDhNLvhgX9KtNLTBMtXrM3Z4oU4soVju9o3C1cQ4lbzttiJCNJP89bFSzzBHvZMxJocjS\",\"field5\":\"db1mEHaWiGyym4P9qH11MN8zwiT2sp3Q5r0VbCSQHIO6utEQ38t8Zcb8Ns8jdWZYoYt4oG79I0oToG36FgtH0nexlX7n91JYw7uq\",\"field4\":\"ejhg6U6G8v6eeJ9lW6uTrQBRuRZ6tbsu8Y3ZREJJFURn0CBKecLOh35mYkOVtDugcZ5UWNxFhasv9M3PP5aUMB6UEeK5DqzOTNiu\"}},{\"stream\":\"gen:32\",\"id\":\"1730880588445-6\",\"body\":{\"field1\":\"a8TYw7RbkoU4V6ATkprcMpCeMRfC6O5gpFNpviulwSo9o3TolbcvJYW6Hjw6tSyZ3C41seDV9rRMAOFYyXugWwI3JBLCkWMkVNRn\",\"field10\":\"5GT9oaBxWbJ9FxHjX1lVpyY3M2aLrkt1WS6lBTMEjMgsjPUJqRJg1MfUUiqhCLMEJTBxJvWdGnyem5tzcQ3WfWD3lJvWjaNRu6WO\",\"field7\":\"8qiIR8X5g3eak6ryAmIGtlHrLrwPjXroIiEnrtwKh4mDZu0EaBwKKGN7xr0Il9tMGVoFn0Xw1kr7mT4u6ZSI1wUN2wt16vxUpEUd\",\"field6\":\"pVWW0HgVZ9XYHf0lzRnCPN4wLVlwLXVrGhIVRdkfua6pT3BzJWzLm0GosRzQyENqU2ZCJkSwLMdPTZfQ70ZCeU4evSebmiJyeFEC\",\"field9\":\"W0ozfCcbn8AZ0lE3suOqdIHwfBWXLj0VYrUh9yl5s2EdK8hfLONIGvtaW6OJB4vn0aw3ZrsmW1SWYFVsCbI78R1008xf2LijAcSN\",\"field8\":\"vDtxQGvzHPJOaemO4LnKehjdXD706ocVlJUNd814zAtsTxxtldgVji6O3Pm0xTWJwB1P30a8uWxwkJBfkpOXx3jXFPOtlA8ogKRt\",\"field3\":\"OPuRKppRsMpu48gjFCmlMlu5VVyTHG00TbpcnBWlrPvKMMGX6PWvDQENu1KfZR4nKaUzruR0MGogrKjsDMR3kECzyQN72C3yz2Cy\",\"field2\":\"TgkYenlIZr1TUCBq5TOUXy990otl1fb1RPTCs9v0qBf4XNgC9Tcxb3FGgzFWdNuK27Owc7PPRdI2qAGgmcNRSlRinESIadPTdVNu\",\"field5\":\"s3Re90EivMUKzDuUmY4DK9wLrbc7W8NsdolQ3EvsaVzxiDygz1XU7y7ujnq5WPrUX4NHbYdo1eamMKExYAxBAuVHXwPBNwqOKZVB\",\"field4\":\"F4mW1HutGdq5pYB5I3PWqjT6TnXSMloElNnmH0ae0MvZ4StzxaiT01i8eurId9xWjR5audBrT36VTbEWhvbJSdlXBKtJQOmXfpRs\"}},{\"stream\":\"gen:32\",\"id\":\"1730880588445-7\",\"body\":{\"field1\":\"1BpbEhH8KTsqBAD11wocBVhw3VBBYKizYKBqz9iRKNsr0QXMOXChQSLHzBQ3vfSXrfYG8HgA0TAdGj9nzres7WzV5WZhq9nkNo1Y\",\"field10\":\"f4t9LP025MZe81UmwfrfZFwpxrOmgEDrhLnuiWEchDJLgGdH0DkdPYD3LfmPLk9KzBFIxFotIFTj0KCoezP2DzalWl4DJzHInxNT\",\"field7\":\"f6zQoDnL4jews87l4QKuVawC43En9Kp0iFDE6eWGA5uPYf0F9k3QG8ZTvrrB4eIXQ4v7OR211hM2FZs8qHfJWeRxCIFTU15cjxZY\",\"field6\":\"G35DqeZbWoNmE4qz9TWcFG5xY0nCXilbkI4AajvH8hAIdzBzzvvyDPg9YIGePNXsPbEjtPkZLHEoUD1WwA828HGQUl8xWyAK7sj3\",\"field9\":\"1JPFRLazar5unSFQlat3rC2mz2Ym7RtoyZY5yHXVHouUuzNWRpNY3tVMUEyI6vtRUFFo6XxZeppAKQTlmAVyaynZn76wbwq4RsxE\",\"field8\":\"p7odRhcIPjZCq9vyi3h3HXx5c83T8rJ4ZFWz70NLxVCGxXQ5mbkgOBTe0yjYy464cJS9fiOPIdhm1Kqw8brI4wZRqrtR17Klo0AG\",\"field3\":\"iKpffzcbyvsoYxxEDPmneYTiJZjrqSMBVMyqfarLxwzABfytGXXLxjX6aoAn0kVhb7dFZGbRXF33npHlaqxLZjxGvauQsrjguR8u\",\"field2\":\"Ml067aXlR9XIDD6Lqkpw72OaZnOuW9uFKB46IeoRn6ZoSDVmW2icG79tz5K39UPfZdRr5vityRghvcZ5xrAifD8zS620wMPvqnlf\",\"field5\":\"dagivMwr4wt3h2fK3YM9OsZfMNWzg9bKnzK0zphZ8mRJeKF6WzHVVtrjfWH25YtD0y0GWmUshNNxvNRXXWl0FxrV7ziIpigvg5D0\",\"field4\":\"hzhx7PWGwlNZY75oJDRbgXSOBPHJpadWmD1myBX0i1LzQBQ7IAfh8Q4iVZ2UOrNd5XM2rN8hIrlNzFH1O5ZCsswZvIRiUF5kBBJ2\"}},{\"stream\":\"gen:32\",\"id\":\"1730880588445-8\",\"body\":{\"field1\":\"V0AbqXsJyFjkg9A6eglqqAutEVBTtA8JunEKEWE3gu82CBOCyq8xXnCR61uJA9tIVTh25dc37BegB94raM1BmMBm64mZCl78dc4e\",\"field10\":\"fblUUDw3yOHmCFrKGnkVkVuvOLA0YWfMuFSmQ6IbHxw2pdFzQGWuk9kcB1Ay2wNwiLFMtSsSogDJgYRogIFexFPOdTuDR805p3NQ\",\"field7\":\"tHlpKCaoIYjqig0TAVTX0UreGJ6ZUUalySFZOc8yO95x0ppEJrLUKNBLpT27HlpVT0nAaR5DECFhTJ35pLwnN4eJsAuNmcsKZfDC\",\"field6\":\"CIFc3nGhQdF2E3DQWOo8n38fyzrnbX20ZnpHhK2OGjVSbbeqkuisni7sesyadU8ng4oOxXlfmFWCawFngzbPpZdejELzgKGQuR2W\",\"field9\":\"xfmNSmZdZpsKbL3yvQPZouVmFeMf1rzrgILN0ABZ3bXE74oc2Gny3mf4Okmq4jGFCndQhu20JRQeTjAXBjfliMAmuv2FCelLu7gy\",\"field8\":\"523Z7T1NEkBACHVMtjJzrZ3o86pb6dse94v3RbDWsUduo1o82jRfI6M8lT22dBcXXjTFrD4f0cvYr7l09YvhmOcdv4JIIZBVT3AV\",\"field3\":\"SIIGsX02t4NA9gAFg695Wb3StRJd2Yc0B9L3di9uHUeQwDjtLWMHsG5XeynnIEsVLWuc71dgsOC7399UOhreVPejbUpUjZth8jbb\",\"field2\":\"8ShHnPlKqWE0SztDnUCgqIhs7MQkKlunWzYaNPOJ0K9vHkJ7E6y4P82Ph0aiS6SxwZFd29aBHXNX0UJUvl12LivLrJEqylJUpnqq\",\"field5\":\"ubchDbTc74rELUTLj4NG4sLmuMFsu9KppAmhyLOYB6TugLHTOSPSwslaaAkbQslawuneF35dKjYpy0LKg12lYew9gnpA2ajGPNqy\",\"field4\":\"F4yi0p9nMGP9h4Nz1nKx8KdRmGN1BKiaT4Z3LxZMWsvLtWiBDPVjN2KOWTnzeHBIhqmP0Ozv77kF1qoQkWAyMGpA68sSnL6jBXMT\"}},{\"stream\":\"gen:32\",\"id\":\"1730880588445-9\",\"body\":{\"field1\":\"kZFYSQGU6SQUYkoEcWZ2HxN3S8b67QzUXZRm0sOYXVXvCxvrkU8r8qC2F9cSLnoPlWsHmUvm9AJE7oZnwnlMMQcBPKAKWLvil8VU\",\"field10\":\"KbOMJkrKIAdPjXYpAFD4zsM2zOaoSNAhtEW8OQYFEju6aRppyE5zd9nuKFwQ946a4q1iNhkt93c2XqwLdqgUhywQHAOFn9jxK2bb\",\"field7\":\"abpPUtq5yWkWIF8Zemtca2pqjaucAYEaBRZG3Waen9Gk68Z60Xj4erqmraIX1ndNH8whI7WXvfbvRgZHvVih6gFZvt90SrbQg5xX\",\"field6\":\"bKHDhRU27Qq1JgQiaacIYxMUFOiN8QFPSCTrzfkkYMleCvwqxkD2bke9Lebcl3bW6ssYXtwriRcspEZ2XKD7dcxlmDH6MJpCd2YN\",\"field9\":\"IQ37TpzvTQLUlCejG0MwhqdFdlHXK4tvqFA8Ccyh6AHE87WHiRMU9T9mo7CHSDl08IL3lLFWHxZipXORbAOWVZeD3hIQhPyrv3G1\",\"field8\":\"qih9xyYtHj7vHlCadbyqpIWHOoFTqtT49XH5Qxv4fuVyQOlg4dWO6gw9r5cpjnJlVQfAPV0aPAbPcZISXKcsOAGKbM6PPmG0JwyB\",\"field3\":\"9U98xrq9O7K6InGzVGKixAhoh9ZO5Iu31KZagQyNJ0K9yLreWtrFPElGarZrkWxlHDruQF7GVBhaq6Hku9k2u0r5LECB2OPlF4U8\",\"field2\":\"r9JuCoPJ2L1N46cYbECMNOjoQ7JKyx1vGsx7imIKWgfXjwdnZDmMx2ERrXYTW40NOb2eJOPLN4CMIgMOzaW2DpxYFN87Q4JtXt93\",\"field5\":\"0wmZE8cBbtcyEHyejaT7IOdMjCliVvS0vu7t8SpIwCuHLx04eA3HZjRlusXG2cPgueeTI99nRt9adhyAfkO7xJbS9ynwxIwrt9ja\",\"field4\":\"gpgmUE5nzZjiNCF8mvOU2mFnrGifFy9rcdcJ6BDcFt59yEaJtsLsqroANDadwH0G8EdliULISKbdNYJdMIkGq9Vd3GdwxV3mzypk\"}}]},\n {\"key\":\"gen:29\",\"event\":\"scan\",\"timestamp\":1730880592597,\"type\":\"ReJSON-RL\",\"ttl\":-1,\"value\":\"{\\\"field1\\\":\\\"rKHZh76dCNFWhf0ox9sMD2Wv06PCrX204G4M5ZzcNxkt16R1F8HS9G6oLUsvNDRHVg3TwaMCrnqOnsICt4o9yk07jLiG7HsZc1Sp\\\",\\\"field10\\\":\\\"GsNekNGuzirpyFRcquh4VTb30VtxcYiZ3FW4ryokMtmd0gI1QhQEVz5gmsMkZo4nvwmtXGLgMEpNEGsjqa3bsDa6uMd52ue7OyHX\\\",\\\"field7\\\":\\\"S18DroK3JCBzcpvCnPgAzGEKA4pmy0wYoYdPd5axgkgUdbiOPCNhKWluYlZY3md1ijKG2WSsX1S23QsLsx1Z0pdrvSdHUViSo1pM\\\",\\\"field6\\\":\\\"JEDKlanOlLuMBrgyu0CgrnJkdxh2idooXTHbJm5rPHqEWnU5LhE0zU5spovzxXq6p0WKdEuBt0OE1Wb4pxfBTVP0B57qQgUj3W8j\\\",\\\"field9\\\":\\\"ikohbLEzJLzcuc7jlV7OlLpHNYBCg2lBvgEICJ23MHOAau1a5A8Mi8jqMWIx6JMPNiWcGsB4YFt8bAKARtPIZZILDrlW1rQ05vJe\\\",\\\"field8\\\":\\\"EMdPj1RjyPW3jAXB6F1dscq6jJTU0RQVwvTZGPPPW62GaL7cOSe832jSEl78YPMFRdh51ptT14aHt8XxGMTFP70z4nBT8UMBdZgh\\\",\\\"field3\\\":\\\"QQLOs7TAPYZdH7aQZ9fmDyDxCn9jpGeYrlQBAZDHfZolX16nAV8FWmN4ljybsHfMpj5pxtH6OlVHD6KDQVWAVdanl1oM7HCweu6s\\\",\\\"field2\\\":\\\"Jc9q0WDe1Qruzvcfu98ZY5oPCuO69JZ7wktoyxAAgFEbPCXabnOScz3I7snjTnKBijM1jdfOItLNbLnxwGkLxOucJvMgizE9Ne00\\\",\\\"field5\\\":\\\"iXNAZV6Ky80IfBJeLnSaRPFDH4fzqpc32U5GKUuN8WKsFYucPr1UBBN8mDd4KokJm5Wi6KoTfK1F0Q6OeDd8pFTzsHsiUScR3g9U\\\",\\\"field4\\\":\\\"12asUABMEgIbLbJehBUudPbR93oVRwGb6XUoSZBdDofcp0gfQPSirv7Vm519LkYzbPZOmlDe57LXFtd0KrJd5qUqI1ybhy3OGlwP\\\"}\"},\n {\"key\":\"gen:9\",\"event\":\"scan\",\"timestamp\":1730880592597,\"type\":\"list\",\"ttl\":-1,\"value\":[\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\",\"20\",\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\",\"50\",\"51\",\"52\",\"53\",\"54\",\"55\",\"56\",\"57\",\"58\",\"59\",\"60\",\"61\",\"62\",\"63\",\"64\",\"65\",\"66\",\"67\",\"68\",\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\",\"77\",\"78\",\"79\",\"80\",\"81\",\"82\",\"83\",\"84\",\"85\",\"86\",\"87\",\"88\",\"89\",\"90\",\"91\",\"92\",\"93\",\"94\",\"95\",\"96\",\"97\",\"98\",\"99\",\"100\"]},\n {\"key\":\"gen:49\",\"event\":\"scan\",\"timestamp\":1730880592597,\"type\":\"hash\",\"ttl\":-1,\"value\":{\"field1\":\"AKSTuSqQDEzRBSeCqZAKs9og7cDJEONIHD1Rbmzwds1i3NQP88LRLuZLufyhEpT7rasRjwC2YuZ2I0sNPIOZPTj9zKfOkBLZ36LM\",\"field10\":\"Ep3jTQiBqAFrh9GnIcVaAdR5FmkpimYJpJS61KEsD1VIeIl0DNL3K2vClP1bAdJbo3aeP88ETH3wPYnEtQ8QfKgjWuoCwx7R5i5K\",\"field7\":\"3q2BL7a2kyG4kdxoA7IlDrxy6wPqKxGGSH9ejHgAH86mAVTxctrsea0VPHho6C2Q4rKiybl3JHKDrvDujnUtXWH4lXERInTsjsB8\",\"field6\":\"tTou3WCR49up26kGowHXa4b8O5X9M4fmRgCo3nEDk5bvXjY6yZRVwT5uKPO283wuziRL2rAPishzg12Y4L8Mb6BrZcSbt4pyExqB\",\"field9\":\"demFxWPF1iEhPcZOKSd0GvQ34rX1V71PvVRcHP5dwvQzBAK9OA7t9NIBFV3nAtRG3LatGAYNO1rkjHy7WJltse4dmyAhIH08wEoT\",\"field8\":\"hG07tbC7bxM5E0vqKl7jSNXjKqt4YAOx5kBTJMe8zDvVYxjGn03DmVo9Hz7TtpGt69U5PWRXaXQYu9mGF9sTlSg3dCVr8hnerosy\",\"field3\":\"NYLil6NC1BcVjwreB9UQLroXWiYSGdpactCxJjqAu5kBYBlJRJKmxqRJ9kWmo8ZjqKNrGzkXpfdJtN1W7C47zja1YUAkQXFrQk9t\",\"field2\":\"VX6tMrVyh7TGgZAi7tImmA49LzInD22dEzGTxEE01ERcmDl2G1Nc4cJ5SKK42K5SLETZX9MztOMmVi9VN8USrHG8EMCUHUTyBuOg\",\"field5\":\"OM6iGkcmZTEEY76pg3VjFRxUCQBu9Zs5zmsTXw5Vuozc01Wjljlu1RX5aOmatO9CHKqmMRtB9Ek4RXtsG8x9T3EgmN9FxeBIrBtG\",\"field4\":\"cgSNY8q5vJvEzN5zBfsjAjeh1VgtEimYcxP05WCO8cGjvmqk9mF8Ofgj9DVUAtQq36ivrVeZ64FXtktLRsmYzSb4eShbzVc6SHn7\"}},\n {\"key\":\"gen:18\",\"event\":\"scan\",\"timestamp\":1730880592597,\"type\":\"stream\",\"ttl\":-1,\"value\":[{\"stream\":\"gen:18\",\"id\":\"1730880588445-0\",\"body\":{\"field1\":\"7D3fyeqBjGzpXYHV5wOpz2J2O555HUDfc7IMmopcwsoxwHAdKIC0MVzbkNRF5ZGDLpAyI0ufCRweuki8iYsAcrmM5rcbVoauJFVD\",\"field10\":\"oepsEY0nvtgHHpvlAxhByzdkYHhIux2BdfXIEscMxc5BJ1QVPUyQuXQVPawBnewSF0LpJz7FJsYXST0KHLtaxZcacimYRJEYd4lO\",\"field7\":\"JA2HlvQS5oZKH5i1k2ufPV3tE8v0To71rqYX4bGBZzt1V8zxbzhgdz7EAUKZYudIOypvTkr5oJelv37eZX1v8DtGTBqEuTKyYT31\",\"field6\":\"Ry6knO4j2v20G06fBbazaWekV3On3gBlGOqvJMbUB4r2dTaN4YX72Y01o33KYDuEp6dHWjPZekiPv2wCKoah5c3UocjZuKuINWLQ\",\"field9\":\"rhXkYODJk8Z1vQsurUai9YXo4M5rUaURiWZNFIFV2smuUn3ZfILaLunhKibapRK2CzqhdFeMdo4E59wK4zNXFUiORTKsDCaKfdGW\",\"field8\":\"RnNOJKDen2wujN4P1tFnp33xHtHp8W7Wr0LU9w9xd6srbJ5y8Q2aLCUHD8j6XSHKUEa9HkK56VX6lGBuN3KCtFpmei6Sy8yYAoL1\",\"field3\":\"hHxZKSpCESJP2X29hTCj1y92oKx5oAvnzXqiMqkcfTOwG5zd7xdq0w9VvZKejjxVRQhpAQkTW89QkyBfjCzJLSG4BU97UsF3tsg9\",\"field2\":\"M1aNRwCMOjapjXg4KSLCjs6ezk19pIDPVNNNefgSpQ5vt8auEkrb4ZIYDgdrz20KEyApAych6DwS1KTMJZAZK4xNoLczGvbTnkOf\",\"field5\":\"1t9rKCJaEX5F6awGh6FyN1PlwvdckysdxIfWWLAOQ2cbAynBSlpVtBZnJjX5PnBcPXPH9g00JTyvIEIFD7ozgtmv892o5MHvIJYL\",\"field4\":\"yf0PELtZ7Hjv3CteOUWzp6ObHGXwXuM9oNM4F56hnvs7mllJYwNNk3oivgSYmgWc6fXoyWdVJrh1aAmSrXnXI28b2amTC3cbQAvs\"}},{\"stream\":\"gen:18\",\"id\":\"1730880588445-1\",\"body\":{\"field1\":\"doYgHSS9e8EnlNzFhJaxp6Lxc4CpTvzhrv27zjpD02HrcRox8VDCzpzncOyylcKsXEjkbjcqcE7wtnnDcqmG5oBG2SmsFNbVSMHo\",\"field10\":\"T5XbJCGPNxd4iTusLgqZBGsegz7u6xYXioG6fbQt6cRofOecpgiJ06xI6Na37JbeKf4FarLrol9925AvdmWhhiBHBBA3M7Hsy6Tq\",\"field7\":\"JeJcdfCvpYZ2Huvs0pgz7K99WJLTUv5aPaG6kOTxzhue5Pzqp43ItrbS3MhhDIbvuHXxxTHaoZgtoF0UN8CBGRjNX1ApbptQJ9rv\",\"field6\":\"gKG6wh0nojvKEBiRp5mGxLOfAmQls8a5md7MobKUu8Dq7hCAAShhNDIRzAHNYm9bq6k6ebxyIfDzj5asxXesOAi9A6w1fNOZbI0Y\",\"field9\":\"LFTuy590HqUZvp1HjwINAIaICZcfJZTK8aRj1zFsQcVqRXLe5TuGfmw1S7iP1OhGXQuox8oDYnxToccnLhzx8OFeFRThlyBsKh5v\",\"field8\":\"HvyCEhyn0HFhR83gATa0P53mL0T3LgKxMwi4tmbhao6wSz7OOq7tOckpaAYmpPYSLBSF3xwjYU4Fl4Y2w3F4GBqJz6Jx7LmSP8KB\",\"field3\":\"gU7K0HceT6IsPFyC7khiCw8bjkuJ7DbvF0X5kT3BIUfu8Rdr0gKryOCEEm3oW7CP2KZiQBbELNaOcvU8C8OKqWRFCphvKpWw35iV\",\"field2\":\"wnrIXCb7UuVPEH1iLlROz7iNVoOfkugirSu4ZRSD5DKHVysshzAT3hShmC9W6dwSNlMJv7i8a7mbEu50hrlUAH4jGTUZDZagC0Qg\",\"field5\":\"NQfLAaZcoLkUlGeJte5qlhdB79IVjAIxNiMn5k2h991bcM95zQqeFuPAYkcgrwWHMVHbuD8X6Y9eR5fYl2nj82Kwb9tTIH76qWTU\",\"field4\":\"a5nGUNJss3Hl0EIgl99VrCkf0qyYg27hbsuCQk8XnuExvG20yskL2p2iPjSw45L5or7rzHOABOvaet4cLd2CWnrnR2kpRVCcvEEC\"}},{\"stream\":\"gen:18\",\"id\":\"1730880588445-2\",\"body\":{\"field1\":\"mdtrXCqkGU1klpp715nvICehUZltpSv0SKoxAb89Qs1GJnPoBHhfO4dc1EKCcCUoI5E05oaL5R4DGZEW0YkI9YnEMBU4YvG3XDh3\",\"field10\":\"NPS0dxuIkoO628X1HJEoEVW8zAoqFdKSvFXBzesEIILOp09TtUfZcvE4fLkV6wQszyPXEZZndQd4Wgh7JqrUkHnLfHhRMF9FBA5x\",\"field7\":\"DeLLzTdYMvNpBvDPkJuk5fmzWMuxSnStYJv8HdPifhzBTv3MxeB6h3dqNb8eyjkNnbwdsDkzRHO28JyLzVzu6nvJmsRidyRE8uNW\",\"field6\":\"4hZFQZZmQBC3w4PXQpoXlJWMbHnUs9HW0JqRyq9O0ddeZak3abZWRhjYFy5dKUB3fRZts2XTEzjmnYWPLEChmpRxVznP1ndxjeKb\",\"field9\":\"AMP48RweKmQ9XHZY8J0SIiBG26bAM69fwJd6QbKkzXU4Dq582tsgWAPKqWNbNHN4F7jjQVUcfwLwFHGhUc7ZS49XqhDuQnQ6b6Ci\",\"field8\":\"wD6UBMQmO6WsdjLoCc7TAqIJwInl0a1fvr5GsV7fAyLqNMDdh1E7GpBkl1VUvnrMRbPFrMS8xGjmKCyYQL1OD8z0IVZVCl95awde\",\"field3\":\"KJfH9P4RUPX5WHLvaCYRJvqIpV16VMqcfSGaZiB3Yg3rIGERXKaifyJJAlKbAGnVn3ISyxQHiOp9NZxzSsNsXLwI19sFjoQDKiQz\",\"field2\":\"xviUuuB6Ife2rqkK3f9bdptOEREmhBkLbOI7BCvMRkIEhBuO116nMHKCfU7Ro3UB6re6HlIzXf43ETz1Yqus35U2ZHB8EJ0o0cVk\",\"field5\":\"RZzLiROyxuCblYbIV48oEAAJN016WNk8oymf4xGDa1brJ6zxu02jvzCKlIBu28f3StIpg4VG0Ek4H4xJ6CUb4MDd0UMvjuTnJPN0\",\"field4\":\"q0NtIZCHLah7QTngSN124MNLTRa4U2VZlWWmuIy8svkgdQSNSAX0RLHgkslfcgaVVCoIxOzCzTDP5IyA2qUHufncbnxK2O7ao51K\"}},{\"stream\":\"gen:18\",\"id\":\"1730880588445-3\",\"body\":{\"field1\":\"a0DA0CHNuJQX3sIYoMp53STPyNXJHSNiguTxXKVBMz4ZcCDfo4pNFKWAB2MQOwPrvFehPhWti8Tx1g6NPV4czOJEwgsPtMEsvnVW\",\"field10\":\"tK8x0y2SqZTbIgzksGkJixBhCC8gC3zXANqu8E9uwGpBEA7AIQ7mELLNsUQcoU7Nu8y1EKL1yi8W5OAYpNmFuVkNyQDdqGpuACId\",\"field7\":\"ATqalvk9PZiq8dDBzmzH2VS0UaWQc9qBIGcejpVSnOjHvFUAeD4qQTiNmaN6U4PrcPLcCWGU4Ob6L0t8pDTapCi58DiT2MEck2pk\",\"field6\":\"zbhPWwl0oNHlPWRjLsbp8oPeNtU45B50supDjsM1o8tZ9K8GSLUTowJaAZ3ttX50asWQk1CTujtO5aTepXJJCkCme1IENCzRe1XY\",\"field9\":\"uZm2vAAOhut1jdowSdL8rPeOiC4fNsLDOYqwUobrXav4lR8gGnJOlz50uX2o49liv5Zje4LPPubFE0CnSLAKQoZCGbep0WLVAS2q\",\"field8\":\"rnltan8VssBrHBchyPrIThzxvBc5NBjybkukz8Uh9UuNhlHSv9tMC1OKcuHXmCuQ2icgTSzDsvZUf6AICbua2xP7vggyXmWZDA3d\",\"field3\":\"mn6oIbulNx3Ca82CMlhIqgoYVky0nyK8abBFaDF6YzyITef4yZdOq59Hx7hAGHHAn3vu1giehmWFttgbgNDnJVtnyBiUAG0idOh4\",\"field2\":\"o2e43YH2OUStzovMqjl0hn3qZPVCmzXKfdrI0XNyBfOM2r97Mo4VJ7gVsXhaW5eCt0pgKHuGJ6vHh1XeJ5Yx5uRh80aidAmRrdbm\",\"field5\":\"lGd7dnfaQ53zp7xcS6ETLySzdCQe3atRVOfqGB2voB2zOEhY6vOIZGsh3scDdwATgeiUeWKY9OiOMLRKiDlD5kZVTiykYrQcr7QR\",\"field4\":\"lzAiSjVrCQIog3sizf9RcmX3JJZs9t7g0RRHSveKVTekxFgkQ5YeNu2ZmeNxMuwiXgjcKepc4lUpCDuzkc6n8QcG0D6FTtm4SZpH\"}},{\"stream\":\"gen:18\",\"id\":\"1730880588445-4\",\"body\":{\"field1\":\"PnqqCPrkOMJ0AnbdpnhGmc9o2TPqFlnusfLKNlBNM5ylpG8JZ1D4LzSB78JENnzujQHpflGVRabtaLYye3SHMvCDro8eD3vv6e3J\",\"field10\":\"5tpYow8OHaRa7fbXkduYwVqNImJPSqj7o06n5p0jtMifnTEOQJD4YCqLcUReQpPBHUhyKO0qWphoQ4XTlFc1lQ6oRpkAaKniMGsa\",\"field7\":\"5ZQG6Qrbl8oBjCufOE6RTwt9KEfSqlbsjKBHBdTb845zYHjNS3BnXKem9jMNsTM4FqDZtx7ktAOsWwklsnjRlvmr4XHIvdRSKUEV\",\"field6\":\"IpyD1ySxn1tZgzkluHINgtzKNAK8gR0XGJqyWoZuq91vvXX4jkntZosdsiAPWwemDGdS8OQMXPD4EWxQcWnA6bGuNIY489AHAhat\",\"field9\":\"hektfZZL8zrn4BafpdfCMDQIkyjm1KseApyNQUckDjFaEU9Yc9NflI0boDI9IkxmQYsK6ZHlYA4BSqOOVfMEZ4BeKf3Iihucu2G1\",\"field8\":\"FRQpmo8HAm0uaU4lpDyd8gJbKU79PUPe5rEtATQkT6CJmn4mdXXMafDuV4mXM7XcICJcqRcGXZen7FhxIO4xE1DVTbGs4v1GQVsM\",\"field3\":\"IYCWd66z0iFdfnaBwTuiGlvdbqIfTrraOShsFebU7mDHkW0ClMce22v6Hu3JXst9CEoicceKesxqMBITfvBMrhOr5WXEsyUPdbhL\",\"field2\":\"ORr4DpmAmS1IECl0LNoIVkeVeVARHR6j1UZyXKJkR6NbgcjCmk8aaI1UMKiRddhNbgKsnrKgBSEb1Ym1Gq9KyIDYb9xIseB4Hbae\",\"field5\":\"3ldmkPlmmMqeUqN9AEVxRIFBpMHDj3pKWfKHEXov8z8dZ31cBi3kPd9Mo2DKsXY1PjQHHZC4XsqL6oBeEDy3gc8hdsZ5xGtrk0Rc\",\"field4\":\"en0nKtxkIWPdvmKJHCTZftnrd0AEgPI7saoemBt9bF6Bwe4wdktkaRyWZwXphsTKv2vqzxze6djgc8VsGkCdGXxBg3lAEpYMggIk\"}},{\"stream\":\"gen:18\",\"id\":\"1730880588445-5\",\"body\":{\"field1\":\"31DkAs95FjFQMFUZ6VmvrTvazHP84DYGiIbWr64HxeWtz9PuoE72n2Or5qJAZAceLZFtzTOG0ujw97e257QCmazi3zKLdoEzULfV\",\"field10\":\"odPsDkxLNCqg136CfOIMZ2Sye0Kjy7IzGSYxNSK0QsFA8ANZvubTLj0bxcMDq2t2IcDuq8BhF7p9sL73G0jmgljal822KPH7vzEH\",\"field7\":\"lKn2THfrKItmPQNcm4d7342phwaCCA3tCANsRxA7iciDlBdbhriwD5yjWLVo3I2wk5PGskmubdlRXVW5WTRS46abtAzn102mGuzq\",\"field6\":\"6Ka7sTOwZ388nVqCaTsVnrzQCfwHD5dNn5hIgygxyAGF2oU08hogu6YcY8bGYGlPoFm8s3DZfQrK0KrQScShjUp7waBfgG9YhgmW\",\"field9\":\"0SuZj9xp4Wd8kTbFkpX3Z9aKxf8nR3OIJcSj6f8xmpv9rjbwsHTYfRtlwEBCMgKvlWpHE7Q6KqSkRGhcbqCabR0K4ioCAT1EwfFS\",\"field8\":\"iIzq1lLEwDsUip2wCbw8EwZjkRr0Sa48Jqg0GhZu6ooPGa6DYDJi8xQXBY2o0vtBr7YLOmqyumsX0piiG26mYPpgHEqsEEJPW72Y\",\"field3\":\"ZJWIZmUtfX2HPqFpco7H3te6e7dYCezT5PjV5eemHXtoikKQT4gWQNWnj5P2RhZVez942baEHbQ3yvZPq3D0vkLr6iYvRISbC4YR\",\"field2\":\"ppJLWDJLyG6eaO32F1L7fuWaZdZao44DngO9IfRgz3eG1PJw40NrLd4HsheMIOq7ccN9gw8yxJWrGAJ1EopkxW1tT9McCGSzly3f\",\"field5\":\"IGCrudwoh6lBLBTlqP65W9trePcr4OYAQd8wIhQ5IPGeNWgiXwszI8rTWxjyhtHAueKoQGOb63IZt2I4l9TIQN4j80slbhytrtHy\",\"field4\":\"FUa6VSqgNzWRQgk0XEvW3KB7mfynovMjj7DWh30JbkpErYg0rwlUR0XKX9kQrReHoZ8NHoRgjWi9xuRpu5mkEgKrnJwdojQIqgKg\"}},{\"stream\":\"gen:18\",\"id\":\"1730880588445-6\",\"body\":{\"field1\":\"PgfsMLl6fYYX0uj64egWd5iKqCG53YqsMx1v9iIsxwxxpVrzXyq8VDajwDl9C9JnKlfMDJenlPPUBYVYlp4a0hcSG7HIPz0RAVAa\",\"field10\":\"pWPruoLxMlzaBpL5RaxyReaqSbdNt3G4AASaM3B2eUkWjHZnVoZecgaewRM7u3Gv4Dzkl3cEIG5aAAUesVII72eeEFLkHbqdqDsl\",\"field7\":\"2heJgCo8qWY1AnORu6cihx6u2MaUMvu7gxzwuAb2wKikFu7MfnoBdGLF0U4WxgyJAlfFXa6T0AVzwSBnddmlPm78SqgwKKqKcCXm\",\"field6\":\"asHAi8vWiwisl7y8GuhiQNqj2jpBVaPwcQKZGRiMWlnX40PU8JQq1PaDEAKXZ0bmY8rmrLZPGOFsYvklifAglXpSCDWwZ7ywIvJR\",\"field9\":\"cXYYRGrg9rDgKSvptaTXA7huPMZulcteVK4Arpjaw8PJSnFR69mf1hwtuwEFOPdt6EgxPFvspcjdLwSfiXfaA0FBzFumyX6Me8xf\",\"field8\":\"mZCbGgNXIsUQpxdbkdRiLIbfiJDRyOgQhW6j3hX9yOXDvzQjcoj9D9B9ihRqoGoSXfpqFWLTFbsjNifTPkNiQF8M6yYQ1Lbn40zp\",\"field3\":\"Wj8US8vjoSwPz7dUqDjSqCsZfZ74flnF7GWlLkR7SNveeA8pbY4iTB84o7gxRQqEJY32QZUGgVVX3KLDf05mCgXirNEVAoJa6TSe\",\"field2\":\"DjFirsqpk26OnrggrcapfolTLepwRFpq2xBqZoMge5oqYwfcdH5tL1Oc5B5WaoTldan57WjtSscEqvRkRXSX5psnhKdne2qa03zt\",\"field5\":\"KhVDkEfoEOtmS2mMZnYocceQXRr0oKuY7pyPQf9g5r97TEDt2aMHimc0w2TebilY9DkzCUqvs8jXUYrIdceoJKaXudXPNBBpb0qB\",\"field4\":\"kVoiRPgENHOmy0Sy5kjRD7Y6KxAYWlUIAY0iUNglwIdFK0hJyTf6VJLjqVD4RnKSDeFuTFEq7ASU6cMINrrufoKDJRM3Lp4qUuxJ\"}},{\"stream\":\"gen:18\",\"id\":\"1730880588445-7\",\"body\":{\"field1\":\"yy8iG7QL49i6mdjaP4RBaHKGK9vwOdGDpx1FOjvZCc5AOWf01j0c26De54LvjyiGf4msZ9aYZNmihF5KMkEWeGJuKE1OReh0xO2M\",\"field10\":\"2aJrwmONp8e97J8dKuKdxJ17ielqXAzldMCVgl4jubHwqNUHllddBY3fFwqvch6g7uKzmST2zhOQmee9fM1zZjx1fj5PcqZGPRvc\",\"field7\":\"0t1seOEvME5S4hPR6bUFOXDUuWIjNuOoUAAbsbkzl2U4Q7ggovjr6mZKaWuQxRSUztnkiddBco7UBCzmjrnXUi6tU5vqpzdy6Sf9\",\"field6\":\"Bb71CVNJWlucCg9jJyQAzTBUPzGmKuoJ7xa2y1jL1k6Y7cBMqhweGMfzVWYtdOz91ZgCEbyao1ytdduMMWLqvXuFVr8MIGLaHhOe\",\"field9\":\"gon2t7JFHcJMQIRZRRYkQL7rIymKhUv3IfVp9ZOolI2R8xS0uQN36cMVqR9nsQwPkmPSjVWS5g8a7niKU9ib7Ulf1jhH7BDJWAHw\",\"field8\":\"XHyY2XvkVSCrZ2y3dURtnlq8YJ69PgvmzRBZt7jUiEmbhBlzF109JiZmKoeacnsNGHP23TdzOPdsnB2XAyHeoO7FILScb7Rgjp70\",\"field3\":\"Plx3qsfuEBzxynZ5xqb7FymQLVqDnNa4IshCFzqEawa78UtDQyQDvT3OEl1JNlcvadEDJNz9OhzXrfQ3z11dUFee7cTRUqt4MEDI\",\"field2\":\"EZ9ZiuiSS6cD0rELnADGv5PT5oFUo725wDw3aWOsWvkF48jrXkKZtS6VLTsXaCQIPLsPuoZYmHIkO4oQWyYQ5WuH5yCX2Vj0Chwf\",\"field5\":\"0fZIEYbdxDZp3xk5ntExkJTqfETLQgXGjbyt7m7qSbDDQPmm8RqOUtRlpnYanVjPl8S4hghQ5sXKr3VXsycjeMr3G0SypWVlwP3I\",\"field4\":\"OleVLWaG1a2wdeXtR3AY8auh8p8cBEDKyjlHg6LWljnkLPtm7520P9ZTUccUNaZNM8ocML3210dbTdP15qxMuz5hcNqZGtVJmLPF\"}},{\"stream\":\"gen:18\",\"id\":\"1730880588445-8\",\"body\":{\"field1\":\"wMTlmzf3oJts17yBj5pTpTiS4h355lbT08QCQ5AVFFoxOmauLv5TKQ0Qejs2XyazMhYpQHauduU6GftAVHb38qJJTTIVJiVNHyvT\",\"field10\":\"LP2XWD6veprtdcWof8uy7IOGDFqyzeczpzaRwSX0C7jKhQiCO3fKuWdg7PpwyNRcSdFjKjrxM1ZtaUMz85zNLiSHnqk1r5waVlgb\",\"field7\":\"p9EiVzHmiwNBWMoWXpxbgLinKGsmFGqAj7noXX8Hz9rmzdHiXMW8J2NDw84kqxVCQ3rwKAy8SWeYlHxpeHk3g3Zv6aHKXwK83gqI\",\"field6\":\"0zkgwFdXMomyL0bLPI8Ayz2sDs7FFzlE3dcpHwBUEhHeRjeIWIf5gObkQcBvgw4dwekeXRT4yvdHbSmmrRb4kxIjPUoyTIiOXsFC\",\"field9\":\"YtOm77r06TaCthQVSmDz7Nv7EPCB8tFwCagh573IIfeTsnpTGjgxF81I0m6rvvTgpuebMUzRV3PXkkzGg2oqEsJhNpKSElvd7wGu\",\"field8\":\"HMsTRY88IO6ChvSI0Bfhka8AHrjEIRQGRNTm7sHAf91C7J3gLIFhlwO1eI4DYPVgjk3UMYIUNIgA0D1nW2gEQzQdtX8K7KRHV6aX\",\"field3\":\"iF4wXOSiwAeA7st0Vm9kw3vAXWkPwqwYeFA1VAlQW66ojscgdZBFz6IXb5c1clP93zs3gS6CgaucRXe0t090RXSEpEloD0keezHq\",\"field2\":\"zZqrrIFkhsEeTeCMut4BYhB1bDXBk0KCgXpJcplvMa19fMkMKWyBiD3y80RgL74QtcK9iGdYIv0MF0wSiA2oPUSOUMxrNUB2qdVr\",\"field5\":\"fLqm0Z3SQQsfsMI5BpJzzUsLHMpxOF60x8gkEQ7rd6hOmzWjWLZ16j80OfJPgXylwEZauUSUefdgBAgKnfI3Df9Z9tN4OOZ5t2OI\",\"field4\":\"TT6fLgMcsK8wKkvi2r3i6DmjbUZ2fSt5O7LEOtxyLRW3LMnKZpmQiVRIywY8GkimoQYwP9wWKngOdrl5cL7nDHDdQJ386YyrOmSn\"}},{\"stream\":\"gen:18\",\"id\":\"1730880588445-9\",\"body\":{\"field1\":\"rGnoFzCVryVCUkoIK0XnpBFajUFXXtnGNlpJz4hKUeNEfwR2bPs6TuQS5r30Jq9OCggR0yxHMt3mc85s5xIkasLrBsUm9kEmbUvF\",\"field10\":\"lBJSkdavbH1zXpqxJ34pr8RllHsLr5sH9fZKZLqDJRsvOn2fQWgoA2xh46kBQn8iDHjGdNAxERke7AsqHcSQwjt3zP97jbFKjRAI\",\"field7\":\"oRVm2qJFBXlYMwNU8IDuuqBElJruk15pHrFSj8a1Jp1OnjofjXfIWJk7WyHYoe53hKcb2w27hZvSw52PW7Sn8dpTsJsr7wZe6SYE\",\"field6\":\"PhGnwGQ1VpN7z8fL3ubcBDcjMQZFfnvPlmoarLbQx0ILC0KYbFITJf6I68IRbiK874okY8WEAor7OQg5UDbLG4qAAztZMK76tPSp\",\"field9\":\"K4djGdloxU750X335jJoyiaQ1hIyU1ugnLG3ulCVeFFYgx77JhRGdAEsYyOEWSPEQd3pZuo6MsuFO0iMkYjWX4ilfeswdlbGxUZa\",\"field8\":\"L3F4LPHsSaYXs2x0kmTKshhaZeVMgTHGEJWajbr0VsogbClD6JyImXWaddfmG5nFp2OnIUUQFVh8KxhRpbE5voXmEz8BYpZ4zTba\",\"field3\":\"EBbYgtQepMGE8pKcxBjsrRribUDGfIDYPuxhYdhw50M0kCFWafQ2LfxrahwS3418TTL8CQwEPg3KfYq5048X2rRx7N0Nla8iur0p\",\"field2\":\"TiHaRyTMOoacFcUTzrfB6qXei1cVpoSZo1tCq8mpgEJwwU1v0Smco2myRHuNAEKBffvVwzuyUPNC80wyHIMaUevLPZutzlPupmaE\",\"field5\":\"c1MjBphko3bBcbOYdw6BoT1qk1l4zE9lqXZD6KhammlyM8gJjut1tcQyTvNypo0u0bn02H5JYb5bt6e1kXfEHEu2WN0AN9fBCh5q\",\"field4\":\"o24v6hCTY0Qznu2RtbxmUic0gq5UyaGJi4NMgv80t2Ah08W0Iuys7fzMJhYm24Brhf5NZUdJCa7p8dIhFvmEFH3FLnBp3RdtNsJh\"}}]},\n {\"key\":\"gen:30\",\"event\":\"scan\",\"timestamp\":1730880592597,\"type\":\"list\",\"ttl\":-1,\"value\":[\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\",\"20\",\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\",\"50\",\"51\",\"52\",\"53\",\"54\",\"55\",\"56\",\"57\",\"58\",\"59\",\"60\",\"61\",\"62\",\"63\",\"64\",\"65\",\"66\",\"67\",\"68\",\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\",\"77\",\"78\",\"79\",\"80\",\"81\",\"82\",\"83\",\"84\",\"85\",\"86\",\"87\",\"88\",\"89\",\"90\",\"91\",\"92\",\"93\",\"94\",\"95\",\"96\",\"97\",\"98\",\"99\",\"100\"]},\n {\"key\":\"gen:80\",\"event\":\"scan\",\"timestamp\":1730880592597,\"type\":\"set\",\"ttl\":-1,\"value\":[\"88\",\"89\",\"90\",\"91\",\"92\",\"93\",\"94\",\"95\",\"96\",\"97\",\"10\",\"98\",\"11\",\"99\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"20\",\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\",\"50\",\"51\",\"52\",\"53\",\"54\",\"55\",\"56\",\"57\",\"58\",\"59\",\"60\",\"61\",\"62\",\"63\",\"64\",\"65\",\"66\",\"67\",\"68\",\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\",\"77\",\"78\",\"79\",\"100\",\"80\",\"81\",\"82\",\"83\",\"84\",\"85\",\"86\",\"87\"]},\n {\"key\":\"gen:61\",\"event\":\"scan\",\"timestamp\":1730880592597,\"type\":\"string\",\"ttl\":-1,\"value\":\"c8cyG5yWutaC1foAV21OjIgEfgGd7Xae5LeImylk0TPHlALwOdH2oOevYZTxswOwP5OL8OIY2DgD46UhRiQZkR7eDzvGCDhHBUXM\"},\n {\"key\":\"gen:21\",\"event\":\"scan\",\"timestamp\":1730880592597,\"type\":\"hash\",\"ttl\":-1,\"value\":{\"field1\":\"6jWrGWLUJE3oto5gBEHVyQpI0yHhE4lyymuokyX2C99CCNKbPaBubCRFjYJ6VRds8c1jZOhQvoC6ScUQaq40SAT9FBEuZVOb8YUl\",\"field10\":\"JkCFzll66hoUt7nukJbl4v47UVDcy57mK5UcfN6nVNZJXyQjGz2SKlznvNp7Fbwlohr4o1EXfz8OsJPt9WVBZoCvuVi1TB49tnmm\",\"field7\":\"nCJbj2iwtvgEbhrUMyEaIDy7hti8rIJq4P7qizU3eftQhulbwX5paHEWEDP59VXxlXcqvyQOYzWPOE1XUNOQ2tYN5abd8BL32zaw\",\"field6\":\"hWn6OkhHVHltpETbWgTFAVw9mD5XNS1rTc4JftwcYWvtm2JYyCA9z7p1hCPW3FgEuer1vSI3FBMq2DoLaJTgwUEqmau5ziNVjyIV\",\"field9\":\"p5AfSgh60SfCc5PWM2NIJ1Z4y9eSwe3gMas5JWiO2XUX7YZSyzsoIX14c0ATDxsrzfru4EgC6rXIJ4Q2ETRFXm1CN3GcAOyY8Xic\",\"field8\":\"bOHbh1wE3mHYyBi3ECp87CTNea59DtRJlg1PNQwxT7MxlqiQJ2yyCtfMnN4gdEvuzgBAWqK0evKHOZNZKDcXLSZ9XmUkfThqhNL4\",\"field3\":\"9g62w9fPX9EOVyy0YjMk73lcWxaFL1Zy8h1msAXOKFYjXfQtcVUKq2R8LMnnDhleVZ4WMkXLthSSC2EFNrDBbhGPmiNS4cFag6O3\",\"field2\":\"wEijTtv4GdvEpRCdrn6Ctv5eCSGgWHwwG2ucFwsjkCgyfXQmuhrZDqX4PXMzq2Tojrdk9h71MhHOjrMihusbfeFfkvBh5yEwu5H3\",\"field5\":\"lEmxrL8UxXm9KSAYN0yJyP8p8GvGd64nShBxKXCprso4mGWUl5Xa0v3y3RuDjKyKEv3f88pkr23vAvQ8IAllMXvEn8XcaEsdxOWq\",\"field4\":\"oYNAU61CJuhIbiIhPvOL0ix85Avu8JlfuK35PsTEqigrgEPRcLYefDfddJozXzlYCl5J4Xp5fujASwVQQwBVLrnVwrpZAXoSkum5\"}},\n {\"key\":\"gen:60\",\"event\":\"scan\",\"timestamp\":1730880592597,\"type\":\"stream\",\"ttl\":-1,\"value\":[{\"stream\":\"gen:60\",\"id\":\"1730880588477-0\",\"body\":{\"field1\":\"bOqIg9lgSSlG17akB0x4lIIZq0iLSU708ewWPYTK5e6rTm7TQrf3H1UmL1gEpPS7aBdnlUMwFUfeOfdy2uaRaj3ny6wgHUdhxKgu\",\"field10\":\"4XfxSv6b7qiSbISVBrDCPSDbbCpehkUToL43RBZbuw1vpbj0Z5fJr7T3gtp53F7H97kHW6Ldnff9m4qAT6N1cdTbGuIj8zkcISTJ\",\"field7\":\"TB8iAbnFDbshFhtqb2LE4dhdWCGG1ERvSgnljeDFoLleBpuvYjJ3eqUNwDdUn1rhpU7GRtxR8einl5Hs3ry6HgOuhuipXV1OKLCj\",\"field6\":\"ZjbPuzQxl3fpTNiSrETFanm0v9FLPPpzmlcxPWeG6mbS1vUpAHkOsn3fzdQNmEuSTSfppifsfaXh2U6atKlqk7jaJZRQGs0WcTIZ\",\"field9\":\"ksYJt9jhwRJgBKX2KVEaHjtX0DaAqgixliwL7lOqzPCbmZ9E65C2fkG9Sga5SEUSDGGU9Qddr1uIjfENSuRG1ztWxX7UO7zUIxLl\",\"field8\":\"Z9OnQn5Jt9BYPVbJPrn3qjeG7K4HaGmaM41rRAsBZbiz2nbbNToPhPzFyZ1T3VuYBhruYMuzrK2md8I9qNamwDHNkaehFztqyVGD\",\"field3\":\"qS18adkNt2LmW8T4sqvlbJ2fNOmviMjrCNFnwnvrMtk0X26kIlfMiz7SutUYiiJi0sjTRuPcLYKq7LJll10ggk3cLYkWwK3t3bAu\",\"field2\":\"CiZl6UwGDTR1ZgPJ2jA25z8Td9kVMYnpy9XLEJBTxpeCYmwzJ98loIQSTtwffABLhXsSxviwtmCcjoynJU0Cw7xUat5Iqf3BFBMD\",\"field5\":\"wf1pXC8C5matA9twUPMdimx4o2Mo43n4g9z5zcu7v7goFVAOHzOq49lZuP8lLts5JxCYwehR1CtzfriikI514hfLkyBjOw7swhES\",\"field4\":\"qklehWx7UHS0YVktnBtxyhYTWWtB8pbzRjf4XcXdlYFb9Q05qGLw5psTUUTllRk7DmD04oiymUAnuRyE2iY1EOcBPNBnXeRQvz2c\"}},{\"stream\":\"gen:60\",\"id\":\"1730880588477-1\",\"body\":{\"field1\":\"mjdvC8alVAj00alCJCPj2vUaBf5KBxc6HtGb3OwDEMHf4mVsQA2zezwVuO7KxT1vFiwZyRZ6UYNed69yTOli5LOGnxiQAdHLCeVK\",\"field10\":\"wNeIkqS4I0ezXdoOV57wCPvfb0VMruxfonygNrWz5rf0YOmnXUPwDqEfbS0kJHEPZjinJAP6s3QFwB7W1DgU30PAKzctfUUCM2Ka\",\"field7\":\"NMxZxuItvFenfPT7futQL07xcFHeha9mQcUJqi9r50gdHz01SF7ewBY3Msh7RctLiJTvwSE1fj2mjgnMy9q71mErEfQOkTBuUeQh\",\"field6\":\"90TV5SsORQVUEjAtSVUXr6YpiaDFEhKRBI0Gm0dWgkbsZWe2b97bYb9sLueY0ZdnImvX6cLAS36orhQjNLSkkYNSetvqluSCpQzZ\",\"field9\":\"ztbyLmzBTH9xpsVjdWb3khlRQiXguDrdUFLqx5JXfreVd0SAvWFHmXJFORb0v7R9DX9zzkZ4MJFqlnPYywvCaTWfoG3vJoCk79JF\",\"field8\":\"92NPTX7yAn5VZ4VrBijjmssOs8uXZNDQD7IwfJHPrx9KgIFYnhlVCXNQ1euJb0rGuUs0xlA7FWijMm8BfkSsSJxeLeBRbxCsPkuV\",\"field3\":\"6eT2iKyXekenb7lB4VJp6cdtlR0IBstjNexqsXYTjDJQaCIYlKBDmCpNDKlpJZJfxJYyF2nYMpPGHSfbrF3pooJJUWyOvSzn1My6\",\"field2\":\"GIeQzGwzABz5trUbYORbu26h4l4tZS9jVmvGD95YmcV0UNbLWZOJcIbVfFuHYN1ZhBjujasRgfdDCPX2scubZlCYUjpm28ZxPA7o\",\"field5\":\"G9O5TY1tJu5nMQtRT40fQkiitrSO1YcjZpYLayrt0kywNheJInJF9pH22XvaWRMSPwoMyJbCocNXLPahdsp04iwLWGceDJhH1m0R\",\"field4\":\"814byrCqdBCoFlJkA7scsIMcgIVJ83t6hLaVdbAZm1fJsmXXVhdP53Bj4BijVAJzeb7NPZaMBxsZdmHwFlrP3rNJBUeTthICmNaC\"}},{\"stream\":\"gen:60\",\"id\":\"1730880588477-2\",\"body\":{\"field1\":\"vhVnrEQOHP33Cb6myW08W0UzjtYzcQcTYhDDJDFMPX4JIdUPwgyrtGvDY9CoeuJnozeHhtdpb8cIrRmSRR9vS7LDeQsePcYEirLk\",\"field10\":\"3mgkWIsJPRO31vpIWT6jwOQWIOujKDm7beluutGHevF7feCc3hjpw6yh4WIbi9sKsL993Wp92dvvQrpv1cWFSAYvfmYFgGAkcG60\",\"field7\":\"b2ulLm97XCkJVVcWlakZHCRgFFt0CdGzWMkDfheU8MCecNUrlyUYwZDdqlv9UyqBWxtfckxPUjXci0PCRwg3IVpYiwukY3k4jCHo\",\"field6\":\"EZVaa9i5Ni1hsHJMhjLa48xEn5FLhysJvdYgpJBx7Iw35TWgMVFUxi8bY3dRu11l4q49LUEXFnqZrMogIG7KDwzawF6Uzs8h47ov\",\"field9\":\"Y4fxt0GRnZ6lckNRTI73fzXeaEG6USPpi42dFVZM7SriUViqqVQmXIRaumrsvedWGIUhUU3JxKtS23SHqywC8CcFTJEsW3bGbCtG\",\"field8\":\"ftqeHYD6KVrHYBclj2rcTcNGLjD3V1GJjPSk4Zz4eu41XjKJcmxeXn2nVJHbDmlxfQOqsttYrGH556JMTtTtbkniWG1RvYLCTF6n\",\"field3\":\"mXtgmD3qVNV1GkMxfxGcJBlJvR5NKcJmMa8VoNu3IVrKXo2kUTer4VVfGBc22XpuUV2T7KizTxgAXyqBuW4auOhtpNksKIQyIv5m\",\"field2\":\"k85dOytFT8wb9RRVayxZcCFFBqZk2HQe1NTrdn9ixtGNlHdhfgEx9NOoVac7gI0uZ4N16qWRVILrWspOP5JYDB0ZXTs8enZtzImk\",\"field5\":\"eeqecM8qEQfaiRdCPpTet9FgP2i1K9c1Hhlf3DNgjCRWf6RsKby2XeMfnbAb8DItbpHjJbymmpVOVoMgwUq1Qi0VXKouhMpvaJZN\",\"field4\":\"ZS63kMPHD7ZJTyi3HTfu6pa65bzrUZRZp5fwTaAX0Q7QTFgrGvJ8rgq33mgQ7dCTseOHnzPHQee95gPhdql3SAfF1fZ1NPkKZj2a\"}},{\"stream\":\"gen:60\",\"id\":\"1730880588477-3\",\"body\":{\"field1\":\"gZ0y1zUPGyToAKMoe4ttMrfNhodNllTUoXHLPeofRyMl3SchEb0YM41iUyHpxMA67ZbO4rAaE6MFJiQ7ljNHj7RvA4u2apCPuBNo\",\"field10\":\"yxKYm2w3wguafSZbxMfb0xrOPQ2a37vQ7bJ4ylY4LgMlXo7U55dBzJdn39rgqEsYdUcs8OWtdjBD5jg7B8gQKBnIFa5bJsePqC1B\",\"field7\":\"pucFiP6kvFe32ZuznXg0DCMYMbhGU7lid74QsC4DY9CDRvX1wMhXbpvBFNiPevcVTP3eLt9JFotuEmMXMtvwSVAVYEZhrXpVfyrh\",\"field6\":\"523Eiaz1rG5eaaYG6MREYFQlEBXU6zjbjZMYlhRMb06zKmkE4XvXON6SGmrcDW3CbqVMPY8NrGbv9UUdNdXQqOlQB1jkRbRg5xAp\",\"field9\":\"osxQ9liKoW9tItuGNzcBtimVBFTjPJAMktwSPKccveAfyw0QfqALpKNNPoHuRcvCbhVQSoNiUKeQE9VXWZcSbRRNkQJA4Mul5shz\",\"field8\":\"R9ancD58CifYW3YSh0EZja5VqMiR5mVcWAkQin8Gonp1W4GRjop7ENCD7pxCuTrl6I0oy5so7jW1azv6uotxwVVWPjIovo5m7ADA\",\"field3\":\"pCMYcXYvHHyzVsZkn1hgCUX05YQlyLiRZolGEDHLIGVb7b7oefG4Ezdin7E5Zxc4LTYg3zZR89Otiter73bxLcAqf3XYGRTyhH5G\",\"field2\":\"MrTwM9llP6b3qdA3kJxJh1NfAS4FL6fnNv6cnjI8aJqFC4s4vA6jSNdyerOyp0SYbPKtCsdj2ne6ryd2p3nniVSJPUD6APjODmRu\",\"field5\":\"lOFtOUAZrbcT6uxM26TqPDyZ1ZE9FU6O5eZWuZ5gSQej3KlXcdZHHd8CcbzKveMtmAmCRPgILRAsyuYmwoBp48LcjAkHyFGX4Sfu\",\"field4\":\"aQ9jerGgXGaGey9O7ZxKXg9BKtfEv5hkH1enVxJsD13kztjMGxyPyThIOPmWZV9QMNUCim5iq86ZINm98osx4vWx3b8euWVzlS4l\"}},{\"stream\":\"gen:60\",\"id\":\"1730880588477-4\",\"body\":{\"field1\":\"GlhsD6RqYSdm6MsDzEh2wj8YDAIW6lDgiad24oRFxrQ2OoPEuqCcmQH2TmifwPPDoF1GUED2zh2Qzb5JdcnEPdV0dbIjBHiTdBuk\",\"field10\":\"j9shQYauV2LnJlTCzG2IUZXUkv410N5XqP24eEmpOp0SV8yQqpK81B1OycVd7n40IwRj6EVzwZFdCSn2s68GnAmFdzbI681o0n8a\",\"field7\":\"5vojGG84q34OvWHnAdiVWXkULU3CeIdZymvlDtqhj9B05E0c5wtwJJ2r6IlFjOG2ixF2KgonGJoW8r19lXdFKI7oefeZv3JYurN4\",\"field6\":\"h3wLWpD4OIjAmVmLkv56ebevWu4VWWvVu9dsXVKeIg2AobGaqkDKCfZyDmDGbp2lv1bCh1WPZUy8n1r6dJoGD9BMfwHMB0AU1NsX\",\"field9\":\"nQVHcT3aBZBZ7NYdi2WcVxu4FCGAQOFfQvhzwlJdTR2Jk9LLruZWdEPiCVKawk0Eeqr9eo5U5ZEgJTq59toi9GdCYbEm4RT9zfcr\",\"field8\":\"odpOhMkwHJxLcTtNJYCa9tXWkZilZxZhsJzb8SPejDCic9y54JcptsIGtwTPVNTB1XpZpEzRnq7fTE5SkEtG27LmIIy3gp87KXja\",\"field3\":\"8jy27EksI3kVYD0g4LtDkMxXGn8s9b4HR7fQlMLvnfjxjIeFeIKitMnpRBqtnlJXnZDD7wcZsMBAY0AEDspVJhTadMWZpIMIzhlU\",\"field2\":\"H17M2j7PTdhKsZPWf3AAdek6MmP3uy7n3HpAxJP5PFiQEW9ZIohDOYqTzCovwR1ttypaT2lUytD1xhlmTAlBlSvK8S2oTcKoxNzR\",\"field5\":\"j64KToqg9z2pHrgGqXYG8unVq25JlxljwgkG3pZLcgtJw6UXz3j7CokwQq6xkRKCARiafTSiY7XY8Vn2TjrM4kCCoq7TJGiH4Bfo\",\"field4\":\"4zbo8nxW4ZHxjm9TASBqre5rCRwQ0vWiPVXClgWy4nGz0ZMrAYLnBQy6iTJirO70bqIWt1nrNPR2wQJu4NlbD3trNElvEGUPVSmd\"}},{\"stream\":\"gen:60\",\"id\":\"1730880588477-5\",\"body\":{\"field1\":\"ZLDOPyqhzNoIycKpL8Q7ERDbAsEXx7dqGSzFHVM6AyJGwRpFPeSRYNrQSsyq5s8KbB7gRtgkx8sHVv7pm01v9uy24ygjwOkwDKVO\",\"field10\":\"IKV43QmihUZW5EEbOqD1sPoFbAXFnmY1F08yf5QRjdtC1HvdjPCfvZFeZyXhx3IlsulZ0yNm6kkyrb5ReQRt2HueHrivYLjhOyXL\",\"field7\":\"72uQ9eO330NCZeCPsHiOTnma9rHZBk1dU9XyEExBJlxvHxG3mmqFcff7OcFDW0QzF4KqtNargpcKjeEO5eIYWJdVlXCZLux8nLxc\",\"field6\":\"tY9UiusWrsEg89lVbwuvMHVIBhscBF8SEMEPDY2aPBPOg7g5gZH3uZFJC1NGX9H6Syv7geWc4rU1Il3uDz0Gga0if0biHR04Ff4D\",\"field9\":\"hbII7GTgkzncZOhyYKTMTo8pweFeBlx4rMBHHigkwsYGNaGJVl89x2mgRLTUhvqOfrk51rVE0M6TVJXmZNMu7iJjXXBvHW6kCOb1\",\"field8\":\"SnG9w9H8lCzqbHWBcgCfLj0yRjcnzJYE27fLVva35Xe4HgGkk0eFBeI4itBpRh1BdbrRCZ1C8SZXsuu24Mzg1oy8JARQ5Tk2VkFO\",\"field3\":\"bJ3xvJZa0J6GkGGocZroAC2vWosTDoQGg6BgZrA5QgKSA0lgU2pelfuxcuLwnXhFDi2aiH0G9BIkECqoCWEy8WgNxRqdixjpfnck\",\"field2\":\"dRUZ99BCvzG2zFcLSXvYwZ11kR8rJ0IP1iZtJACh7LuvZQFnWc5uxCXagDvopAajQKsg8P7a128qfZphjQzA34l6qzFFpeZRTlG7\",\"field5\":\"VwfN9O80bEdPPhQhNJjS9oUyJVM7mnEbN0h1E5xl9iI7EV5HCUZSWp9RhOhaBPziowi6qJsuCBWHidqTEw7LMidZNj1pf9JQzqVe\",\"field4\":\"NG61ohPpHupNtvV6YVEiB84VaGr6Wcv7apibLqNnw9qWAOjDbS6xhhxaUMUERgEa39HHZT1qHsnbpEu1l5UWJE05XFVkuxpXKPGi\"}},{\"stream\":\"gen:60\",\"id\":\"1730880588477-6\",\"body\":{\"field1\":\"xQIy18sWADjcVLO3BYVZ9RS010KPSVUQ7H5TMSjb8fm8Pyxp0x8wqj9uUDp0yqvqHjAc5cFvocPLOobF66RbQtBVzlWAk14f0O3Y\",\"field10\":\"xsH5xCJp5RMwfuNTOW9fnXiUIX9cizfNnNkECCcRmpmCyrcdeBSW6DRZwqBd1SCAKpLSSNRho7V3axDg1HSSFA7fHDTryrlHvuBu\",\"field7\":\"u31xFR7gyR1AIRxdGJB9bcz8vycLE9MzdH0x3PP5tIkHzAGsC8OFfBDLv45hEtZpcKS1aX4n4Vx1edR8aYhtToyhTrjqoT8Tdsax\",\"field6\":\"VgYATVL7xMu6HN2CQp8AaCdrkGP99UcbyBiilpWz5DAxBAgze5MCx1I4SAjtgzDLlKOFoUZLsUzb36fIMtW6dNWWfdg77VRHk7Ts\",\"field9\":\"U52GyLXob23r8rm5JpCU9CddLDp6wRK5xlU0btSYsvLQvNHxohjIUWtFd1cWdCqyjXXWszaykypHatNzdMyBPQuxXraraFmAnt7J\",\"field8\":\"G7bAsXsEjdLnuKS2Gi4LSQGMcodpqOvXs1VgNlyc1fg9JXhvACGMWqB9hLodBlMUVH1o6eJ1SUTWz9ZZuYyAGHpsuwm1tXEHVqNq\",\"field3\":\"Na5HEExKIRCm9H7pKsexQJ3KW25pxRxMhZ94ufxeeylswdIpxKqYUmRPyxEFja2IiZLoWgUVETry1UgWe6w21dKWngMCU75fEES9\",\"field2\":\"0Dg9M9Y4pxw5bSvkhkEBc5XCFCIs9ecfgcpogh2ppdX4HLH4ug0vP6I101ULNVrOFlfMktnAIjKJQxZwWEsoinOSZEWvFb157fia\",\"field5\":\"r6RZ0PrXk6VAmkb9IBHSDw6AwBt40AoKkmOsWpZN01hHMB1fa5rTAJb7siLiFwHA4k0WDK5N0c4lTrUX5WgsZ4Ilv8qdFGgPzF7S\",\"field4\":\"83Cq6Ket8E2m9UqM63WsIq2KIjwdvCiQsCJh2dzqw6Wc8pLwe55kKcSZxY5Q2q6BNSEON7F47HTyre3Rqz7mPhMLHkNmE25QISOe\"}},{\"stream\":\"gen:60\",\"id\":\"1730880588477-7\",\"body\":{\"field1\":\"UxDHt6vZbGF2BR3fZ1c7eScUR0M7OmyCkHssvsveQCx1VxAvdBKLV7ScZZH4pAK535o7vBoRtVhzK0dc2hB92qocOmaClG3TtRUp\",\"field10\":\"OBcuJBJLUhmRjW5pyHo7Qa9pYTcbJskwwbOyfKUCTLWpPrkh5rwgRMpJ5qLDJVLceDlIOtVXaVlfg7bpq2vuMEucP6chpHkUf4iz\",\"field7\":\"1E7ZDLpQdX3vvKtiJL6v8V0Fr2Lg4SL2mZuZVLxzzjkbMgJUeCoExkTAjsBYovjwe5uHhoyxObzn9fupntmWqgXnbOKmYtq0PKbE\",\"field6\":\"eOGEie7LRYXjGOPZsHa6xnKM6tbO9RVY66bGMpAaFvHYnG7MmBU0ZAufg1BQBOyEsJELVkxbnv1ZUX02pULgegJHcOBcx9DivZW7\",\"field9\":\"yphQHiadAHbd4POdJPFa6XZFJqstZzEUOd8s25RijUPSNVVxYxwXwRswfeE9cjzY3wZhXyX43PY4DKX0llfWFLKIGTuL5z6ABkcg\",\"field8\":\"TULkSLtsFBNYBWI9oWICgU0uEQ0dxh3c81reqe0ahs3Gw5nRvPHXVKqOM7S86rlWGarMfs0eSCFCIROZmdOB7V2SwuECAnS8lfh3\",\"field3\":\"3UsEmGf60upaST52hcN5vxoccGk9q3wHHSGuUNYLVFbRKbdYrukYLBqWfZ2iZb1eizMx93XSIIgz9Ija3PVKCFTqX2jDTHYWLYCK\",\"field2\":\"AIk5cPRbpulhHHRC2GA96UxMbQvPgqSfKHVDTPco0cHYxSKbh4tTiUwYtcjO7KHAo6wRtIwROqDrudGrdnjMMNQjRT5rEx6gxOek\",\"field5\":\"1xoPS9gtCl7rj8tlgkjSOs8Ryok6Oa4aWBPpnhTzzSxCBmMo0IJFvXVVoB3wQehgM6bP4GyrrKgMFhh165rcPSEAEdKvGHnkR3XH\",\"field4\":\"IBY2vCscD2QglpPUrQHhefw8sGu5fDWMBiY5LQ2klcUtgdVqbQMzGwNNTyuYpBkb74OC3F7LaoXfu16ohddUUJ8SznVSkSUTTA2b\"}},{\"stream\":\"gen:60\",\"id\":\"1730880588477-8\",\"body\":{\"field1\":\"i63EwNhn8rIxKAXAAxW0NwjNyj1JU7eAtY92S6jHDer7rQQHjYi61sySglEjQxrGEwMTc3w7rQZRj88S21XuDMrCzqKQENrps3nK\",\"field10\":\"oFctf5Tv0j21K77xZqQq4UkHxdy62qQaCkokEVu6AXMMpFJIb0B56upmYA5bTBD8ncsngbL1475T38sJgwFV1xw8YOQPRdp88XB7\",\"field7\":\"4yczwxxK3McRO4QesWgrmLbnpXVxc2joGbshJpl2rNSFuNL02e0RFOF5yJhgO5dwy533Cj9dqSLSvOUeK8IGEZkm1EBY5kCONuqo\",\"field6\":\"QJrhkUdBPFMP20ebJoN3efjjUWLg7PjRE366tr4s1JHeIE29f2oMJJP6F5WLoyLxycqYQFyYrxlTfXTtxbUI8EJ5Z5RGj29D4Dwl\",\"field9\":\"5zXeZrj6Tq3Q8ZXKE2jGlXsrpPoNYGSIS6N1FLLaGEZQLKIn0vz0Rpfpkl3z9bjMTVvEz0cvTx7CTr0bAwPSzlGbI7UlCWPyLcT6\",\"field8\":\"coPCYmlEujTsoWm9EPMTI3RpzRVTxO0NjHvqV9tVVcBx31svfnAQl3vsTFNFDQkGfJhLN0j0hfvEzu2os8RRdndYfb1i5Neqx8hz\",\"field3\":\"j5lSg6UJXpWHeBjOSviiJEbhl6aNeEQEwHSw24aFGJBAk0pCOcILrizmy0S6hGeAelXgrSmwQAlZUcmRbNZ42ZSNrlxTGWf6mXtK\",\"field2\":\"8s1tP1bGFWAVUm4hXiMPotyZn8KKhjV4doUZTWi5ga6lRBIjDApY47GKfiCBl98t3mih79o6AoJuPWUA1uOMYsVC3F27LVP9Gt5w\",\"field5\":\"UDRrP5LNPn65MTwwvpMaFe70wtIdjohHbTLOnMbaa0NyH1T3rwbVwhrkF6rYb8mtbUmYiqKIGe53O4qly8jyTNv2IuNnPaibzReL\",\"field4\":\"uV1HaD4wGyRkk4O0hNANZxwpwEGuCmRMYwccph7KZCZ6DP7aO4g46fvXi2fa2EP2LTVKvwKpVRAItBNwSE2J3cKSKuhJljTUy6CK\"}},{\"stream\":\"gen:60\",\"id\":\"1730880588477-9\",\"body\":{\"field1\":\"iVLEeB3Fnorx0ZnxZCTTBcH5GqJHun3ao3QKbdZS2udyRc7ChS3TmGSKZ7N3TRPbfelBzs6pWkm7ew8X40Canf2lfr28psMgd2DS\",\"field10\":\"KK6tiEOtfLUz21v0voQIrIo0cToyXE90X6SOnc7PPR7VAtCWDGf4vr5vznnRh6aqP9Ky8O6Hiydkd50itZQSvVzWMHR3Ql1J4Fk4\",\"field7\":\"0tRwIZ15lYnM9bB0YWwGwtu5Q7YrYzdTOBvJXQUDZqzsI6xpxWFF2drNL1euOFRot7oIZYbC6D7JBIN5GQ9cxtOPfsVDjrV3icMr\",\"field6\":\"ViDJddxlclrKLHwMsWKWzzlvqJsFdpwqEqPl2TCkiJh9Ycscwde7W196OIgYtffn1TDSJ8RvGFRTvanFhVqriVVctLPMnmRZTLMq\",\"field9\":\"Fh1zvvkpgGMJeZxlglmEIunDspnavKQRouLKFPPlw7uhGu9Ux11YrnMChdbLBFBFHgT4qkFEYXwthebzn8PzLkophqnQxJ1aFsyq\",\"field8\":\"sayaKsUfNYbCIc5L8aeynvBZcn9YHImCRyqC8lsOu4gENVISbfLE3getU6Q350ZADYuVf52qpHh7NB1ioR3ftXMeCB3dzwGJ7f5d\",\"field3\":\"DkF01PMbNg9SYMEIo3vO8nkFlSNnVAU9zfeF5pgLMfZ4YUdHlBgQgvAgN4VXcIrG6dq85oX0wnISuZmjLEVN01RNlnHKmbkJayEk\",\"field2\":\"aIVZxvbmla6i8aXIqWjWjAczNfucJUkfX7d4Ki1blMth9BI2VymLpdICycjGnOx296bSl2Hkc0fEDvquqsOwGB87EfMpaIFIWNFg\",\"field5\":\"HsFmV2bWvUASSEA3iS49yd4dWHhxx8wmA776l01xAT3V4Q9dRPrOUCWMi2DsDB2aCUlSTSwMJCeo0izlghXzDMbWh7SVAUnkWcug\",\"field4\":\"oid0F6fQbxFFWSd8mg360JDFuQHzSGmqDCOdCg2jIwJ9tzDZzlOPxFzf0zM7u3SV0Z9uu6dVj8hNOVLXj9ipLq0dtugmkzBXLTSz\"}}]},\n {\"key\":\"gen:15\",\"event\":\"scan\",\"timestamp\":1730880592597,\"type\":\"ReJSON-RL\",\"ttl\":-1,\"value\":\"{\\\"field1\\\":\\\"5f7x8UFkVZEStH1nU6dQozBOcifoSiyxzCaVlRKI1t3h7IbkUnGwOYHa1vLWB8cDPpzItKXjE085tGyT5IRdhEwECP51vQQkbD7I\\\",\\\"field10\\\":\\\"fZldAhTqLcCpUYUVysWdC6pWNcUcxawjfZDVD0TfkjBLsqgiloLTW63u6DUEVd3c67UHbbQOJFAxjgA9nRahjqNCazHWrIenRfUg\\\",\\\"field7\\\":\\\"ln9ylHCNdqaQ8gVgTI3gNRVJGV8ZzMVfDtWz72eaqvXn51T0rsd1W5ESAsqIjTwxXCHz1mbgLXmQ6v4FzenHPsZqKsrYN9juosIG\\\",\\\"field6\\\":\\\"ixpWTKmoqE6I1WZBUvFKg4dUssOyv4rBndhTvr1CJeqdvzH9ufZG5XhfYiTBSNwAmqW8cTz7sjMde4SPKbqvGPe2oCuRapfDQTcW\\\",\\\"field9\\\":\\\"12GJcZim94fGZGH50Pr9j6ZMYmMsMus2xJOQXa61rCtKHn2Lj2PnRx3aessSR3LgtSNpnmxdr2GXbegQoU7oE6ylgpmV8XbD3pWj\\\",\\\"field8\\\":\\\"6EtjxahbQIaCzthTIL7BED6wvPqm5ZSgFkTeOO7C1Bf6saPkPMZ9QRAdQM6zJtdVDwHjq4kORLmdHHFNi6ekfXdpKBq76JVtRFFP\\\",\\\"field3\\\":\\\"ldVe12z0aoFmN3Syk273JEs637O12PeRkVylq6GJxMWbVuXxCjghNZWq1I0dQLWyGSvsKyV8owVIfPPwFbmdm5KvVNYWKfc9YdK6\\\",\\\"field2\\\":\\\"ejmHMrRVz5dc71ee313y78xJabQepHBzTRnPuJUAYuIa6hAQ7WG4tGV63rEs3m1h2mj7x11UPjTruME1XuihE7nkSFpYPp3oMtTf\\\",\\\"field5\\\":\\\"UgB9W84n36LOkS4aaqxANkzzCZ6QRX7KHH0JozE9mFfV53KiRnaVgAltgk6Qx5VhAYPwUjM1xv8Muk4wqouVd1Kx7uMoPhjC35pm\\\",\\\"field4\\\":\\\"Z3hDkXdrY6YDCkRIrBl8GCIMdvr9H87omnAYGdDI5OXDddJ9TMdJ3q5UgLbLvnoI2uRzSGDirYzEm0JQjVCdML9WDN9h6YLt92hu\\\"}\"},\n {\"key\":\"gen:82\",\"event\":\"scan\",\"timestamp\":1730880592597,\"type\":\"string\",\"ttl\":-1,\"value\":\"wobtZcJRFfPSD0IIvFlI6qOmuD0rrnKdYvDQCIL5dqSxcELs0I1G87wbiIsmmP0PY79RIs5tjZez1cS9rwaEQdDfrMMQQVWo5PKO\"},\n {\"key\":\"gen:5\",\"event\":\"scan\",\"timestamp\":1730880592597,\"type\":\"string\",\"ttl\":-1,\"value\":\"RQKwYlkjaP5lHCtqjazTvNOzaPT0pyPtWJNlHperO7Jofb2fwynfqRzqhRadd2tFPhw0siHbKWjVTXe81NYWvHBz5jiw40izHLZG\"},\n {\"key\":\"gen:42\",\"event\":\"scan\",\"timestamp\":1730880592597,\"type\":\"hash\",\"ttl\":-1,\"value\":{\"field1\":\"ZWEMUwu3bfYea77fpAY0XrD2X6qyHams8FgHU2KZLIJutqZdS4Kxu7bwrG2i7Cr3bM0cOlyNmYjlanlUtqPMR5FVnh3bqn73lzTk\",\"field10\":\"s7mK0klGKJXEhViVOWaqH92QB7u8vwBPr1wAZEdb3QoZfSrOTDqgZTh9Nb84lTphmh4lBDPQOUTYB3cm1GjVEcFw1XEidQUwFjdC\",\"field7\":\"1tKk2rqjcF5ulvei1n5LLd8alfvODa8NVi3KzyKMt5EqZxmPr87QIVoNHYkQKUlIWbddAsgaD9wScYnbZ5XtNeVrLywEMVkK7in9\",\"field6\":\"075rqYFAdZtNuOU2V5Md7sWrAHrWNdPsf3xEytJ6aAJLVSxtwdxHl7Uy9fKAZAg5wLsOpAriFpjJyPSovMRrUmTf9k2ZX25m6Yrb\",\"field9\":\"gKHYbfhunnsy1t1BRLVzuDYExETAIlAaB8euuEzcWXiA2Ngzkfm61xo1OrXOAYM1vyyLFFsAKCB3Hf7gr6UdJyswX5rx805G9Bvd\",\"field8\":\"RssZaBjcCCVxGOsBpfx9XBBfoWYj44zUSgXIUZtJyaHpdZPN78X9B9F0cOdycQxppordMelthWZ9n6L1B1caeuF7UF2lsxdgusuL\",\"field3\":\"lSw7Q08cIz2TONd6KUSzIxnojDGCgM5tiueQQGBkg5PhfAwO6EeRKEZ9chWaKtwlVjMBkLWSW6G5DzAPXce0SO9f8f3XONX1S0IY\",\"field2\":\"O4iEQIe78Y2JRm32xNRSJ8Be58sqJAkhCdVNHMOYBGB4AYm2PBQgcppbTksSAuSxib4TylNdB5obtiovG5qJlBpkY3elsLGFlaOr\",\"field5\":\"RormzC7XDP7B8l5NLq6vLso75CNaKlP8Tl1q9C0GTS1FbOoyhm4nio8Q2PirQrBqitrc7Zs51hp1dSHKHii9ibfCcStgdFg8VWNO\",\"field4\":\"s0RhdI52YgxMdDNRQB7NlWfbdyfcVy9LfzzpLzVjw0Qo8CJfIPX1cHZ4HCA30XwIgSLXJaly6LTM1RMMpj3B8citxprfTBk1uiA0\"}},\n {\"key\":\"gen:67\",\"event\":\"scan\",\"timestamp\":1730880592597,\"type\":\"stream\",\"ttl\":-1,\"value\":[{\"stream\":\"gen:67\",\"id\":\"1730880588477-0\",\"body\":{\"field1\":\"kXUgk1zzRZkyHHLkefPDhnHto2KADPfdHJJ0BipeEcc6XrtOWUkHu4tS9GzRAv0lL2cjRB3JZSyYfIM680GcsOWdC8Xzr1yGfQ7H\",\"field10\":\"4rGCFvHGYbyfTNz1hgCyuaGBtenr7ogHJTkyLxD0HwlgMCBr2ndL1i6IuvKbwgOKoAi4F5r09WNeArkKYspJX8VIdOzigZM8M79z\",\"field7\":\"Njbw7lfA0ubYWmxr0bqWc7zpJtPzftTCvw5voQNC2b1RVCfkE0kMbvlO7gMXHGpKlxJxxEDI3mnK5zOFqbmIEXXHY3OQGIuLjHpV\",\"field6\":\"GTB3PkYO9nlE7eMmSYLvOBTQTKd21D7VCvLZl4bof30cDSmhTDMWgLi6j3WZ2gHUBCJ7nWVQcMEiq8VHIF1NyGaRbdoFfpXyIQyG\",\"field9\":\"9exSV1lIotqrIsC51GFBeCV4ZZg0FAHbq8F89k2p9zzuKXxAb77e2j6UWDw9pYDIkbefaHgkPZyYTmnJz55aXNuc8jfyFvBsUrIF\",\"field8\":\"9SFHD1GJKuiEv5B4ueXDXhnIeACO69jT38dHSsSNCdrNUrcXnvENdr5219NOdTJFEMjc3bY88utPmA8LFX94OyjylCAoFqVivmGJ\",\"field3\":\"1UXhwkTOa1svA0tP0lwcipja23uhAXfucVCj0dXXmr55GWe4cwV6yezJBDBc9faBBoGBdMFPnTsvnRmFJ7eCg0KqeSV5ch7VQ8lj\",\"field2\":\"oNCl17IBFPH2wnHzqGMBCiM4TBfLOkr0AljMJRFZF8WvEyL6xaSmGTRkY72FdMyLAySc1Moj34ryugWs4EktYGG97XV5NHVxu4MH\",\"field5\":\"JtuyE2iYJN1uhoiciXpszAzEe4hWT7fCOfYqDvd5nTEGa92JxhFy0Ox599P7UWkuBgKSt54EdVS3y2qp1rnWTAkm77euLEw3jfL7\",\"field4\":\"a0bB5yDKts4KOD1iTZ7uh4NHaKQpoe6CYA3rerxXPI7v1pnhmVRlvUW0SndtRGsD1Gs2d3xU6QW0MOeRQv0YlDbPpJV78jJpS8sq\"}},{\"stream\":\"gen:67\",\"id\":\"1730880588477-1\",\"body\":{\"field1\":\"kYA0vURDhfTYzydMO5NKUrzNdmE2cpfYavAWItkENQXyh79UvqUpC4zh9sS59pDnqQxxRpfUocDMGRWWnEGipR2UYgWdVfZLSdz4\",\"field10\":\"oHLnV8JzsxPjUqBT5DQqnFbsTrLLLUKNwUjTlb6cogLO5ibhLi0Zeh2zyQXKLHeItFXqhDP65PfuMbcXHNXZXFrJCuRjhySACqVE\",\"field7\":\"GFl1FBaWjMFdImnA54TyJuN1hTmqR49aMBUXlgmeUvW2bRJhSnizzok1h5lzIsqAujTMIXYNqp8edhPXfk592DrG6zWxsosx1W73\",\"field6\":\"A3G1VtxtvcjyO9fFmorUedAhjqaITEGxSj6sPKBQLbsOwWmzk0hxGcfFlGx3jHMpBWmtOUKTtlxqROcuREkEDl5nuDXqtkxaxiox\",\"field9\":\"daSjDw7XkW8zy7gNjhRR3qKHnl20jWkDusZonHnpPSrKnHLja1YoEMc1yxxKFSNkPXh0fWdh0lMGwb6p8dMSUxusxsMLnGgFUP0f\",\"field8\":\"B0G8eN2jv270GPUqL3gSg4l5G25lgOXgbe4SErjD2fGCT4saShNyIJmkoZQJDndbXAwJsknf0A2lQA54LfrzMV9XR4gwihAiTuIb\",\"field3\":\"cq15dfkGxeFERbxtKGHFDP3OA1UK7n3hpYK7vGVUg27Yvuzaz48i9t2vzCRslJN423ryorY8NMVSDwfvNXAkRezgxhOAfj3va621\",\"field2\":\"PJQdOslpktOCw1UcpWXoa8B0XlDMoPjLkWNsKDzMCvEBLbb011YTlTNny0b4v3l85T0koSzTyfWRDerfdETk4wlKjmdKH71IwCFp\",\"field5\":\"U5iiMPavtetDmCGZ9Lc1cyDQRWhRb9CaTJ9bKRKtLkVQcguX77JilZQyd8mSifSU3018xaqiafdHIygxnwUpQmYX4jXZr7VWJcdM\",\"field4\":\"nPxd2grvAwJMx28cZjFPQDPgSvMSKbQZ3N0CA806StgCNAnUxJzNvj8Ipdq3Xc0O6vJggROQw6VkEkM5e3IZKBcsILWQlbwP1URF\"}},{\"stream\":\"gen:67\",\"id\":\"1730880588477-2\",\"body\":{\"field1\":\"TUaS07C2UmNKmXCklKAPFQi5uGhuzTHiPhhA1ibddektHI3zSJm3KBOOKEa8fmCVjVVKe7ocQt3qKG6ivaB3L8Z4SDWzIelMc4YQ\",\"field10\":\"1beJfEEWstxfwMBUuXSJOrUUpYmI4Tt9XEACdf8HkcayWneDArXSSdr9lzLtu6COjWKBa1FvjXUuPgOt0nDtFbNaycZlDiJsGtVY\",\"field7\":\"QgGW29kF8YCdE51cOnM1bGHbovuT8nan024v5apWiLrf9aHuDGgWO2m3aQK8yTOSocSGkkFTpMoR05FxOA7pnAfzcOi3qlkyjxnN\",\"field6\":\"79rqyyhNPDK8pLXTiLLpCMTONVgjS7b2qTRlHhVowQI2NAftzsZYAXXI7CDfdUIbjjbi126prjG8Kox3QHW9dlpdeNICDxR7fdMa\",\"field9\":\"HYoXtC1bkGqGLCBuTYzASfgx2KWzntAVfV3MOaqtO6z0CfVtsY3VHimcrCbzum9A3A6anWbD04KkRLh361N8YSzoDiQjIOylE2Zt\",\"field8\":\"MP12Uk7uzQhl82G1FF3sZCBYnrWGkXQXQuB1ZfT8wbYlztqCYxlUAkCH2zLE5uaSsWi7knlPfoitW1tOt3m2cJpNMGFHSeBXw6BA\",\"field3\":\"9V1kP26XabA3eadwDZA1Ktf2i8CNIGgGspzYHojq717vDzLEblsY5vjJNuSK1PqEeyM3xy5yFVwFFD4eFucggtI0TtJxZaPW5eiA\",\"field2\":\"RFj1c8jz9XdfzNischhhapBGQxPU8e6skTN8N1nXDiXXPxnmiWiYbSuO73Pu0QfTzsxbcjD6kidXUGXQIfQNn46pi3sXyzsgb8G0\",\"field5\":\"Wn15n80rQjHp1m3vhoAQmmXZPVFYEgMT6sJbNoDcOLTxhndESPx1ABzE2qyGQGXuNlGmR7vP2HEtHcN5gYHjYGimIasgFzWsmNHy\",\"field4\":\"SJL1LXYy9O14NNDuu2orqoULnvQVF3oSHyqH2fGZMFP2VObuLH5yJYCVovrMSdEaSovXab1lX4onRWod6Ag64qQn1C99x8KTNNFc\"}},{\"stream\":\"gen:67\",\"id\":\"1730880588477-3\",\"body\":{\"field1\":\"ABXoBLTBEX3ZwMLQf11TYzIm4wGruiVr3fh6hwCzX4G3PC8DPYam6vgGkVhsRjGIpkS1ATmOo9AtLfSXqGpQFHsQ3kBuxfB6cjYE\",\"field10\":\"zwHxrxUsN5FF3QR9ZlC8Z15S5GFCotMxKf9IFlgKpXhZ1UTIVJ3ovDKi4MWKlO9W2IYGKGrIbVuJuFbqsYO12yWWLKfeBAT112A8\",\"field7\":\"Zb4HvtzDgmG6Y6UzieY5cOU5SWfzFBqSySbmbor2GEq3zQ8Td26kdQnsaP3KKlkVnzqqe2ayjHWIKELO27bSsacqcQ9VAS8pWu5N\",\"field6\":\"j1GyyAcX4ssIT6qghEBUYvuIRqBx3HfFQZwDFGucnsgzF7Wx1uChMrGv2sAzanRFai8SJXKXTcx11LFGOrwZf1N26bqKW5nSpji6\",\"field9\":\"tQcKOE3jsJvjdbGcZKGTcecrzVIax9qu36yNrbzhZ4ci5QjQfKc9mBIeHiie5U5HhS3P4kgIqOhtIncvoTu94MEUEffUzYPXU81K\",\"field8\":\"K6ILdHuhvanI8h8zDhvLodbxbSpciO3mBnlCKozk8wLj4fKkEJzZnizKrseHaZuesWF9xbdf8ByAgNgxn8lvBYCVK8kTcHyj99XG\",\"field3\":\"YS0aPlBNFP1yU0HrSnD2jukmzUo9IVOixkwibAueex2hhuCKRVlPTMG4M2sfhDCwWrVFj1UGmQxrd28zrnaSQqeVP9TWma0xLrFz\",\"field2\":\"q9UCPPXaU25CUlKRaWHewldh2YCZmrrvZhqSIDHIStfLWv9bMaCH6DJw1Lpf7S0Srk0bjwZjeJx568KFurQPY7IsgyLqlouoTUZy\",\"field5\":\"oBCin8GtkuZqp7kzPCRAWLDaYrNeyo85fwYmRadIx1TltefAGU5zIq08oiAEJNneOHkYmuxtlpc1gGnPDWIiwL8xMl6eH5abIOw5\",\"field4\":\"HOvNQsvCkOSwppiJwEYVe3pwu2IIrak8dENhLUDLbrtPPNCKNnzbXDAZPnhVKUyWyBIoFIpLpgNhoK0tEj7yTFRXkSXbtjDAIY5C\"}},{\"stream\":\"gen:67\",\"id\":\"1730880588478-0\",\"body\":{\"field1\":\"7vfCn59xRpbuP5PVlVHoBHMFzdplfBiIDrFHkGAqZJ4szYkd9Cj8rHLRrlL2QGRx8Ck87tvRlUWjAiWzLLHfn9Ojqb2TKozvN1AS\",\"field10\":\"cm9KEdvpyMOcGl2mxDPzCkpIAJf5wETNS830obrWR9dAY9wDrOUDhjeyWlETIgE6Sbi3U2vB1UTvtGyv8r6dTJlolac6L3r6UqnJ\",\"field7\":\"U7K41JpBViRbn13hm8xCnqf4HbTWJ3QLn3Z38d5pXAojYuUaSwBw0aVJ53vIZLDZ6Eu4ns0fCyF1SELwtSYTmOFpPf0fWOabzO1B\",\"field6\":\"mReRx0t92zp7Fm5jrJJ5DFO9Vg29kpAnV7IFeQCC4XEC4kXJHLUgXv2IfXjqyhcwF12jNi461BsPnSLuH1PaWO7kPh6UObcFIgvx\",\"field9\":\"T21F3B9MR3TC25RuYieldwmUwzbdW331OcWp9Mmyb1rV3PlUIAEubPRavQf8zGYz0embC0vq5BQonoZhsbAYBoA5yKYjnzItMmGB\",\"field8\":\"P94PrT4lpmk8gWo6oJiVHjtTAyFYYjJdBcDk8PLShDE6D13H00p2SRbsHldV0q6Ihvfmvuxe4HWqGt6Tw5aXQHxPYWuzQEDzP0l7\",\"field3\":\"Ohd9bY0SSs00STjQn6DHUOoQzdcepurawUlpCN2FDwMu7dJuqq46TUFuDYl4zJoHNFrnncZqrDXvlXvJWZCUZzzBEFi2M3KK1JSv\",\"field2\":\"Uw8QGmddeCeyxggbbAaYqQWMb568s4HFNr3pOyopUnBp2hAVJdK0GftpPU3mMMzY10fx83EMZbx80fRz3ovuCH6h2N0AWNz6FwD4\",\"field5\":\"9iO8LzpoGnnpngHW1W7xSejArCbIvGBKw0mhmOcVul2qVsSkFYYrucarMxnQyW5qizCKPkCNEkuO0asHRFu3f5yQh6PYM0hrIJ5K\",\"field4\":\"RnTDVGUHiIHjBQyadqj32KJXVGfPK1hHc25lDP81QOnNKNK2iOZcZQDjjMC0D2NNBBxYRf5JB2KHNo0f4MLkbynQqjZDRao3Tvd9\"}},{\"stream\":\"gen:67\",\"id\":\"1730880588478-1\",\"body\":{\"field1\":\"OMc6DJTdiQJ9DEGMqkThwWwW71nFnUIR6KayzT9Hcpan8B2eTOT8vEhW2LHVGO25cyK0n8VlkwpJoIOZzi9rQ8SAfmLtIrUekMTi\",\"field10\":\"1igb5pdsRbO0EQfYlhnWW9g3PdfTZ1gQni1GqmxcomPL204n2mqkiPj24Obpn2MupX6DF6uOFIalrFhfnkad11DCv1ONBZflDJG5\",\"field7\":\"EGEmQ0h6JWb20fEFoFEqc90vVc1JSs3FdVUIMZmk8bhTQ06MgS9W1UXxLG3veO3OeanDXvLIjnGZW9kS2cT2OS14iifd7HuRSZWa\",\"field6\":\"nDa96iynpGxthaSRv30jSQW9g2t2ErvS2TyJmaCdjySQnUvFxzv5wxtwLp89311IpJ1juhibxbQinm1quPaeI3XGy1uTUSNOoBgd\",\"field9\":\"DrrRWoMl8zPLG0ph7cYPWm8L87GjWguAhbCk41XEVklJKI0BPqrvsCkpomOUFvlVTJHmdVVBTNm6pSSNTrEqjGCZMkXxSJFgbfT5\",\"field8\":\"6a6RMQJJDav3LlMuYDTcIueNHXNm1zes2Hl61v2AaYyksm1hxBlOs4Y5zHgQv9Mhkc1gv4FQLBkXofH1guTN5nhsvFskgX4Ypo2F\",\"field3\":\"L364Ykcegh8Li7XmgkxqocdXdMTxmAcB5p9fjVNZqQ7uqDj7xj2ParpwF82EzkXmMStLgfEbyHcaozQk25nJQ2tHg8KMxoa5DvAw\",\"field2\":\"XTrXAJbgglhbEoKt1olLvO5z4X3HhPBHpRfaPboMKXXHtDFV9BtYX3Z5ymqA9e6vMHju10j5GcCqEM41fAEvzde5MolwdPoRP3eO\",\"field5\":\"hmtZ0HTWVg9FTnW1eIf9NaldLPyUFoSAnWGdGntnkHYO7snHnU7PiyhJF7GWQjeGN0xBVqo5IZ9y6wkquxCmKYDGPvmrxfgWl28X\",\"field4\":\"F68ajpDtkgF0k3BXseJ5N7WbPSOReLQko4d6tHkE8TXyFoeCFbNHM6HA2gLUiCMBR7kCflqFrJVeDvC3zIkpAohK9kKpMlPACXye\"}},{\"stream\":\"gen:67\",\"id\":\"1730880588478-2\",\"body\":{\"field1\":\"EMYOtOhm7ABvD7rMV35OUdZQKSW0lyTA7l3VZYCRJUAUQ0GsswaOgBVhK92xGrEsd8cTHNGmI2uNYTMzjSYIf2U0pyMjxXpOPyFx\",\"field10\":\"cXLQvomlFKObn18gktOzWmXl2AUtpgxLz8K48fNPC0Gr3Z2IegCiyhBxNhkf3iv42mM9n3XD9MPasuzzmAXnYr2mt5cPX5cwnfug\",\"field7\":\"mYPzXzPYroOwvaxws5UMnREF5nUgVC68lm9axdg4WHOXW7Gu3LUzH1ksgerodturVqfYHdEgUMB5aFpDRm4iHtJ5Ilo1tiyAz4JF\",\"field6\":\"TEeG1rjCZpEX4trMl2d3vz3a0Ekl1U4dsTlYpDA0CGayt43xdQFwoKMnZMvI9RbKJ7PNzVFw1CRpqnTXWBz8pqWzCAQvEmm1qW8e\",\"field9\":\"5vHMgEYJAxN7xHfvZAga0QTi0DzJirIwHRXcNf1GEZ0weOnMT01JLoAqJdIz2D5aZysl5cEt8AiYwowHTaogoCgs2E5rlKCJ8Rah\",\"field8\":\"x9pNa2wPWP6PtFjTzggZJqZ3dt1qNcpy8A3DqYMfyU16tcTHejg9FBvNHK9e7j4tnoQ8TZMT8ydqEcyCYfaOXgD6ZsWZdyBfxhbX\",\"field3\":\"LDgmKMpCRxCzDvMYa8x7SZvVIuk6Ftkfzd9K9V54YTP5GjRec9NtczxJBfFRNutlQIJBVUtCaSMLawfFX6emWnzy16u14GnDT1Tv\",\"field2\":\"hNa0o23Lq9CIkPjWBfx8vmKzYXUHg9H3DQWnJdtz80DFBd6s2fGVEDrBzn3CPLOPYO9E4ycxGknFyHfstdsI0baAiV4mxFPic5a4\",\"field5\":\"gO6zapphsDFpve7gjMtatFjYay8b9QIeJDvrZZFISCHV9W4Yg793Op1jqmwwClVABZdWNsZorUsUaDB4OTbiWrQQvvHbn8UY5hwk\",\"field4\":\"s9lCZU8EQmR7lTr7IFjCi3wdpjjb1ijW98yHsQSzkdAkF57iZvLEWQTVIM1mPvAeTat8Aik80uBAJTUBejNZjPc1p344cWcyXSQK\"}},{\"stream\":\"gen:67\",\"id\":\"1730880588478-3\",\"body\":{\"field1\":\"jnNooW1mKMpBJqyGCZDiqQTl2E5rXXjdQnXJClUhaf4GTkcnIPiB0Ae149YY01Uh87jhCN7pXmQ4OGigtRXkVOZmShnBNlOgWbHM\",\"field10\":\"a5g78gV2hLh3IEnhhJIPN0pS7HFaLR6IWOn4VQqNstlvk3MOCXavhbcmWaZbrIo2KW4mZ1SUpaAB3KBc3kiKTGcdgRIWfA4APAGH\",\"field7\":\"wZ7389frnSZjO3qYtBY1ij6xsvYFfZ3KYFZoWy3Vk42X1D0shGsJELruCtLMCmd4MDCOIay0KTHYqb2nTVl3j17IR50GTlD3dbiL\",\"field6\":\"Jn6s6eFCnRyPwH682DpPAV8Ubz4htTDwxeTrEMDls4UzDHeB4ocI70DykCRDFk7Ffa9kh7vtbXAAKm7kNRjLJ87nSLe1DgF7SWjJ\",\"field9\":\"INnNtEWBct3tmoOoaxTo6CnUuI3adJLXtZfmd4ab6o3V5fnRAEIurTa4hDMhwDOwm6OTk7WWlC1I1GOm9waigdcKKs9AGwE6KcDv\",\"field8\":\"t2KAdv8V5wzJQmI3ZyNUc9fpESS9DRvmxO3ljupSD6okpigdvMmhGvM8rcqLXZuBjh2Ut2ZmuJt1BY44FLy2xHwSjE4OgnzYGbzz\",\"field3\":\"935Rc5UMgHn6XnQZjdMxj3D8yL2kyHXDQYAGrTk0XeifQqfc71rnQKunU0mWXpAhTVctdpEWKiomCSsiif1kHnsLA9ksQBSRLH86\",\"field2\":\"9itXyBkzvUnNgxDfriAd6q6jM9XKYyiwlydUnCM90pDKztrfIgodLgVdHpt6hEAZlTvw6yUEKJhSHt8FxYuu5veaMbpayiaBRc5b\",\"field5\":\"MBokgwxLTKzOIUm4TDXNaWwkZizopyBrh8ehBEJd06dol2cvPvfUk7iQq18PtQdRDhVXXdKwtNe5W1k7bSKtKR964dGKDXHQmtPJ\",\"field4\":\"HfVYlAT7GnruwObg3R2P4ZzCUsdV8ihDF6WUO1zg385UNYhCSrfQ0dLeaK36xbyTJ25WjGA3kHYce6RID0ykX7vZqENhVxcqzHGG\"}},{\"stream\":\"gen:67\",\"id\":\"1730880588478-4\",\"body\":{\"field1\":\"xarW7ZFxqfUPWs047EflsL7WNVFdpWoQVmS7Ywo3Gqam8Hi3AQB4HPK92NAn7rNNBjLG3icZtIhNcgwu6vaEL1FZ7ma8yGyXJvEd\",\"field10\":\"MbIRNIa5sPi5IGSLGfmwIOYBahIVioLgXqJJf9XS0FHvOdNyA9CAM7m5LTm88wehUz07QWdaFC11fFk0RrLx0NILwdVoHnDlcH13\",\"field7\":\"YCOO0LaOHzyZQ3dWNWQoLSqlJbZiHQK6X0eYTlxWYO1KSnr1uAqerVAKquQwNa0xQJfw1K7SjTGPAmmU2jMKDJpcWvb0aS4l1kpk\",\"field6\":\"Fole7cOrtlw7AKBa3HggYjSrgLWFiCBByfsBR8X0u6CJADKXEUNdSRmYJlkqIJSSHKjX9OWoLMvoUzxXxHBDFIzaE3OToMjitXsy\",\"field9\":\"R0BoYXq6IWUjvPLOy4QNYfqeeUn5qw46p4CK42jLF6QDAXPuQoMQSbw8pOegrF2WGGoE9hEXppGnYeZoTC9FpmDAkpzOXtKU8IHN\",\"field8\":\"5eSqpw8Xzv6sFFalqL0wlPUnqrtsciLbwzyTKm41QW3Y0mdz91WsHw0hflJAtNQ64txit7HTc9FVDmPZAIMf5acbeZruLM9ZLq0O\",\"field3\":\"aN582izaKaIzMSQoJup8aC3m9csjpXVvfvgRMc1vlFJRmoyoeIcYM6LRemx3MZN4OXxhRCaGWM0jKcoLK3JYCDNpccTLyAhYQw8N\",\"field2\":\"l9L1rsYKxgUotSmzlV88drwkaADrDWGmpP0oYgFXiK15ki3u7gSFVdULxcoWrvFLLZ9dvqmWlDCcBhO3SvyetQOkTrBn0PsaXsdo\",\"field5\":\"LrisI0wgvpP0MVd0ZarqGInMEfq1n9SN7mzcPKmkEogZUEG1d538C3TMQ7A97xRqmng8fBUGKTXZUA5pKBVuet5F3vaJ8qRRYyX7\",\"field4\":\"fOHB5Ee5OLLg4fhr4Kf395ftebADSsck6kX2BXFjU9AqT3ESf0tQmfMfubEOGLROXbdjWasOUsCKswRqDfLFupfPiwt2OwuyfFEL\"}},{\"stream\":\"gen:67\",\"id\":\"1730880588478-5\",\"body\":{\"field1\":\"mRNszSR1I6EBNFp0tqpiRED0w6PXkREmo4CemvU69XqdUl2SjEIr8hx2GuQPxTp3EIH96zwgHMgwejKifmnHgvsbc39TteMFnALO\",\"field10\":\"9YYGQG32DdWVB4BHCLZoBk1kdPHFKTQdIgK6lfb1wjFqVvks435nDFStajVlb97ZXnzZISaJzgPHujSoHAYMX5pRoGU5TNiU8DGh\",\"field7\":\"7sCOqcnxZOHINVMMjyiyF2x7XzYA1c0Ofy653wd9NOqx3CNA4KMwBeiPNkYJ3lggXQ3JlmZAWhL9EtbqzLaCQ6T1jCj2A5jpmFGW\",\"field6\":\"ZEXovCmtEF4MuI08kLPSqFPoHbaGpbF0dEImXy2TCJBMNFGqgPF479wFfjSxQZtqlMU08krRhIZPR6jt7ascPzKrz2MztzkoPvvd\",\"field9\":\"O5HhG7GGz96xNQHT3b2yXwO8yyJ3TEfRMdj3OQIhV7UvERMImUqafJib7GyoCYh5UKR7g2w8NZjzIzkw1TJx9l2L8UdBEjapb4af\",\"field8\":\"Qhwqr1d4zYk7uajLC9JGgTizn4ngDMoW0za4nTePi0U01iaAmQ7EuGu3V22SIfU6ZNFjsy0zzDEugNyFii6SDmzLLwkklDAQRckf\",\"field3\":\"mOOrgLacp0HmQgSwvnN2Bkk90g9xOcUuRggmswVZcg8U00dDegitw7a8gHqNHBjyuahxtx008bGADE7NRytmhKwj7hK7IdpDB4i1\",\"field2\":\"wQU6EhjhoWSHIY8Wn81gYLCFynaaAaChXxjbibwp6PWYK294MlOhYUb3T7jUVkXE15RBDVjsygTCV71EM8N9xRHfsAk1aYmgdrmr\",\"field5\":\"FgP7KqpxIf3m0DvFed4eHAwIlLxujFzTVsOE8h8pj1oEusar10Tl2N7MwA7DkI0L6NVyM42maA4F2NsbQmrlp8rzEWO5ibSUiJDo\",\"field4\":\"EGWEQdIzaumHo4jrEzDuGTWolL0mpw31oMMqR4EOtwAtvbORuu42Bf6gjjAYjLfKD9KU8Ld6K6r0cU158fNKbyL0TmG2xmG9VP8v\"}}]},\n {\"key\":\"gen:36\",\"event\":\"scan\",\"timestamp\":1730880592597,\"type\":\"ReJSON-RL\",\"ttl\":-1,\"value\":\"{\\\"field1\\\":\\\"CWtCJOLwn86M2Uzem95pEhWuJ0NWaYTjQb77QWmYGxZIEYf9Ou6I84obsMFHnHrJNg01lqQ8GuQQbuwjkELChpBZnn5g0UprK9sB\\\",\\\"field10\\\":\\\"IHsALBUfaugwEG5VKjetvVQOpWTWOl9xpSsSLSz7FkuyyMarC96LTYOKQZqSlQ6m0BfZ2B9KLW9SdAR3pxZAH5MrfsMpYlipNY0a\\\",\\\"field7\\\":\\\"hcT8WNDkXRS9noEvrqFlBeNMCG7JWv2R0Yy5DBOr8gwjwdinuO4Rc04LQP7bixiBqZ0xdh4lvazl3UUl9IUsZ0AlxgfwhD8zMnk8\\\",\\\"field6\\\":\\\"L1UITyDCnYZD7XALv5PWjkhxm1qT7gDnPGxtkIJrcm2KyFOObOkJofyJcezVSIcscRrAmjgj1Ju0WxbfFl0PGnQdTYli7miVJLaB\\\",\\\"field9\\\":\\\"HwJSrT9nCs3rCk6L5SVxFK52eiF8MJWoCpk5xklSqEs0KT67cPJo1iLd1zJswMx3LqMvJLogFHpRKr9WInN3n9Kh7YPFTPciGusg\\\",\\\"field8\\\":\\\"6NVyOGfSJzu20sV4fgK8N4AguqPGDyV23FV88QpS6ELTWF8yw6UOeP2fyOdEdirgWZWDOmQ0RLsQxqI2OmMA7Hadq1fMawV4CbtG\\\",\\\"field3\\\":\\\"Ehtk73LPoF61ch0rcGDpWUwhiWMVWNK9ttWIKIr5C9KpNV8MdsEcBSF1r2z5OZ7m05mOETOYlENVBoXRKBwEgLu4cMNOjKE6YYv9\\\",\\\"field2\\\":\\\"AYn1DwI9e7vLyH0E1ZHPVyOvXHGn2gsvzjhRcz3BpT7DyMAaXaTak86inBBg3yfDD3XCf1MK9YQImHfTbZZwGai77Fx02mmzchYc\\\",\\\"field5\\\":\\\"iRe3w33Cdk9fdjwoJWLOyfU40dSvozTRsQPVUaXMHZLSoNRswub3Vs1o9py8KJJs5HQ2UzbsNXaxr2M56PAqF31VD17vF5JbFrfT\\\",\\\"field4\\\":\\\"2Pf39d1NSfRKVwsQJcNFZF4P052QMxSURfNvpLCSwjGOrT4aPb5jsG0BlPvz62WmnTAjKP2fpul3mKCHImVz3tnQbIS69odymN3d\\\"}\"},\n {\"key\":\"gen:41\",\"event\":\"scan\",\"timestamp\":1730880592597,\"type\":\"zset\",\"ttl\":-1,\"value\":[{\"value\":\"20\",\"score\":5.419355837900264},{\"value\":\"65\",\"score\":39.85054382474571},{\"value\":\"80\",\"score\":77.15546658316882},{\"value\":\"47\",\"score\":32.10621649805617},{\"value\":\"85\",\"score\":8.045677961045339},{\"value\":\"43\",\"score\":50.600634008329614},{\"value\":\"96\",\"score\":30.240943268535002},{\"value\":\"88\",\"score\":46.6365117399498},{\"value\":\"14\",\"score\":26.61769093637073},{\"value\":\"34\",\"score\":20.717697803245382},{\"value\":\"10\",\"score\":20.92158135204435},{\"value\":\"4\",\"score\":70.84179385879962},{\"value\":\"1\",\"score\":88.01672557473566},{\"value\":\"37\",\"score\":58.15119036078744},{\"value\":\"95\",\"score\":67.16754403664571},{\"value\":\"45\",\"score\":66.62278846558047},{\"value\":\"97\",\"score\":24.996513903650484},{\"value\":\"75\",\"score\":32.907620579812715},{\"value\":\"33\",\"score\":52.31279749697111},{\"value\":\"63\",\"score\":16.29686928017523},{\"value\":\"74\",\"score\":63.74728266128531},{\"value\":\"17\",\"score\":91.62740265824328},{\"value\":\"91\",\"score\":4.391251161696941},{\"value\":\"29\",\"score\":38.14375534542953},{\"value\":\"49\",\"score\":11.882297636689243},{\"value\":\"81\",\"score\":41.681777492797536},{\"value\":\"5\",\"score\":16.986408821154107},{\"value\":\"6\",\"score\":99.50364835460206},{\"value\":\"73\",\"score\":28.059491164259555},{\"value\":\"61\",\"score\":23.72579854023227},{\"value\":\"22\",\"score\":91.55260601271951},{\"value\":\"66\",\"score\":24.746876991288914},{\"value\":\"11\",\"score\":27.38301306940051},{\"value\":\"54\",\"score\":63.86210771456555},{\"value\":\"52\",\"score\":24.11607495762993},{\"value\":\"9\",\"score\":30.91010172295737},{\"value\":\"41\",\"score\":68.81617207400843},{\"value\":\"19\",\"score\":85.39725280052018},{\"value\":\"50\",\"score\":28.887577268971487},{\"value\":\"72\",\"score\":30.83937291332921},{\"value\":\"79\",\"score\":87.89990558574131},{\"value\":\"21\",\"score\":92.324962630468},{\"value\":\"13\",\"score\":10.930925075336773},{\"value\":\"99\",\"score\":11.24860610877285},{\"value\":\"40\",\"score\":45.96465660565914},{\"value\":\"2\",\"score\":80.60940108029297},{\"value\":\"25\",\"score\":85.87922201850645},{\"value\":\"18\",\"score\":26.333787116998984},{\"value\":\"78\",\"score\":30.094990047257852},{\"value\":\"58\",\"score\":29.279370271490013},{\"value\":\"53\",\"score\":48.31918850711324},{\"value\":\"51\",\"score\":19.214490453989065},{\"value\":\"93\",\"score\":79.21480547812718},{\"value\":\"60\",\"score\":64.3650948726806},{\"value\":\"27\",\"score\":98.95184803370861},{\"value\":\"84\",\"score\":65.58930658719065},{\"value\":\"56\",\"score\":36.547836441548455},{\"value\":\"64\",\"score\":79.93251302220044},{\"value\":\"7\",\"score\":5.6331061942431315},{\"value\":\"67\",\"score\":79.60980118529851},{\"value\":\"8\",\"score\":11.21318435512726},{\"value\":\"23\",\"score\":23.01108643945511},{\"value\":\"16\",\"score\":48.48980468019399},{\"value\":\"71\",\"score\":5.838168297187285},{\"value\":\"69\",\"score\":72.81712670869895},{\"value\":\"3\",\"score\":73.3076951072938},{\"value\":\"46\",\"score\":32.49465028625328},{\"value\":\"26\",\"score\":7.723408275289145},{\"value\":\"100\",\"score\":56.79549224554252},{\"value\":\"87\",\"score\":19.347423089891002},{\"value\":\"36\",\"score\":7.603634494697853},{\"value\":\"94\",\"score\":20.382801471860745},{\"value\":\"77\",\"score\":30.088662915159738},{\"value\":\"12\",\"score\":4.277987000675154},{\"value\":\"31\",\"score\":88.61442353706137},{\"value\":\"57\",\"score\":36.84796271713719},{\"value\":\"86\",\"score\":52.41306358619926},{\"value\":\"92\",\"score\":34.277956821630184},{\"value\":\"35\",\"score\":12.766860119652335},{\"value\":\"68\",\"score\":19.418887583964374},{\"value\":\"39\",\"score\":27.181948821498004},{\"value\":\"24\",\"score\":78.57784600661675},{\"value\":\"70\",\"score\":81.02007567112489},{\"value\":\"89\",\"score\":9.135858372627204},{\"value\":\"30\",\"score\":44.62219580756673},{\"value\":\"48\",\"score\":27.357822077520133},{\"value\":\"28\",\"score\":33.36969932601397},{\"value\":\"15\",\"score\":57.29181354115403},{\"value\":\"44\",\"score\":80.48311857896671},{\"value\":\"38\",\"score\":55.34767499324038},{\"value\":\"98\",\"score\":96.12710132943081},{\"value\":\"55\",\"score\":86.5887181782121},{\"value\":\"90\",\"score\":56.38027458331266},{\"value\":\"82\",\"score\":20.088964068851865},{\"value\":\"76\",\"score\":64.92876114901294},{\"value\":\"83\",\"score\":90.90020801366413},{\"value\":\"42\",\"score\":63.835787298085876},{\"value\":\"59\",\"score\":38.90345689892995},{\"value\":\"62\",\"score\":25.330401566748506},{\"value\":\"32\",\"score\":27.256480540992044}]},\n {\"key\":\"gen:90\",\"event\":\"scan\",\"timestamp\":1730880592597,\"type\":\"zset\",\"ttl\":-1,\"value\":[{\"value\":\"56\",\"score\":8.003330495752047},{\"value\":\"6\",\"score\":34.01122697830722},{\"value\":\"16\",\"score\":17.956157229380153},{\"value\":\"71\",\"score\":72.8467016482312},{\"value\":\"78\",\"score\":97.00610114162586},{\"value\":\"18\",\"score\":30.64240069167019},{\"value\":\"100\",\"score\":67.50966574271602},{\"value\":\"77\",\"score\":88.65020780764544},{\"value\":\"11\",\"score\":44.490051550065516},{\"value\":\"25\",\"score\":86.12794226713268},{\"value\":\"48\",\"score\":45.182996536325184},{\"value\":\"96\",\"score\":66.85387449018872},{\"value\":\"95\",\"score\":33.50735544575405},{\"value\":\"53\",\"score\":52.23891633541694},{\"value\":\"57\",\"score\":4.136631750860609},{\"value\":\"86\",\"score\":63.29514415900388},{\"value\":\"84\",\"score\":8.673013885688041},{\"value\":\"85\",\"score\":37.55763400747879},{\"value\":\"70\",\"score\":18.201013143651114},{\"value\":\"37\",\"score\":81.98322890999543},{\"value\":\"91\",\"score\":93.2142047935223},{\"value\":\"81\",\"score\":88.91413846822147},{\"value\":\"72\",\"score\":78.20145992929322},{\"value\":\"8\",\"score\":24.050941263163594},{\"value\":\"83\",\"score\":87.2157390777966},{\"value\":\"47\",\"score\":86.146320158877},{\"value\":\"33\",\"score\":42.002549611689034},{\"value\":\"67\",\"score\":65.30190373405276},{\"value\":\"39\",\"score\":32.04796482733941},{\"value\":\"76\",\"score\":30.979439697068656},{\"value\":\"68\",\"score\":92.98690891367855},{\"value\":\"17\",\"score\":97.20657437483266},{\"value\":\"82\",\"score\":29.693291151895217},{\"value\":\"21\",\"score\":31.672101863639636},{\"value\":\"74\",\"score\":11.887118396716135},{\"value\":\"36\",\"score\":82.85364850020717},{\"value\":\"44\",\"score\":31.2634479723923},{\"value\":\"46\",\"score\":31.98823669883263},{\"value\":\"2\",\"score\":46.74611095003157},{\"value\":\"59\",\"score\":78.78301997450663},{\"value\":\"55\",\"score\":52.11471140034261},{\"value\":\"60\",\"score\":57.70171792276617},{\"value\":\"98\",\"score\":19.505433404105098},{\"value\":\"34\",\"score\":13.714257619347181},{\"value\":\"10\",\"score\":61.5842191654827},{\"value\":\"31\",\"score\":44.49106017169113},{\"value\":\"63\",\"score\":93.33292056183963},{\"value\":\"45\",\"score\":48.06079353350186},{\"value\":\"43\",\"score\":64.34223380667602},{\"value\":\"89\",\"score\":45.008257702776554},{\"value\":\"79\",\"score\":21.50167046865603},{\"value\":\"93\",\"score\":52.77353021050264},{\"value\":\"94\",\"score\":44.741481516617135},{\"value\":\"19\",\"score\":81.15558082133025},{\"value\":\"24\",\"score\":30.29511547010655},{\"value\":\"73\",\"score\":56.786082552075854},{\"value\":\"4\",\"score\":78.80096501996861},{\"value\":\"27\",\"score\":3.1746235089543995},{\"value\":\"52\",\"score\":95.2327087305403},{\"value\":\"13\",\"score\":10.119843316837906},{\"value\":\"7\",\"score\":69.19308374095944},{\"value\":\"62\",\"score\":50.78037955693782},{\"value\":\"23\",\"score\":26.061823122523307},{\"value\":\"88\",\"score\":15.182063551084934},{\"value\":\"99\",\"score\":37.87124952095171},{\"value\":\"80\",\"score\":17.492807894797068},{\"value\":\"92\",\"score\":25.046968508674038},{\"value\":\"32\",\"score\":46.41927852134503},{\"value\":\"26\",\"score\":57.47835762540042},{\"value\":\"14\",\"score\":5.4529139422499595},{\"value\":\"50\",\"score\":9.025657246828233},{\"value\":\"66\",\"score\":98.68725629151241},{\"value\":\"20\",\"score\":46.85928638430536},{\"value\":\"30\",\"score\":18.19641924983416},{\"value\":\"90\",\"score\":45.96784603237127},{\"value\":\"75\",\"score\":27.332103071408063},{\"value\":\"49\",\"score\":74.90183336127443},{\"value\":\"28\",\"score\":45.27262761145947},{\"value\":\"87\",\"score\":38.850684978790774},{\"value\":\"5\",\"score\":54.102109421866295},{\"value\":\"3\",\"score\":63.8001650758578},{\"value\":\"35\",\"score\":3.401938401299598},{\"value\":\"64\",\"score\":19.764695050631364},{\"value\":\"15\",\"score\":43.86925401249826},{\"value\":\"42\",\"score\":45.36953157387897},{\"value\":\"54\",\"score\":61.54654650577647},{\"value\":\"22\",\"score\":70.45881539513483},{\"value\":\"97\",\"score\":94.43661019423861},{\"value\":\"29\",\"score\":96.48850813938898},{\"value\":\"38\",\"score\":38.19928028617201},{\"value\":\"58\",\"score\":44.23020806307873},{\"value\":\"9\",\"score\":93.50361036937174},{\"value\":\"51\",\"score\":35.9356197312726},{\"value\":\"61\",\"score\":27.131413230333557},{\"value\":\"40\",\"score\":45.321761544379804},{\"value\":\"69\",\"score\":99.42895242433329},{\"value\":\"65\",\"score\":72.18959252299369},{\"value\":\"12\",\"score\":71.26794941369899},{\"value\":\"1\",\"score\":65.00626462659768},{\"value\":\"41\",\"score\":25.831195044124033}]},\n {\"key\":\"gen:8\",\"event\":\"scan\",\"timestamp\":1730880592597,\"type\":\"ReJSON-RL\",\"ttl\":-1,\"value\":\"{\\\"field1\\\":\\\"JPyZoZOcsj8My9cYuiRaAPZtDGg7M8udD89wNgzbH1yuq85UGUkBIsPiBiMGxH5gYgSxyDJombNoyDkKrHLdvCktMKPQJIaFZ5G1\\\",\\\"field10\\\":\\\"YoJ6OeTgB8jkqLoEjKwLVbidH9uJ5giyiPmgt9Y6aPFaqMITB9FhOMSgGvEdGWTZ3nJw2gxrK7vZDlBsJeXTtmndlMBEpUwgVXFt\\\",\\\"field7\\\":\\\"BiyJHFYudrorP7yv3wDYJy48DoMlQ6WmNellsalRilpF3eQWlaA1ryNsC2aevu62nkr9FRW3mvHDZbO3KpQjdTnWrsrpsaqDyPyP\\\",\\\"field6\\\":\\\"mSXsU3eijPUcdLeV9qfqb92luLSbfqsanVKJYSQAU4RqDVphylNhf2209lWWby5efJRZc4lYCrFwPjEbmB8Q6qo3tDQPnsjsWSY5\\\",\\\"field9\\\":\\\"ypjxKxIwEqdoKLlJrGHfSOnYLKG4cWHMptMFXenbfT2aBiEShYLlmv99kdpHdgcBFhdaFAgthpv9VUuwZxVjd4aT1Py6BmSlg7Ep\\\",\\\"field8\\\":\\\"Vq5G0YbatYjC1PdDxD39Om9yiN1VhOuyBvJ4H7HYub4fJRIvfDZsxmZH7cUndqNCFluLvS85RgQwnVuDheJaqzvZPj5DZahP9bTx\\\",\\\"field3\\\":\\\"MBOFGJhaviayYWlp9KwrA9XqdJ9sGteEdhnJtgqjrhwF94a5XAZlaGWBJPgn7JxkAOw5WCyYjLI1rWDBORr5F5nZH9dk7qRsbCfM\\\",\\\"field2\\\":\\\"DgucAsAcDC9YxDS6l37c3tBfxP11bARebB9RprjGF8G1A0rLWXnarIcvm7IptLaS5SZehng5SVTGBG2cYxisrUKKGnEqCJofBQQk\\\",\\\"field5\\\":\\\"JmfYe0m2R8GRnHu1GzShAJCka5zep8vUaAdRvx6ApefSxZ6HSyUJR3oBxC7sHa52NSNoiO2PjjYNr7K7mTI8p1px1ORHDlyM04tc\\\",\\\"field4\\\":\\\"MzHeRV56Kvsl8pg3gSPV7cX2iNz80nLB97oAB65EeqnBBXlMDrqO3aM6uOEKkHg8JOooXluKdTVVYpmXUauZtUS5bRPnkJgzLTHF\\\"}\"},\n {\"key\":\"gen:74\",\"event\":\"scan\",\"timestamp\":1730880592597,\"type\":\"stream\",\"ttl\":-1,\"value\":[{\"stream\":\"gen:74\",\"id\":\"1730880588478-0\",\"body\":{\"field1\":\"RDYhSRSZ0bwo6peW8vlKOCvmVEAXaPB3iEsm9kz3A3qbjxd7ugbICh1aSekIgBG9y2raGTInM8JfbxdZMN5ZSMjRluo0CgD577eQ\",\"field10\":\"VMbkRgAsr2Pzh75ouII9RNPr1qONdozXm93XVxtzvzcWdefKsRCcBSF2fHCiTLv2LB7lAijWABfLGOtfJLRAG584yAbS5u20wTRv\",\"field7\":\"r7PwuHDO3JrmOyQWcpRU9qZnbK3mIUUwq863jw0sthPzfjI4JQEslzYkekSzW1DgW3ytvoNtbL61NFt1ACRL5y4ylOTkDh7iApDc\",\"field6\":\"ab3q74YlMrowhjncO4F53AiQyMRllGMU6hkPuC5nxvTZJcBafsoudTu4EzQW0yg6cVAA3EVnV4oFx6cixwkHg5uzo8LB84UpMx20\",\"field9\":\"MgtZ2v43TwM8OQu5xUCPL2NwKvtisRCKPetac2aNpptONNBwseOBQhvdNauPdBqrNJ0xSbt7nAsGjX04QHZjLMuZYELP5wg5uExK\",\"field8\":\"UndeTFGfMTSRDs05hfoFTGXHFlDER2z4oqAsskAoX1c9daxvcMFOc5hGB04fDytrSCvK3b1pnVOwjTnDvv5NE9gfCYzGxJcPpsBg\",\"field3\":\"OeoT4152eLfyTDblTgWtPzMnrylGRagNIcQJBYVH9yYIWQYfLkcIoGCSs5J2weg9pQN7BwPOm7GBLi2KD4yyVpXYNFHBc1TYk3ag\",\"field2\":\"GeiDvba8Xg0vZHCs8MUhxBZc40yJvsaNuqUpwYL330nBO3dVdkrciv8Bk8yNejCUqKTKWQ3Jo6EtvBLZ4VcxvZhCD5Nzih24ISSr\",\"field5\":\"tMLtEMlmxFOcK6e1rBCk2oiWHc9TCBaEDtdBapwLKfdZ2IXKdplzHlmLEhEsV96Zoly5ft5yW6JyK9XW05SCozCKAxJyhAVnwZVy\",\"field4\":\"YgOun87ChMFK0bbMPPX2k6nqbGAPMbT5BjB5r4ywOs98mWvabwieyYUn9BvuRFbnERlNKoTWPwa60TBxOonMhDesUV7wq43zaQDO\"}},{\"stream\":\"gen:74\",\"id\":\"1730880588478-1\",\"body\":{\"field1\":\"jkSSB15Z8XQJTWzFngYQkqdnihNVmrkxpnuV67ocVypX5ch52gfzWgVmaWp4NHERRpEGVIQQaeaMCvGbeneozMsJhsyhJhLMxF1Y\",\"field10\":\"ieWJhRMxf0oww0iLLUdrdk1lwD7qoG4GNHPXuoPQdd78tCJBxMAnl8Eqy6K4hLi1TXdP4fsZ9EA5yR0cz0wFBgvm6RGIPy1HY8tj\",\"field7\":\"lGwoFfLyanX4hHHXhOYvwSwjnCdMzQv0bYNgp04DYrD9IpvekC45rksZsZgUcVg28HFJ5Cfd2YtR4a3p71TbfzW3eww8gvzx9Ldx\",\"field6\":\"lryK80noHhcFdMRJwY2YFL9c97OI99B7Ufp30IPvhLtfmVCAj4BYEkzqgpiyXd3nXUHpupRcwWY5t3iFwycXLv7LSK7EXLoGKWxu\",\"field9\":\"yAHqZ1m9hCxRBxIebw14dUPok6UweSTBaxXnHx6OVmVusg1yw0cGfjxqoWLf9FRid31ncenVWOqXKDA8AcYhmnmh0HFSdiQHElJI\",\"field8\":\"YzkmcbQxnV52ygn7rHlscl27t4P9rMcyaYwnXAnOjjxbIO8RHdALk916Aglq6Sfujua7ir0CB9OZsDK1eZCs3PaTH6ROcaZiWeDm\",\"field3\":\"uo4GxwvK0ALszt9ZP38vFEmQv7VxghIKfOUkrdmiSLozFhyPuJqFPn2M3l0IwocGZssPdSwjhosH6VdsvxmLWKbtSM9OTFPJ0q7y\",\"field2\":\"zim6OrCoBxqEJaOxfAWlMVoPq7qDB2iaukBk6YjSNDLDsOeSAvQjDMLR6xLpERvEJt7ZGYwlAdVBIuChRNeO33uUAH4kurWVNlJs\",\"field5\":\"YAcZzi7t33GZx8I2FmA12qmuo9PbD5eV9CbNZGxtqZ02ld3weEDB5dMqFMcgZ0ezEu1Bke4NXUi3yNcQxLiDHoRngM4iz6cFGC2T\",\"field4\":\"MQhH9zWafbFUgoDuH0fTgNcs4LS6UAtZvvh0mvn1U6DYMu6n1bNZdk9w9yN7SYm3LPrtaphwKqRL8b91kY7685rcHMEiFiTZ7VbG\"}},{\"stream\":\"gen:74\",\"id\":\"1730880588478-2\",\"body\":{\"field1\":\"qxkEcAFqZzkENMKiTjv885vUsZ4UFEyt8sNCh0poiRMwPsEtieRliTE2pzJzgD3zkYoYemGXPmsYNL0pC4PSjGNMPwGLYuooNE35\",\"field10\":\"15NvyjfHb1qzDrwT3DZK8F5UUjsIl8PpCknlv5DJo5grnwelQC1RfngHQEzeFnq31YEA9Vh0YrWqt9kZsnCjFh3tpfzoO6VE3rwS\",\"field7\":\"vVRgZPmDLtiVG3BZi2CvBbx7v4r684tSuE4GDzK7EcnvxpLDQVXmdwrxcKMA9II96O5LZwjXDoc6tyPLd7kmBkuFYZIfibtoqmhO\",\"field6\":\"1HvqDi56GAxBE5hF0Pyi38jvhM1LspAijrEIyqaUnZmg7TqJCfXhe9y1LeBRayHQlnLBVYTYkFgp1zR5d6VPNZH2yQjtRCV3NVkv\",\"field9\":\"jTJhqh0e7vgHtSMSkn12Rz2NG9ZbYEdNUs9HlwbgA09q2X0oVlYH4CEpiwxVvM2SHEwmZFSklf0vaCdF2LYZITxf94d545xCKj1S\",\"field8\":\"f4W6Z9pTV2YsyaUEzF8V2S920Pn7JzRt5YI3FMTn0r4izhhCgjOdAhQyUriAJXlC4liSAaJs2sJASdGwCsIOZ6mdyRyJQJL9bEkP\",\"field3\":\"iFIq6oSB9qksL5tLeidWx5r4875UevWnXrlR2gniqoGQx1RYMPqHAsnvvWsKXpjbYuUSft1McEwxNDFJc1OltuSRA1B3QPTZD0Jy\",\"field2\":\"liDbzNkrlIjZMUuuZNGCdnIEY0LZfwUT41IemDiIoALH9000QPBjwcApa4HzTZQMbSJV8qWtkez3nMqT8tIX8ISZm80eal3qvhuP\",\"field5\":\"sf4sXogUX35Kn1OgiWRJtVb2aJ7s04G12CTpUTBjuQ4NTuAtJMocW8jKHqVju5qEtS7EvpS4hM29ovvgKfyTjgDBBOeI5acUYgEv\",\"field4\":\"lPhpnK2tV2BTABbjPkFFMJF66GKf0nLvmUgBuquEBZlxTGbpBDJCnw8QYapKngqYenAYqH24iSxWRVNK2bZLdL0m7XE46f8BZ0xB\"}},{\"stream\":\"gen:74\",\"id\":\"1730880588478-3\",\"body\":{\"field1\":\"JYWamgI3uDDwtinWZF02fPJFsYxvNi2VRMbWCXPu6yY5xrKJve14cX02tGbOej0v495UgtgHAFVt0ShDUom79tT2JhjbMlhFmBtt\",\"field10\":\"jK8xKvXBjVpT3NG9QLZFCXQUJkMUPGQjf4rrJ72MncJSA6o3wDZBR7uiyKEbLLR4oXrzaI7lup4d2fmS8wEYyw62OgA9jIx7hXjd\",\"field7\":\"7YX4BZbqGuNpQQbxZXVMtqR8UEX8t9vOmyyfABVJZu6gdh0q1K7aXlxNXcWK3vnG2LPEPRxFr1Tb7j3Yp3tNY3mokQqIpVKLKKZG\",\"field6\":\"fCU7tKOdQQezTW556rfh2Qo0Kp92thWB7HdeLBP5Ncu5VbRNHHPFzRjbBQxueqwEJTyKplABl3oVxUUaceDu2uFys2gVGp215CV2\",\"field9\":\"gG4GFTKucSGz7OTo2BHTTNtLoCYfGYpCs61gk58vidoCmTCqvtTTlOgbB01415u4m4dvj205GccqEFUKQkVHw37jBXbxEUqin7XC\",\"field8\":\"Lf2VSWID6sq1XLG7Tf3ACg48L85xPz5kBDrGMf53Fx7dea4q2HEWFaIKg5J1kbIKaBuXRsiQcM3W0Zd183fXfFTUKIO9OcY110ty\",\"field3\":\"kPsNBsbJGdB2rzSHSARB78X2i8Qm3nzsJtA7pDAdKdk3RPdSfuzHoKvjkZvDPB8RiYiUlp6dsu5JjXgP22D3DVbh6hu63OGFLF5v\",\"field2\":\"KO65v4bO3MS4iApTaii5GrDJtuEO5XsvyQmFnR9crjxbnpOZ3JEdKRqdUf0iRfOUtmYSKtr1wC2suUtFeajnqjnnV2IT7FN1Xdtm\",\"field5\":\"FwdQSmTXDMioUncioaNo6NYEFpYMLTLBoFuYPSWbrSrVW2tAfM7b74qYUq8MKLXrnCvHwYLaL1qjyu021W7vPoX7FIQbW9j1VY5j\",\"field4\":\"m5DxkVTnELDiR6fkJOEEwZLDqPGnS0OdEFyJpcUoxpLTBBL6QwiwHWBjn379sGo5wX73IFeI2brn0MvXx0KEIqda0lv5NObLiSmw\"}},{\"stream\":\"gen:74\",\"id\":\"1730880588478-4\",\"body\":{\"field1\":\"Tplb5pWzCPPg4kySiMSrHHjIYobmWlC4I5bYsdVHKBPlCavyXsOuBA7XKw0ZZcBCn5ec9BoamDn6HGSd8MnBnI4NhYNcEdzgX5sY\",\"field10\":\"7PKMGwZW0o7Nfpu6b1OIJPz5cZnOAg6W6cHAyiVnIria7Wqx9ZQwLHbf6GV3KnTA42p3UjBXTY0aXiZdsozzlfTGReILOdZXcSX2\",\"field7\":\"YD0Y3psHfdNj9DiZuIHYCAQ8B6yiEB5MvRBOQUIhrccwwQtzsAYJZIflKSUSMFeitUEVSc9uJxia3MRediV0hNuUu9LB9YjgxeqZ\",\"field6\":\"OR392hFJJUGzt5wVIJpRQE56AI9po88jstohpf6VGJ5Jw6M23KZTOWkqOK83pfuDtUGMZ1ZFrdmepVhsZaFHQHm5X8YiShBbDbFf\",\"field9\":\"fObRdM7x2yc9RcT4LWgkxh7LlJkbgBbhvY3N0jQDFBB1bg3eifAltloQ5b3hyxQYda9Fh1NyppQwHiY83NW58MFZe4OzBE2gAz2n\",\"field8\":\"9hoWCiWZp7FIPd2jUxe9IJRjgO1tsp0nwv4zAvDFtoMj0bMSCzNrt85gENXTvXO5yBLo2GKDBuRR0f1dP1WEoZV1HSjQb6VDnuUc\",\"field3\":\"n32qvUkXVKBQhsWfYlCi7mCHin1lGrWgYiXUIx9cbIG6zNzjIsettJ2Np6ETYb84gRzp1ygBJZt9RJuN8Y09D7yocWSIMLntIMvo\",\"field2\":\"RrOfA7YBw6T5jrYvkDB8LZHJz8Y4yPxqXkTAVAmWIaI6VT8CHCm5NMUuoHLXmBAsBmJGBqmzFXeoH6ABDJTVuhrIEfdeKnqHGjiZ\",\"field5\":\"CBFTbXfF5r08103KfnXnsjRJmYoAH9DQVCeebYqOnTPZ33nnwm4s6kqxZZ4DiLCXpKyfqdnfnrPOXlzMWigdRS3tfm4AKCM76iOa\",\"field4\":\"D4XZC83GYcDcPqHwOkuVPg8yMunP8y2wOBYKGFWaSyJY4awUiDzRsIZKWYsKOH0TK2XKU35PftINKNi6vITrGy8krOCmK3Agjtaf\"}},{\"stream\":\"gen:74\",\"id\":\"1730880588478-5\",\"body\":{\"field1\":\"8BwDxwacFZewyVKTEtsk07a6txCFhYW5fch96mDWtxuP8LPNRt3iQV99qCyjF4kMaCQyjue6hPtSNK3TIlBwq0SbQxfpl4zsAX5t\",\"field10\":\"cAMLPIrle14zC3HBC1O9us97QMDqwXhRphD26KsRlsQc2x7WdTnkse9Lk3jPGnU5IeZU5PYsDVgxlJKPGlkBsdl4PArMTz5Wp83m\",\"field7\":\"yhBQiDfzXw1B7b94LcS80nAo48QgVuMMe9jj2MPT0oQ74wy30Z1pugoDnPRrz1j5fmc097YDOeeevnydGhtO3AvnovDG9gkSkj3L\",\"field6\":\"eFPE1ethBlKzccgLYxNSejdWouJqLXAQCmrkVCYoiaa2LfkyZrDrnl9cLGp4GkfynnAO8VY3LrdBDv8LTNmwT4gGcXGQyBmMmLKl\",\"field9\":\"rhbY0tUZHKgBq3x0E4y3wQ7t37Q2lQLzYubTZyeDubUpQJLNqi4kDi85UNntv7gXC5ykEGBafvWlFo3qoQHanOmTed2KlM41Dw8x\",\"field8\":\"1Nuy5phLe5CHMbcNYmctMZ3St2ctiZNoqwUqdFUkdkY8VbVrxtG5sj02TOhJeo5WqYh100zW9qO6czT5hNQLYYbgCKXXgA0Icr2Z\",\"field3\":\"ls8xzkmbNKt2GqSH6ahpu6lK9tW2vdaNbWtAmtzfw4czwgCtK0D5kaocGrtTHwE7TSivSHA0AeBdCZRYcjsXq2X6SqGyh6Z9cvvE\",\"field2\":\"4DARC1UmVl6Hwx19jwuE6AIZNILOuwVbJvf7pCGhIlfa5VWPiRqz1669EBpWVghA3frVRvLww9vnEsCWCvFflum6yVwSJ4nVk6JX\",\"field5\":\"BkzJ7M7RKRT6qNiXSN3UkHSwdUvXp8JIXl872IjrcJtsahJtDVr4JF4hguQRlYDtRN3lTuhkNGYryOaftlVXSzcZqHoydBU1Ja1Q\",\"field4\":\"4KpKsG3Zb0KwmKDfIMUrCk0wagRg9BTIhpDSKeqFGwCYqpJMOITrPUYEA1mlQbPxJPVLhtMo7NA71YBUt2YShW9rufiKc6vrMiiE\"}},{\"stream\":\"gen:74\",\"id\":\"1730880588478-6\",\"body\":{\"field1\":\"bCI7ltECYuovxILlDmhPXHUnR8KlnV7MXCaNcfo1V1cMVZ0UqFrxPqkRUu2cCWVwsr22yuuz2ptBLCkgjheoG0Pfg6ya8v34Zuw5\",\"field10\":\"HPKzNqlj9rkfU71XNaYwGW96d620xY9bypZHPtf5yQu0J2rNkDbGR8JHzQJtQjd9tT22AXQwlgtfPv8ULpHb2lBRbN7nfyMR7BTW\",\"field7\":\"cc2qLWdgM5169EP08fwC7eDYCtyXD1zRUdOKAsqUrqRYs9NwqP3csFqZVDmyvJFCgHETy3Qfc3BH67u5SsUc8LYChY5RP3dpJYA6\",\"field6\":\"wDfZHcM3Bu3dhxOxPGtTytMVp3pl3BtBgpLUICzy6qlOGQS5YH2fk1trs4KRP9i2dFDRHNdZFoatOIRNH3qmGJ3g4vqWFYIOxwLA\",\"field9\":\"IU0bzV2VZHtQhRjBSCh4SExvPlzAl8MReaGSEVG0tc8JxSbZdiu4R332q1JQUsqFQ5sRwUGXp6cLXhaI6OlI4IxiI6KGFKwSDCdg\",\"field8\":\"ZbldZpfhvCoz2YMpI3X3sfV5ibAtsZ5H3c2fTBy9JfDBxGrAWQpTAd9VT5rVHajgf0GQAVGvTM6g5qwjxTsqGzQSBfOBc50bq9YD\",\"field3\":\"ldSJNxSUGWspYCpYpiXohU1R7NOAwNiu8VbW2UD27h3khHLbjUCI8QagRFPon6FbgX2nlpnGGb6UlMQYGeW880ghNvHdA1TrLon4\",\"field2\":\"rnL4UVo2oAiFKzwyBfQHy17eUHj1b7J4FagKddOKhxPLkkqEYWFBOgUUi0xyUeeoEdSmdkDbqCsFRc2n6XoOz0jOHJKB3IICH7Ar\",\"field5\":\"OQYTJIgZxfZje0P4VagjDjAalKCirOYEpr1W6K8IYE0VNBIldEdFvBB8yOppygh6wwERu4j74TYVb98xlIcfxoEQbLC8ngvjX9Zw\",\"field4\":\"X1Wb5I6YnLvhhoRvDUlYImO7oLxDoXCGPnGxc6gV2gMgnITfjlkmTTJlQYilYWCQoVNlRgs0Bl7xMEodio2JuAwRV7dU5SIrpdUV\"}},{\"stream\":\"gen:74\",\"id\":\"1730880588478-7\",\"body\":{\"field1\":\"rpg7oCckxyp3lE5GepkywywOwMj5jzm6FdxUY2h8Mw6egDqxRprwAjrco1hW8nQHU7KUb5WNLTlro1xJEFoSK8HTn8tL7zRsiAIS\",\"field10\":\"cw850RVoDfFGeUWk2gVJ95EsLeXkWkqpHFXKAQYe7p0IALZCqqmbgqCSBkeFhs2a7aoWqWgS1o2sciiEzIBRsfZZ5reau1FWNHgZ\",\"field7\":\"p7KlVzS1i9R27j7hpQLup0YaNFt5JzSxgt15sETc7nz1HRlpI78Mwol0DlePOoLCDRY4bJZCviPgVqMuP0FqToIdn2RoMkakEDFq\",\"field6\":\"hefQnhV1oCtw8gn7R0DHsyCDeddFURTWgGgDLjTYggopWBc1oZh7LvkcwA5iUtkNL2rhwogOHfDbrFybW3WwmDTYqgrBOX77oPFK\",\"field9\":\"nLpSoZlEB9M7GnwFalNFSEykOmaNaPRM13DN1skN6Nb6h560n9km8cynxXAnWlUlHWdSRuLbvvrB8Rfl2uHNIbxT0BMlOC1p6dvq\",\"field8\":\"VwaXWmIpsmsxPqdyFXhNUe66ZUGhHajNWrFbPCQXFj4K20PbacBeZUnPrHEqAhS39CHs2U5R7Y82D5RpRLETCnxSt457tKlJk579\",\"field3\":\"n33buOJc4zgQanG21J8CJn7jHVADPESdLFsBi6RkfstUGhhAXFfNlgi0SAHxtYUw6NeLSwTcCp8ENEDYQ7q49cjzQ0UnRhHGZdr1\",\"field2\":\"FkWBFkvvngSpCyB2LU3KBVTaOP8AsmE99m9sr4ck7tcQvwupzug9Sqzoyenuhn6MWUabBFkvb1Lwf20LS61QTB8rv01N49aC8dOG\",\"field5\":\"4f53pgCvoy5GQMVjo82jAOl7728YVUc2OxlYXQWIXKSjA5SqF3Q53Cb3O7hUqAdaoXJKm6p02PxTkbNGodwX4PiWxN9DqcwL2Iwv\",\"field4\":\"F6uw08TTWE8R40g4YkVL5WC96uhu8uEFBQdtmGv4hkBPBg6wS5H9LFlaUREXMkt608T3nXCAgQFRywkXJRwvgyx5lu3B2Yi3wyjz\"}},{\"stream\":\"gen:74\",\"id\":\"1730880588478-8\",\"body\":{\"field1\":\"iGMqLcxQw7eOdyLIstuO9UphYsg80lUpyVmKTzJt8uHV5xuS2AS3avl4jAQKWox94BKOZUDKBvRMiup2g1QgmuYrnPCkqQ5xW4QV\",\"field10\":\"3NBHctGwUPiiSfwcPOfnmZzM8WOHnAzdBTKevlC1HzKMWOM8Gy6oHYwYByznKacY4h1tDfzS6KvJSaHhhB5dcDT40fAgTqpCFfEC\",\"field7\":\"WoPrSt2po10Zar7HzWJOy1hEmsHNs4vNPU8pzu60aeT9kuupzS1Uu11BzYPn0GOAQkgSqB6RVmcDCgZAlT2J6gwnkRHvXT6MXQ9j\",\"field6\":\"HIoMiNdub3nGJPFkldI4XAO8Pl1LQSC4xLPnN64Zw4mIVcasKk47YA93SJdEvdpC6TTgasU2gOWFSE4kpN17FRDctjs0c3EugYo3\",\"field9\":\"WFXHWgTqtGIpavokuvEiD6IoZP9E3MeoFp8WQQkzYPYYT0P7xjM0WIQwvrbcUNiGE90xP146dDR4eoSDcWSKE3N4MlMtUh5G4In1\",\"field8\":\"bMRFDsb251V1U6BuLgjhFxC7Z3unCMqayjLcdPT3ONmZMRXna7D4c2I7SOoNj4wE0onWtrl473fe3maCgav09i5tUkdxkhw1NSdn\",\"field3\":\"sgb2PV4mwPslEgY9TLkcMGRTMu2bj1Sdy242BTRjBKC5H1CCgPirSLck9gVRXklkfmeZuDDsUdCguuWJEtT9R5bvUjU65glcp5Co\",\"field2\":\"rkOFQsvOUSQt0LZxdWKtE45Hlg0ehflp6v5JhOcwBlRSvUeMtFgl2pEBGvcKYGPWsZeFOJLM6k24vPrAU8zNVLmjpvTyFeNCq8OW\",\"field5\":\"apbQWmOWzIRbs88LB6sTTJldzTH0yWY5Lbt4v5PchY7JVe1aT5zeYWYXU3PNHhctGSIiAWYUWDrZpsEOsxZVcl2sLDIQXNnBNaSh\",\"field4\":\"SbLeAMaa2RSt129CX5isifT7jvKIKBG4ZwFY0F04pTLnXfSxVxrxkNLNMge4vV0OGwXHV9ZxeQ9oiPA5O1OZ5sVJQY7O0Tn5ZP3f\"}},{\"stream\":\"gen:74\",\"id\":\"1730880588478-9\",\"body\":{\"field1\":\"D4WZocIZ986FHYPdx1fiBnVBb6Eydh6BVlEevVyROnLFlCnuJrJuhdxuyfqDQLahq7WNC9Cfx811B3aWXU1Y0UwG1D67Y0sVInH0\",\"field10\":\"oUQUMttcWxJObMNShPLWuwrIvwgZYbmMCH6P7KUT5c9F26WmQgtcIBkwLQZbJm5bfEgws74w5KhFgGELi4nNpOLzBM7RACfCAwxH\",\"field7\":\"Xg8aPCcz39kyUHgqZcDxyFwPGH49WCnSDKr9hwol9zpi0mRWXPp5vNkNH7bvqhTSAQW75jqSrf4ISXWfhyUkFClVuWI8GYGN55JI\",\"field6\":\"CvUAoTaB00Ml0GBOMaRXsBK6fzcFBt1UdVTpgfHarZFz5ROHfM1vsnX0AJjkAKyrQTCZHJoY4Ty9eMWBhc6gMsV3nxMGSGlXahsi\",\"field9\":\"y0wv5uMlSlghury4HfM29Ap6nRUcXzy7CElKluFpvtTRi6x1gvSL6DaCMh5t3986Wk6MSN29p1ke3ngBANbsIz7y9KEE4y2H0Z42\",\"field8\":\"Gzy4xCKZQBNy98XlGqLRwJ7VDRmMo2YkT9jhj5TjMBu9CHmGhCPiX4EysgYRsNzIBOiCAuo1g3ebLdBJ3PsRn9gcWsvnwHqHuIuX\",\"field3\":\"3ydjZdOOGxYRB4AB6KuxgjhaOrSuI9Urtzv0eovRM0LDWON3xZ48yavRRkktx71sldPHxISetQS6hjrUoe3yGJ88GXz3Zhlwghqx\",\"field2\":\"DnILEbAXNhiyPgzMSUxX3batrVmocx8qTFZJrrFF16mT7HyKr9s6EV29oAYLhldiZ7YgrPRaDutkeTf62QfrFFqWDzWtNChIf94w\",\"field5\":\"rDrXo6qA2NPpNYh5BqOmsttlzD8kj4tJzg57FsNLAYFM81m2z4mWWGp4dmepCRxpDP7OVmJ6a5JC04MkMW6XhxziEvMHSGfgNoUV\",\"field4\":\"9dRIZEcV97PrBpAI6dAU7IlYadtSygVqvfmn5qW4iGGDegZg6MJBnbq6DatQJntlhkoJzqFFkWrufanCGa43uf1Hty9MZZkuKWx8\"}}]},\n {\"key\":\"gen:11\",\"event\":\"scan\",\"timestamp\":1730880592597,\"type\":\"stream\",\"ttl\":-1,\"value\":[{\"stream\":\"gen:11\",\"id\":\"1730880588445-0\",\"body\":{\"field1\":\"bKQkcyogGwOr74UNHPSq5JFMBTuvKhUWdjOHqNGrqqvCwvXk9Pr9fFsOUtVJeOxZuq3hbfqzu6bePsOwvikH4SNxrwrEuOPqAQJy\",\"field10\":\"QdCRU1KmVXEwRfub8br33C37NWbRfphXZrdDOmOSYGR6lJWLT6LX8OQvlCHsfHzUSAU1aApessmUw6YRKKnAH1TmxvyDykUJN1hh\",\"field7\":\"cYRRw1ZWYcifgaeBJKm2z0IqSP3O02XfXYqpaAM9gpKUZc234HsBvbOCd6rB0sqhK9PDZecLSxHZihdSMR9vyrHwqioeBlU5hO5D\",\"field6\":\"lrUJzyNsCQgWRHJx18V7ziuYGz4A4YmhrhCYKLnX3oE3JZPNWzyrtYCNNv5COUIt8HCYb18s8h7lh8tUbKHVfFiDSjE5vJ8kK9Hg\",\"field9\":\"QIihkcTVlZa7Dw3HPG1zRFz4xR16Q4Gixhwqph6Rk8U3dmgEZV3ViImKweTRXxuOgVmjqyknUJEMwDIyodTunjMTBKw12DP2hCeW\",\"field8\":\"Y1eEbBm1Y0gJghJxUc93pJJXunQQ1RYZNZtcsLLsJ2qTjGoR5KEtgraAc1WKhtZ9nrQZqebBCx0SstZyVmiMkLYweB3wo65Afng0\",\"field3\":\"kK2fvv9V3ty5wsmxHYlBmpkoq0KLfb48wP4dcirOIgPmfQOxiYLVMYKP0V7Yk4zStg2mpBya7Q8FdIBdWJriI7LAatwvY8hANkpd\",\"field2\":\"PnKyKsv9iGHWCi0yf4p6j79NfyxWW9ORdorpknSgFxET7Uaf5ViUrzuFi4VK4MK0iomLEU8K1dLpi5BdhMlLvxo7TxP3QRBpc3dJ\",\"field5\":\"Fj18I60VRcTTfO7OusXQgjfQorWUnLZxbCelIhWpSaXGBsbeijQeD5l4Qz6ZZ2dvK2H02GmrsJjUUPdkAHYfos4u5R3YOWHZAy0H\",\"field4\":\"WN5BeGYg8kcD9fyEA48PmEO7L4IMutfuda0zRzSC9oN9MsSrYwaphJqW0RCEzbf3vCl4WZpt0qiBskxnsNjmQ0KBcribH66YIaIR\"}},{\"stream\":\"gen:11\",\"id\":\"1730880588445-1\",\"body\":{\"field1\":\"MXbwjZ0fTxA1yKhBndsvfPef2RpIBBKV0tSqin37cKLkKAOIg116IYq94rsCdmxqN5lgSuZnNjqC4yj5U2VtmjV8rUezjvKdKvg4\",\"field10\":\"eDMwzANrLkTAC7poGp5wUgE7rkKgbR20enDMMxfanvk180xJ8cjm0zyjfaXyUWRAuCqkd275OIWoCI9K06VNfmj3gELex68HX50r\",\"field7\":\"vEAGPkZfNpBiqXx6VYkcSPlcJ1EbGwrbF7GmyMA4xbtoUkWuDeGRUJ13CnHT2UQyCSe2S9gKLvScwx9fMFaCVXV8D2XUfQAtHO38\",\"field6\":\"aMr6EkE7upaNHGNFN9s2JKFTJynUnljhR3apUm3vdME02cebtS99fywyz7HKRoKYRKwBDJYflk28IjUL3Gt2XBL1dXEIwx5KRBMB\",\"field9\":\"ea6D7YttKyzAl9jpg02Yo59aXX3bUcPw1l2KTYgrWb6GH8Mt8J8C1Z4KFeLt6ZrTdgyS8G1kN1o5fvvSQ8UYe2I7lksLPqb5xvuC\",\"field8\":\"QBRxiLGEacnYU9Blb9lC4N67dkpbu5r5rJ1x8W88maeLYaBqkT0oNzI21ZY9QbL8GKXXjAJpRWADivpY8dioXJuMe2G75O78xsMQ\",\"field3\":\"5DHDk8LJe03vhqWGBvKhhstfuJUP4T34jKxHGPspUrN53YjlyuMZCuA4DyzA08OpEHMmwOEBBRSFJX0wgcPWaVZVVFnrxecg0SXr\",\"field2\":\"xMOI5PjaVZM4KGbBsspdeUsyE9UCcpbd8NfUH1NnxtXKrfgKiFo8OTRPOKdOrmRqI0oIQ65tquvbwMFCPksw47opPQvih84z7xS7\",\"field5\":\"EqP0NQUudFnxInefETaE9e3etr86GTbZy8d2UDPpPXQgXnmQIusxdVCBnD9stqHfarBpLlW1hp9GYWdOdEeIHA9a1pyPES5txT8U\",\"field4\":\"AYC8zjw7MVqQvbo5QVLFhMq2HNMxKjU05HOLXIbwnt5O3e2duIBw883KtzhwICskEXZVQ0ScAXOBXSecjns0pvQpeLAckBjMdJln\"}},{\"stream\":\"gen:11\",\"id\":\"1730880588445-2\",\"body\":{\"field1\":\"zpjCJyIQBz4200tWSLJU0XIa1gUAaMUIFWHgJjWNXVOdhWsJRSJMeMT7QTq8PfCUxF38N35UKkDskKk3bPyGbv8tumP4TWMcc0LM\",\"field10\":\"CViJWmbJ0u8v8UDbexPRb2ldAdVNiByMZqz5qX1vJSa7EKPFCB5osrCCBJ7DgBbs8bfhn8JORyRPJYmErmvmthp03e7Uv77xYPG8\",\"field7\":\"86EbshWzX4q9ISRZwieop0UscMIGsjFva3TZBNQDyuUH7nOYhkmG6n6SjxPI2Ku6PtHKpJAFBYQrA9vncDc2u6VVVvhbT0pwpuZr\",\"field6\":\"4Apz6oO7U4HbameEYtIfljW4DddxLmhwlFm9VT2UUCrgFB81cl9kfBRbQQe0tsjby1iqmgaGYg3wl6Np25hVdbgAKMILf064U3xA\",\"field9\":\"iJhtw4ZF5PF9bqbAlzXbzb5QcYfu76DEgoEB53UraH72XZ9AI6LGH6q0UJefzNNrAmZEDd5sryo3zHO1unTCROnQoR9TPkAx5jqB\",\"field8\":\"bRckjZm1yeTF16nhc6xDoNchR3JlzanwERxuL7szEnea2jZb1FzuXbIBX3t88gLtF0issQupaZziHJn8juddECuv8o5ojj5Z1gGc\",\"field3\":\"6ABA8wU54uw6RREs8LHYukw9BpabS5ByPhdcuniLaX5j1fzgXMHdqzOZtj5q2kNWb2BCJ0kcvzocfEa3b8lJwQnEWllh40PjGAwd\",\"field2\":\"PP6cCIgaOawYJwxuTe3Wjo0s4kS0bS9G6lCPp6Uf6HPUygrqDZJb0wKznypZGBX7h16dAsRRcQMaJNML03JioczCqmGTYqKE9f1C\",\"field5\":\"xgV2OSTmSEj00If7U0iHU0yzimCqTClC5csloDqCkcfpxjaS1B3F8B0wguPlssA8h5gcHDPDRrIxOaVqFVMHkGPDa8yPERhdLBMR\",\"field4\":\"wx8wPvoJgGivGGmbYwQloMArYK90SEtzpiTnT0T8HoqwjLF8dG6l9LRQ4e2T7d38vozXGyn4awsWzLaUjK0KcJHfqsTwn5FjtlKH\"}},{\"stream\":\"gen:11\",\"id\":\"1730880588445-3\",\"body\":{\"field1\":\"wEDTegNe4jlPmHh38dnMuUPjqhuVG7hJotRYG6gWSHIXAUHEHl6lhJMXpbSGCUkf9dRwTUn4D7VuZBkXNYT4fNLqRyaJwaQ3mvq0\",\"field10\":\"9PEr8EtEaqYvGyTb0I07Wk0pWD2b55xQHr29ajvunpocush3ge6pW4hlreICDYsYHTge4CzDa4XgvbMQG60G9vxsPlnAgit5aIBS\",\"field7\":\"uhPtTidFHGDz6AD7v2I142OoE5PyXjx6tt7BUQFSB17c27Xc4Hz1JmuBtPyXa3vx8Zl55BHMyLJwcncyunvwOfYdOGVh7aJINC6t\",\"field6\":\"mAIBE1nFkwOjBYoyU9TgHejh1oMrEKN5XSOmrOTXJ3MTIbUhaelaDKHyz66O7hpUJ4jmlEngvfCnsA7NM6ZBnQOQtQ5vpSsj5mag\",\"field9\":\"KKEfhDd48Ht3kcmgSvSSMEV1a9ySVEtZpwsx8RdYWgKHwNnlta9SbnEGy1skHJhz72gnvfraEp3sltwJm1QAQzHWVP1TMGJOqmct\",\"field8\":\"IPdItCsEoRS8RhvR0ESnuHp1zABPzhlTzjXMLnxNbIQ6lLZh73JKzBBNkAt0zMVhttX7MMluWFP1HebGyQPLoddyqwUmZQhPDMcP\",\"field3\":\"9ZDbbogZND0TNP43OyrAg0Z2aIzHI178xnlP528mwgO0YJZV4WLq0m8RGvxXOlEzZVTdcL1LZn3as4SyDP1CYKFuC5rAM5vxulrE\",\"field2\":\"IO95erGXL7mWctnuZHNjrtQcA79qK05ABuddOZm0zkFRuoWTphbgT8Z4SswwrwkYU65COKKjrbxDlgsWXXqDkiasDvF4LntkEYVv\",\"field5\":\"OTs0wTzfX0hz9o7T7VK1ZHcRAxRgf17BBt5eFN6PxIgAc1di80wHWJfAyJE49jXAXP7fuV5rAskyxpTdeTQICfLKMpl7C9AXNH4t\",\"field4\":\"TyWRA8USZZel2z8kNloYbzNnPeNSOEJ0wYshQgmWmiECWig9kfT3GdXFsTXpS0bNpQ97EuddLK8YClp6Db3lGhBfAMELmAzN2qND\"}},{\"stream\":\"gen:11\",\"id\":\"1730880588445-4\",\"body\":{\"field1\":\"VDceqtK27j4HH2fZWWwdHMhfPPM6kEuY5XHdEl80RYFyLWgsWPG1aF3TiTg5wsj55WSvYVrCi9Q4RUnE1OAemnNKliYlS6XS90TS\",\"field10\":\"KJVQRei7LCSWfahtS8A9V3SGOPJ7o1RLLDzpP9RYIuNxWKeS6zNUiru4EJk5FU3Xt6nx2lbvtM309bljjqPBTKkbbVTRIRGPwkCD\",\"field7\":\"uRgKCFsALvcsAb5MU00HQAIPFWTnATatPcN4LJTAuR4aMF9uQ8oDCsHMT2Zh6bsxiY0p4Ft38JOCM0QItySlLDpucSzcYz3tHLON\",\"field6\":\"tYg65BVctJzUeCSXZ5NDABcD27e1KRjTHMENrNIE4w5qvcsZM5aME7DBdaDG7SGQbCCOLjHaCfkiXMGaPNDvyARS7hUTjcSli3CQ\",\"field9\":\"CscC7Iywsy3Ermf7lmYhymqfrj5Qh6l3Wex855QYOIV5Ha19xuaLHvUM3aga3Zp1G6jxlht5ed8y44qqoSE5S0ZIY8I9Qal3GK1S\",\"field8\":\"ZawSKNuDlF5tEqdUjjMSxuvGKIb0py8AXOEfr1A4INTap6H3xQ2JM09Qtaqzm1bHEN49DF1HhrF2d7zOZ8EXLvuJDwrbIFp2PWvY\",\"field3\":\"70GkVJPDExcXqZkmO5IQrB2CzuKwhaiOCo7jn0bNP5nYMvXOlpMVled63yO3Kv1AwKhrfBTC7DZc3zvADkn8I5X3WxHQp58GNgvc\",\"field2\":\"izvJfz3kWbllvJSOxi5K8MmEg8TlWGBOfSmDrvbUqiklQKTXq0hGLdmvds49DANoRYPdA72FsAtgZV7Oi4wd9rtzK1hZFFt71eRs\",\"field5\":\"q9ClrgZUbuDoILaa0PostYQQ94ov72gK0QXoEFddKDnwwWwDN2dtS0DOJLKAxrgXOTqhMSG2VFRyHbbw23cFpl8kezFisMtGZHVd\",\"field4\":\"V27HRKhggf460zj02AkSwwzPOYPimFPJNPLtUL8eme4JFRQmfBo01UXh3mT6B8EU32b860bCJcupimHdV4tjSpDN0JxGAnanq9En\"}},{\"stream\":\"gen:11\",\"id\":\"1730880588445-5\",\"body\":{\"field1\":\"d5KXHeTO0Q5MXUx0X6ZfFEJTh3Uv3WTuf6biRJWgLzVlcPyiczshh3DMYxtUj89b4SN9WPuVIXU9de4Dneh4VW40ofRfl9iTjs3M\",\"field10\":\"rgpqrrQqkq0DefzKMfsDVIPQLHVmlRFUt0kHUPV9zZmNnvVVwwTNKAWucgY7fMFsHicnX43ay1mVs9Y2CwwNc9CPfc4dJS4GwqLu\",\"field7\":\"pljzE85VvJxlBu2lY6fmpziCafwm3MQNQWrAf0PrRHHtOo8eoLjjUuIYnAYl4FH3wY08ftZk0Qbrh5R5RtWUcG76znKOpPASzShL\",\"field6\":\"cmA4TUzpDjJ8KqYSDfk04NUdpIe1c4j4orJq8zKfiiJr6QhPVwxzr0SsDuoR72JtiwOZKPW0Cszu7g4YgpPG2hcfmRst69jILqTh\",\"field9\":\"QMyv8I3fyv5YuJaP5FkfPv9BLCXOLnKeXgrP5LmToVpDLqkouvyfOPFwKAu9TyflmL1Q4b2Z91YMAHSfPfLjFeqPIypKlL8GVFbX\",\"field8\":\"4O3Ijo6dlaFLIjMOGQ1WKcU6EtDjrrYUw1YkOcfU2lMcQrkYJOLvMqZERxHvkQqYw8fCbL5i8SMC0vdFlqdB5tMV2XkaLLvRCzIt\",\"field3\":\"u503D3xNZR1DyJXT1AMgFHs5XKmSG7Yj2mTDkUumvvp1nUqlZAcFb1ViCfrP0RvWgvMgrZz5DqSUCeqDHhOmZ7DEihUHfqOVDk7U\",\"field2\":\"pQJIYSpW0lptk9ZcoS9ynxDDPhi3Eyb0zFcff8DK4PTT5LHs12fSPLhzYZHRtoORxbi2Fcnoin9K023AHzbf78aV8ZjJiPZ4WPOC\",\"field5\":\"6p8xg46T92t5xL0rVWvs4wPowepEAklkMeXTZ2j6iFnCeLPTf5ohgjOGK9t8NrKtrjhFJqe9QFy7LyxNMrpv3k2T4i1VmpsrgLIw\",\"field4\":\"YSmbmzT89V1HieJwUCFU20nE33u8JVrixKeUEvP9Qn4oRo8HzO5JUi8IDUGdd4K4gkKzJ6dLHHgookqbLduKHshJxgUlmp0yESFa\"}},{\"stream\":\"gen:11\",\"id\":\"1730880588445-6\",\"body\":{\"field1\":\"0JCUtuVwD2PAgeZtHMHgO06dkXbQjovtGn9dVKGH7k4rmIS9sI1WftXoMYmTeLVoWBTov5cQpWhUC6pjrc2BgA9ACT7rqN2f6AeG\",\"field10\":\"pSgwbCDZc2yGl59m9rdTtM5J6XwSbX7UW7Js8Vue8RyNbX0chA8xjKXLLAvcVR0wjP2jkAxAyNfUdXr8F9Fu1ARkfOLCMKSXktyp\",\"field7\":\"mGpsUZC51fUgICn19v2wp6TGmhcre8cZ3AYO7vwwRhdNssgIkFBlkfnYYK7HeaoUudR0zwS6BIFXyw1RhGo6VWbbbSiD4mKdsXeS\",\"field6\":\"gz61l9SuoGgh7bLLewE9UZTUjVjRFdaebwoooGUZd80ua9iHfNrVSF7G2nBnmHDTz2scaAulGlhjvYPpPtHoX2TGK4bokK7QSJXm\",\"field9\":\"3rD8IRYALpg1EOvXnlqLmvLiFbVzBBlss62iyilomdO2Ux4sWkqVtH7nMtWB5TWbbNkeVmTtKINhXZVS3311XdchdAPayR3oDlJc\",\"field8\":\"gojao1eW0TqooDpi2UwlpqTOpGIm6WHSTdiJDGdUS8YBzwV7pgyHGB8eMrMdIWf1jzXbk0HrZjFXjF9oEB0djf2mArhjPopsj0FD\",\"field3\":\"2KlLv4AwAdqoZkScL5nDxdvakjMXZCd0KMjrSnHyJwyDxjEgBAvD63F7Zn1kaBSpNC2d1CZv2ELHFI4d9cF0D1reDOtekgom8ifG\",\"field2\":\"uWV2eF3t6x7NNT9mOeTUKVMKKYlm46vnqbgEfydBBO2yXV2Zcpmg2G5vWEpsJKvY3tEEhPqm2SudsYLMBapf4pPsEO2m2zbC1F2j\",\"field5\":\"x8IFH39D3W5b8K4qWynD0AmxtJQL9G0R9OeT9AH5Vt9qZDbiskcGyBKgvTithNaT859ogVEGx1ne0j4Krx90EmtNfC1RyBdMREx8\",\"field4\":\"rEiItvegjLPKNozWIz7Zqhdn0cMimah9eaX4FV1ANcXreVngBoiIP8qjI27ZkWGy6cXweJEzdkyeTc5WfrkHd7JETA1XQs86wPzC\"}},{\"stream\":\"gen:11\",\"id\":\"1730880588445-7\",\"body\":{\"field1\":\"6rluFQ8TzhrSwo4QMIke3j7HLFAiYChIzVXzxGcC9eO4X73vBwlVg2ouD9lUhIsxoQqFVUOyhdCwIe6y9WxwWFAtJsEB73RmlpQI\",\"field10\":\"mWPVn4qjwFS80yYjQnGvcpsBTk15VTXDu2e11DOAgi6ZGYm3Cd65SbBxpJKQwkX11l23Uhz4pZKx0r5vwUQptqAhml8q7MdZMDDF\",\"field7\":\"7GcLbFn8hJenXUaL6OlJ1q12P437BJZqfvbHUDo8XNpaTCYlVJpTaRMueY7Fa6y8SbjbQVge6TX0Xylkuu2mW9z60cSSXYLMJibI\",\"field6\":\"ZuulAqEvjiGU45XqbFi8C6Plgygbry7AAlIsQGh8v8n62ZPij1oLPxT7NlYAO5DWcI3GclLNB6kkU5lBMZ0EsHgbIZS7Pg0wq0et\",\"field9\":\"OuNnqS4ykEPkMppSAUSVN6s9iYtVg5mhrpxfU8Q2MORwqM4xLBoUMJH6u8E6M6zt6rdGKTPCgRSZxxwOshfegUScy64LaQEFgATX\",\"field8\":\"NTGWxblig8xKvWEFlSgnU2KIE2mUntQ9dgzwygQpLMG0DM0than1j3RaZavzxJlxxzdPpUhYmO51BU3EiHlqwSxVdkIeQwmqcMuj\",\"field3\":\"3nDu24CjwxxWFLyoDE4GlFA2UWzRHcyJAshjIYIQTshqpZj11EE9KECjMaTREiQqhgrLyzA96rB43TzSk4P92YGEj0leYIrlkiy8\",\"field2\":\"PZoGH6KVaI4w98I67LiZnWGf1MBZQMLeyaBXeLRSXIKev6sn5NYn6HzIydvMnvCt0ROzvdznsLAAxt1XCTWWDKoJUChRuGzhyeXU\",\"field5\":\"KLWtUH1V4ohvGoMew9Aye7aOA5rzNVmLGi3sFMGauEn5zIimN5ndvj56ENhuTrfsyUwopj5gUDzQcJbmrXO4AfsPtNFwx51WE13t\",\"field4\":\"LxQoRJ84qHgDdZbYy4h7N8HQ5RHXJ3qrvQuuISp3L6LNfcx4WoIO7qlbOERB9a9cBGXQkPZN30GO1jhg9oMrxsy0r8V3FMCw8YXG\"}},{\"stream\":\"gen:11\",\"id\":\"1730880588445-8\",\"body\":{\"field1\":\"6o0H7779EqYjkE6kh406wnw51tWxQZmz2yFsIl4FQaOsywd8HkAZ6coa4OsyG4aOoQtCfi1KSXbPDlOmyyYUnxDCjgajzfTJZJZ5\",\"field10\":\"54Q0RhEKLvT5E3IYsunFEmmdR1innigeu9V9vmW00hoAl8hhtz76Sqd63Zn0uJwShXzwBDfAUGrjZZ5lGmMczJx2Kmt3iyJVT4d9\",\"field7\":\"qAm14kOfvMUhKOrmmn1ZRge3u7YqXWjhFC7LmiIinZ85QNnlIx6GgOcEDMbsZYA6bJXB4CPkOvek90TMF9jdW36JXEZAaRFB8ZRS\",\"field6\":\"pbhjOGiDOBvI1HgUHADvp2OSEoH12zINgLmz8heNK4jKr7e7NLzpx04IAR1C7wGncAIZPraZ470n4QcegvepgbEmb8XzwYyPyfSX\",\"field9\":\"Ka1Xq4mEETzemEPRbLGpoCJxv9SYLqoJR7qfT6rpMBupNVyYmCEX7V6s7kBfElUaGL5u83EclVgfNtTe6JzS2y7bgmU0PICc2RIv\",\"field8\":\"FyOpiK8fvNMRfqJOXshiAwBHP9vpDYLFAOjvYAzbn4L8UlyPdEyf23X9XF1Zqnk46S7IX7UFQ9S15VveD7UDVaIgdXo5Wj6OF6iV\",\"field3\":\"aQCHfqLgWpgsqXLvDTsH1If4N6PPNy5IiZl5VYP4DX3G4XSUeXD0RxUvhtDYI5lmlKjFsFgNVzFCn7IVr8Wjgt4pYz0T79HoDRhG\",\"field2\":\"bwNIbbMhShaFFdOnwI7BYmb4n41coUe40NGUUMxgYrAe47BI8WVqm08M4acHKHLiH1IVRXE97y7MzlEPAaub2r6x4lVFScKMvn3t\",\"field5\":\"z0wh9OtH3hzJxtcsHmZ34hlPIprphRnb6sFLDy3FZrlMXMH5GwSBRxYJi9Zl4EnijFJ3apprbXfBbcR6pwkHXH9kp9saEpWa9TdB\",\"field4\":\"z4w6SWHQJZuNl8ICrto8Fyynru5NTCZCZrVxWCjBCqN9GqoDUZUQv3bDjraaQ8aydOFLJQTwD1CD3cSsZcLSCgmMtTFI9SUhxABj\"}},{\"stream\":\"gen:11\",\"id\":\"1730880588445-9\",\"body\":{\"field1\":\"sLgmvt5aW69xpaZ5GbL66xWXrCEHcelfQYg9PVIqV4PwWY759JHBnDe3TbLo9DCoblaKB2m7lZdrqcS52bU8CGAwOidKTarxcN12\",\"field10\":\"rt1xBaZyQ9G67kh6hfZ9hZYsDvgQcle5PINoGnNdOwBCQghAGwuoorpmbGwENqikcmTbCRFxFDCAED0JgVjac3MimAT0rMUvQaeS\",\"field7\":\"FLRGb595Dfpok2MITMfDYcMpAxUEf4gvSIeIh64tMXBYWzE6K6ckycj0EHqcqY8qRjIxBKyWyvFMgUiwj1I5yxkkuk3L546bva8e\",\"field6\":\"DF8gilvAE8HyGhLktFVBrGYAuC8428QPc5IO7rig5Q2ARaqajL0XTAe5JnbAW1zQeYr3rCW7rUonFePq89GIaezlMu4l2koX4n5x\",\"field9\":\"mtOGnGE2P0CxC8Wlx7Yg1XnABEQs7OY1dfeartFzx0DOKNF7mDZASaTSsm2wHIM8aSKXutszD8M5OGiP0UyLnw8kycPY5YdG8Nxs\",\"field8\":\"lDnO9y62T4BMt49ZnhXSqYEZ1ulRIioIghpgy1ATv7LxadrEWgQ5KxEbXOAywJytvsC3BqnbSePQPPKIDM2rZelJpxRvXbiUKwAh\",\"field3\":\"26nEQ7zjG2cs0ftG9RxmcLcbGg5ZKDGra5txdyAG9lYpqHaeZUM5luqwrtpBwXyQDhW7yTpnFULOHkNYv4TM7iXYkmPTPNOWfVJn\",\"field2\":\"SRXFIyCRrv5OT31RYL6l2rGsl0pDgzn2Amq37Bvto2UfuGhmQ8DjC8LQcxySeI6hWv0I58ckj1LWMEzBp78FTngFdqaQ3s3D9g27\",\"field5\":\"jG4ggXB5m9q9ja51KYjHRuWnS8WXamdPVKVlfC4PW57bWRbxpYnaLV6hTV6g9c4ad3D4Z0G1nOfF1BoJ0wD34gOD2bl7iB0YmrR7\",\"field4\":\"XYPRQqrIG0syKx0Zqe0wqZsZ5fdcTxkpL3ddUK10MrAapr9GQeRIzhFRfLYpdoV2zC3MUhEQSRxmvFuAIMKnNFagozLeHnAPThX8\"}}]},\n {\"key\":\"gen:92\",\"event\":\"scan\",\"timestamp\":1730880592597,\"type\":\"ReJSON-RL\",\"ttl\":-1,\"value\":\"{\\\"field1\\\":\\\"vWX0mw0njuptLVOyMrHh7kamRHfkZ38JiwlwSTAohB29LgdyHIeEyJQzeGxSZKAko3VEmaSCFr3aPXLqk2TCWJ8XFaxwsXeYBZQY\\\",\\\"field10\\\":\\\"DKmSHxuNmQKeVqeHiz6QPE471qCPaBWAxE5W8ibf6NCEP8chHrfft7103q8zlkSqXSoDBmZusQJJ3HK8pZJcwTYogitTDcEN5xLr\\\",\\\"field7\\\":\\\"e0scwuSzDt5wRbDYnHd8MZfrIQpkpBf8zFpFD6jVchSrMz0VMsy3Ydx2wmCVNXjYFlKLOTlxfTYJ3ltMK3r7RZYBWxFQ6lZp8Ilm\\\",\\\"field6\\\":\\\"EmyLFbPHlZ2s7MzUfwTD38IkyfgnHvOJsD36obLNbJOIR8wUzP0RxC5EvTemZbshcSpsZyd4VNV3SpMIEVqmtIaz8zJ3DwDaFUG9\\\",\\\"field9\\\":\\\"ff05pJrjJojkvcjCkuquHr442kehqgSjANuxW7WVO9pHzz0p3LqcarZAx8w8UrILnP4PHM4UaLPVu1EXhYkK4hp759zGGwLbYJD7\\\",\\\"field8\\\":\\\"XbdBmbfWlEumtvXuH9BlfJ7HB9f607PLG0wTun7vSsh7r2ymsfrFdBq9qGMkIhm5HkqRWf3XyR1oLEQLIAZ9BWyUA3dj5ujD4f5J\\\",\\\"field3\\\":\\\"h8mZq3u8JkkppaITm79S6l3AcN2CktNcsegwkrnAAIJ0rc4VAGxls1V20ZXWLm196Mf6PiciLKjPuKZplklxmSOcKN380N9oeSqq\\\",\\\"field2\\\":\\\"mXIjtB44S1KBGPSX1XKvd3ZTbb7fBInIbVA8WkWqv0XiNp4mRwluBAG55RybYsRWqVUCxWZNLDlsrBt60GA1MmRY0JBFVjuioQzC\\\",\\\"field5\\\":\\\"Elg6LEIWX0w3axoWDd2coK5xMQGXQ8ALKlRomf947YYhRs1dDAugKsEnVhGjVVb49y5kEO8HBukSUEF4gwUNSqgUyE5n6BRRzxtH\\\",\\\"field4\\\":\\\"qoGnW2iwJ6o2NuqWe5a43X5WZh4eGOLqJF2mgmQ9PkG8vTNGktUfnBye35M83NwCJdf9bzCnS2pzK45YaqO4YjC9kbeTRqXB80Tr\\\"}\"},\n {\"key\":\"gen:23\",\"event\":\"scan\",\"timestamp\":1730880592597,\"type\":\"list\",\"ttl\":-1,\"value\":[\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\",\"20\",\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\",\"50\",\"51\",\"52\",\"53\",\"54\",\"55\",\"56\",\"57\",\"58\",\"59\",\"60\",\"61\",\"62\",\"63\",\"64\",\"65\",\"66\",\"67\",\"68\",\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\",\"77\",\"78\",\"79\",\"80\",\"81\",\"82\",\"83\",\"84\",\"85\",\"86\",\"87\",\"88\",\"89\",\"90\",\"91\",\"92\",\"93\",\"94\",\"95\",\"96\",\"97\",\"98\",\"99\",\"100\"]},\n {\"key\":\"gen:26\",\"event\":\"scan\",\"timestamp\":1730880592597,\"type\":\"string\",\"ttl\":-1,\"value\":\"TAos2U9tioQplV4MDnorruNnWiBc3NtL5TLt1yLeXSAgKANKiOtl0K47iVlGqbzIgXIWOHaCAdFqtquCdQQxn4GhswRsvQfuqn72\"},\n {\"key\":\"gen:89\",\"event\":\"scan\",\"timestamp\":1730880592597,\"type\":\"string\",\"ttl\":-1,\"value\":\"djSdPnSLofKKvGIKwo1mhZzFFPoqKahHKeeiraDN9F5KCTYwHEznty5hxi9Jxp6U7UiPBjQ6SvUPto1JmxXmajWIfijy4HQ8E2Zp\"},\n {\"key\":\"gen:37\",\"event\":\"scan\",\"timestamp\":1730880592597,\"type\":\"list\",\"ttl\":-1,\"value\":[\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\",\"20\",\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\",\"50\",\"51\",\"52\",\"53\",\"54\",\"55\",\"56\",\"57\",\"58\",\"59\",\"60\",\"61\",\"62\",\"63\",\"64\",\"65\",\"66\",\"67\",\"68\",\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\",\"77\",\"78\",\"79\",\"80\",\"81\",\"82\",\"83\",\"84\",\"85\",\"86\",\"87\",\"88\",\"89\",\"90\",\"91\",\"92\",\"93\",\"94\",\"95\",\"96\",\"97\",\"98\",\"99\",\"100\"]},\n {\"key\":\"gen:14\",\"event\":\"scan\",\"timestamp\":1730880592597,\"type\":\"hash\",\"ttl\":-1,\"value\":{\"field1\":\"F64QY3piLcybFThlZoON7EDDaZ4mPeNcXSDmgWAMMlkt0kV2tbRhiUUgf3BLiCEh8rpOnUYHPVRB0T5l7WW69hwTIvph9r1DGOmP\",\"field10\":\"7phkBceM6qwi5hVdhLoMF4qzxw9OwixHEVHOrCcGVsB7S5m1cSYCBvj9SGTq51umcIgLwJY0BrGLXvNV9hbXmcyJ97XGjeup8dM8\",\"field7\":\"nuqPNz8aklsTDVI9e6mTSWjkZN1AHozxuVZsIxGixIipxVYcIlj1FmMQrZtr7se05LbZLCEtxXxuDeW9s1Sp2GmNrzVYFTICIy1B\",\"field6\":\"yRLkX09TEKNB100eUXQE2u8ZNcWgT3xak62FE2ETE87yLqkpOnkCUeRdO0oobIxySfEtOM40qBBulZJxcCEXqLSNfhzXICAQdXRU\",\"field9\":\"IQGpGQPbTywj04mD575BTM8UMKx6cUPWFS67X7stVNDEFRHBMC1doKSa0WDV1ce3WKyp68cKiTfBUJAeDyNZCSLfrjJlrgPvaS8J\",\"field8\":\"PCHyUMKHVX7X3RBuxKBjXNU26mkRHLsiDTrplR7BpmBGysXNUExezuFN1I5ZdyDeyr8WOf2td4t5E6697wZKJvXsiyQFOll8n5NK\",\"field3\":\"iWLJtDHrD9zAalQTSDkBaTdsggnerA2Wc0pLHIzQ28SFCkPc9cWp28hoUkomlqAEtgHeoCqawrKkztEBiD7FPInoZoJsi9VY1Wjq\",\"field2\":\"hqXH53enYoPY8rOQG6eEFxM6HZ77HMUTcSk7A1yxjylnEoa5wGT4kqW3qFjLaoWfO8RNrkKrm0Glrhkk8CN8Ik9P3HIf2N16z6ae\",\"field5\":\"tsXk522P7IJ1nhFq7K32zarV4uxToijvZkJDbMVcu5NdPN8sEItLTyQlSpJ0r7nYWE2tnzGrslm1T7XbjSNUy800VcWDmw8EZDNn\",\"field4\":\"51Tp8h3t4OZeqBa7e62fseEwSxSS4eFj3xyeIks2G3bHMDcQypdbOJEMzbLQ6MPnQqlhDFLta2aFQowEjKsSkhC1rvETjxlgavpU\"}},\n {\"key\":\"gen:81\",\"event\":\"scan\",\"timestamp\":1730880592597,\"type\":\"stream\",\"ttl\":-1,\"value\":[{\"stream\":\"gen:81\",\"id\":\"1730880588478-0\",\"body\":{\"field1\":\"UrB02OyxptdJsE5CmT8XCsHmA8mFMYeMQkBVZsaFYshw26cy8HoU2uffJpJBcxpdRRPUVXGXOLWxL7BYP3D1sw6z4oZELlx9Dyo3\",\"field10\":\"MMYk2saYdwlnwHZIQs0jc5fjDqmPlpssNDnTUVj65sHntlGPsVepKl5v5vJl7BAOMd50krdO4ytFKIIRgWoESFYvwV54TZogezjo\",\"field7\":\"ZamE1KU4gOz5pGuTb6IIQ8MQUt5yXprALVYwqvWdfj0oQdimUijC0SQ162zINBIkJcH0PYQJD7rZ4WqWwo0R4mr0Fk90hoeqwImm\",\"field6\":\"L00gGAUsuqQPXAqTkEIPQ58elqRUF7GEKnnMP5WzRqWeo2f4NEHymqL1UAVI5rmLEiBtM64yVUkItQ1BMuiMpdWTPAmdSFoXGfNE\",\"field9\":\"nNCGapz8uaAZbC0YpwsKP3fMCSurNeTMNEjtZDomMsuqb78tlTHbwBNWECXUIRH2RrFlay1QxuBcgCJOYkPS9pp3huUjIR7xZqFy\",\"field8\":\"SE1bwuHUAnlozJKPqHBoYTJC927t0ADVLfz6wRFCl3b7ezH7ttD2gb4RP60GM4wrObwcDGL0jGVijlvL4ALtahEwzVV2nu3USre9\",\"field3\":\"SvtXGWNTydKBGTs813GgfYcbQEBN8HAsUd8SdwXRJP3Ipyj2zpIu1fbs9adHegdfnf9FrIKahTfwPV0ux1mznauJviZVE1TIyAMN\",\"field2\":\"KZpsUi3ohSl8rn4zoCMa4uuxAmnknUGUGLve7yUyXGLUI455tn1WBbi2V08ITt9CePPBCzeEjoZskCUOrSrI7G8rXgqZmGt0ExqB\",\"field5\":\"z5BvYn7VL3kB3ydBfwdp1NoTQFxE120oD2O5LFP42vz35ctkfiZ1ZBP3MoMT5cRCeAL7DFL9wJkwsHpLqlwEp516FXGhBrwBKtvS\",\"field4\":\"Lk5vRV8Lxg5upJwANfDjRinAtIAeEaX8dv7YaX5yPm1QZeHZy0edzuMYJJrCFUGClbtVcEPR5EwrrGIUUZtGxSwrlPkRQBLkpVTm\"}},{\"stream\":\"gen:81\",\"id\":\"1730880588478-1\",\"body\":{\"field1\":\"XKsLVtXavMWTCMJfVql4V1Ir8KGYakIPw3MLoCp7Xx0OeoVdaCAtcPq7ZyIfqS68IB6DbCGjRZiejyZ6e2GpRSfgflUHxAa1GsDr\",\"field10\":\"jrFarh74ZSZvVif30NHX3aLEAFSFXFAqVnpZ0un0jKBMVAcjnJ9D42RPrWWwBgDMb5fGUTiwSv7qVsZhsF9413y47zD1OOBQJ2tG\",\"field7\":\"roCbpsKibd9WDXKiO4pGZyTiJChTiaRQIJGkCzScQJ5ItTmJjgNCvh1lJZu7udUidf6GtElZVhbSlGY4qpJnY0JQWPrXGabiCvUN\",\"field6\":\"JXxjYClvS1KkGzcrOkloj1q8oZ5zy3atSWQnwxeXPzg9BYnorUh98izTJTSfoB29vuLqhHnqMPq6W94uCDbrPEyd2QgqHJXHwCou\",\"field9\":\"STz8XjckZ3nvetbKZAyAguQY5Xnu5A0eUfkhPhDTvLDyRis5FettPurXLMhdRywTxgXbwykFoLaaAXDLx3acgcUySaA8cHd9dsN2\",\"field8\":\"VWR0IWqq2mK0szZhAaArd69cmLh6PX5luf16O9dI330ngqLpPfiU0RsYX6aDfHbZp7Pc9JKowXNwElH6fhSuZQceCYab0NC3Ihjc\",\"field3\":\"5w8MIJNiS4Sh8mcaIvxgSKxcplfsfxn6KmeG7Fb1j19u1fndUCcsQjRp4YXualrXRF2K5qkekUGyEiO6KKru4smrrsDpc8wj7mDH\",\"field2\":\"4qZ52bjLNzvylVGiG9RGivSfYgClN5ROMTRzxQhyZ9yWcQ6MwUvD1lYjxxiEDTRLKtsUu2KLCjr2p2ufb5k3tbR7A0CyY4Ctd2vP\",\"field5\":\"lRzZUMgtFPdIRSNs3EbTqVEGFBNmWsPbxHOy0ViwYK5Q5B4G8aiiOLMAKsteJPbepsdvOU2rah05PHPtfrrugA5MA0mlqtzGWBxo\",\"field4\":\"2EujjO9r2MpxLfOgFzCntLI84F8m04Q4D1MZ4IVt8CUZ138TxdXC4u8EEwzspkTy7XyPwbXwlPSxECJaNF3uBnzAzHjHYAbZ6nC9\"}},{\"stream\":\"gen:81\",\"id\":\"1730880588478-2\",\"body\":{\"field1\":\"bzViy5f8tsX7QnDM56uxvLmfyWMZv9oGe6FtzAYyVXTZ8UKLD2ULKLEoGXazBVjWljgTgiw1lY7p6ZZxmb3JK07fOJ8iGZHQlKCt\",\"field10\":\"vZQGi4bqb05NSxxvusTbnEsg5OrWyrHmmJHRlO7nn2uCsMz60BJXnhBPhyP9siSWfMcr9J5jU6rpqZYVqUwf8uX8U7t0xiXGZNz9\",\"field7\":\"ID9htYOyOnWXMtdbGRmhNS5s2VUqDpWJNibIw60piH2RMpRDdbftlFBvFuIELAxjMfHxEmg7CNXFANH5FJik0JXrJnJrB48K5Fh2\",\"field6\":\"hJWzqPR708occe4Hr3EqykugUFaaqmEXHCbL49DK9405AilfFxZvppXtzhu4vUJFqVl9SJaZWEImv5aAS0XAubIlRkSeCOCyn3As\",\"field9\":\"TNM0KHptpfeIYH894iqQgmH8HsJe0rY94roU0524yGqYARcF2C6ylLTwiqIN3gBYasrTBDai2XfgZFZHvY0xGkArKLQBXVyh0wRX\",\"field8\":\"5iS5rKnICO2JXsg5al3XyxZ38ggyIQEDAWaGB9rUQYkj4CBCobRxggCqiBWnNcwnI1mIw8pK4CUhIrUgdH19eak2poWp87OM2JOd\",\"field3\":\"MOfoqwQJ7CVFz9OvvEHRQovfESA9VqM6dP8pcED3kAjhEwmtWoaYBJbETsikrnhzypsP6MP5xzoCDQ2lp8CxriqTpKzOJ7BUmJPQ\",\"field2\":\"yYIfoKEnC2ETGfIYxUfvZRPpd8R3xcTnOD0eKzqFfifFa27x22DxVEKn741RrCJ9jaQKqO76tUY6manysoPQjZwD9yCa7IZJsd29\",\"field5\":\"dRFehdv6u2n3B43XVeFywa0nBFjAuTZKXoCZ3oy6QLijKlIGMspVoXZ11od0PSG15UiSdcrhT7wyaNoiJEhpAK3x63e99wvr5fqe\",\"field4\":\"84vN83EC6FxtgWru3csGYOrQv0kLup4i5lh9FnJGL3wKtot8P1iw3NPtZVrYFhxGxIajT3v0AnzDdiHxMSQanz1JsWZO5khF2P2p\"}},{\"stream\":\"gen:81\",\"id\":\"1730880588478-3\",\"body\":{\"field1\":\"7SkE7axUVRcONqWL4VOZG4FLTsGQjTE4ESj5OF1TE57uiDdSSBqTWdH931phHQiJeQ4qDb5ukgjheB5a5xxRGWKN8on32UqN9fyR\",\"field10\":\"QM4tdvGb7m7xqEuYwQmTcsZaPPZvQ1UERHT1ZOh0E5XK5cWc7rsM1lbiMCnELETS3Phj3Vx8mdQ6eaRbSAQf7qTrTPGpQMHZhrON\",\"field7\":\"PFCxhBvKkMny4Mqk7BNbW9ucIEOxoP4Ed8KqFRADjGPfG4dWL3sUPFwWS2v6ahM6aP2gzFFeRBQfQJQdn65bJUKA7Y1Py8dtGNyt\",\"field6\":\"7znV3dEK47fWvgKkhqgbUJTUy6F2oBYmnqbzjo3BLUJrkr0lyjvamUAkK5qswIPbfI7FsyDeeWpkbefndknJiKGBaE7GqsB3fqHG\",\"field9\":\"VvKyjNakGviYej7sFohDj3PNsYfsMHTzLMdHsftVCMSzvxRYw1RvxhKq5K1R8LAgChSkFlOFKyaLeQiP7OcJNXJov8ANxyVMUzIK\",\"field8\":\"WdVrp5NdK9p6sl81ybrOIJG6pq897jQjdur1TbbFkxFbjrmcfcj3LcFVEGoKC7HfRV8leFjEHZPRZc1mRPzAbYicNd9BJGWjIfwh\",\"field3\":\"3v3lmHAGcBtNBew1LQX1hc0ALBCBTEUrg0JNOQpPrGYyntscnkuQX3pCUAkPqOHqlKcUlzgwmN71XtFBmoj4t8eNQnCvOLDBKvdS\",\"field2\":\"ZI8IS3nriMnKM3c2IAQHWdtohQ5YqlYMZc6kTu6dXSOP6HMhm58iHg6NzbcmNqYSNr4WJP9Ytlb6Cswidm8BGpfHSBBylfXlXTT4\",\"field5\":\"MpRwK2e3flsRbKt16SQHDV4mxYsvjWWQr0FUN5ud3N6nHZYd1EgLYeU8zbsDUFlJ7jznj8WoaghgkU7xeyC4gj5AQukqmrTLn2xu\",\"field4\":\"c4GmzQbAiYBCLjlGbjjWfDaWmJFaK1bpg3rPJ1ayfaZ45l9hJMQoEjeXPU5M5fRs6xUBSkErMN7NcIzCDDYd9IkBtnbxI5G440dH\"}},{\"stream\":\"gen:81\",\"id\":\"1730880588478-4\",\"body\":{\"field1\":\"my7GwE29xo3sLVSKTr9rdfPFvyTyk255qzQNWFboimIw46sIwKx8FfUd0WJN4Pf0BXJwm3uLCJXdzB2xdJFYY5eWZraZwbmxaGtM\",\"field10\":\"sRRITCu4JqUcK1rOhVPA2gjV7X27tsUHofpjXX8Fsp28A6aZUzLsC9snMdyDPoYWQbCZSmKaPm9iOM3Qn7Plj2dIarEUx4tfAlHJ\",\"field7\":\"2yPvpgMkvxrYaggqQ7FvmhfnUyvziPZlyTKpZx7cl6vPooBt07l0IKzIYZjC7Omm9IFyJ28cxvSIe8wkGCxaSUBHMx3WyT4ozKiD\",\"field6\":\"Tk8iIqUVCng2JA9vFv6PW3te30dLq7lgDPdA9nhRsUT70SQaLcBUJDgoUCw2ChPIIX5yD5R3IaWHeIdgRJB5SOwmsDvHNzIp9fLb\",\"field9\":\"WqjhjRuEDzStKeXyNqHkv6XAxmndVqvDzSzJ5HeuHHir8b4HlIgh9jXhkY2Bto94fhRYBwIhYZ4cKJ3xjdBtd3HfXICLpA2telHP\",\"field8\":\"COp8CwXmWn92nzH4ClpeeTg6N9OJT8T0uIDppx6HxJvciLKWMKtWcU3XR8BsMVF0eqWyDeL54zwtnjqO9JJN75XmHNautgQgcJ19\",\"field3\":\"7zavXlhx54PIJ7LrKNhqX1DtZJu8IbKFmvFzOwmTl2bL5Xc3pEbwk9AoOtuDdSPMoZm4RAFoAkk47rob5rHk9Vbz3x1PHBpNtZZi\",\"field2\":\"foGWqXco75R7N91bpA7yTOn0W24eR4tfXuvS5GBAeA1bTE5gO1WRNhA6a14WIyaSWZ5RFhX3Zedur67IvMZCBRt45wLUWjKgaXFB\",\"field5\":\"RNnPPvjZ1ph5c0pBYPQlGxWchoCX3Zxvq6tDqnwgfBhAoMCbvt9AZz9ief0j155xEFUC5uUlOUBIbY6j37jd7DdtlN0jbWwMkFvU\",\"field4\":\"FatiXNq32nKR0zfGWiXmRfIoH9rVsiMiFn7Bv4kSCrjJyfuvt0f4bmYNOkNH0EHZ8GzJ9q1npp5oe4pULucZyhSUlWy7TLYZRsZT\"}},{\"stream\":\"gen:81\",\"id\":\"1730880588478-5\",\"body\":{\"field1\":\"PykOS7tk2KVYEIFxqip0hTvZ9AykOQxCkB4S2xyBuhjiTrzzj2ld2FvvkulTTIXfHjZr9NrDesd4BLbTSoecGTKZYaXvRGsOvW9f\",\"field10\":\"AVWopmcVSAnOu6PwJ3ALZh61Y7t8AA6mfoPsia8VBoNhgV85psPpKYfytCdipgr5pdHRPVaGyQukSNZPlub2hThIczoFwr8XOcqQ\",\"field7\":\"iqGjog2x2HomPJtzAJNB9WyZSxpb3zKYQ3vdqA54qFyIoeT8apPqTVNfo47AkPAgtzezSUtKB8J8QDANQI1kGUdxxqrSQF4bvEGG\",\"field6\":\"fnKnUmPR8iwbS31MPgJYPZhBcpjP2pvndMtQbQWSa8gaNLiGElMUpGtkFOXLBfrgPt5lkD2MVj70FbQ6yq7cp5b7TF6y5tLTNu0g\",\"field9\":\"yz2ljV9a3gG0aw18PTczzBvEvCn8z6GWqVfWppWE7NyfqyUs3xeZTzHVOxjHwiVm64ksst6ExvxnedokmOm0deXRSUKUCWymtYxF\",\"field8\":\"LTqSJKNaYPGdg8VfVHe1WWiAkOJ1p4Cgx8SQvSS6A1xQpFaxsEivwP8qO2V1c5kH5B0U8dVOLo4nL6JGxcwxPAIeyHVzHraCd4RZ\",\"field3\":\"Nqqm9yuc2HD69RiLqQ8CS34QFYazZxuGI3oht3epG6wDHHyf30KtmLJqK2nkps7Xli8mc1uVnXGWf9kDQrEaePnasOGLugactpLu\",\"field2\":\"tsn9tq18eTc7ONLXFJvRA3VxLiGVKkAj92Q6pxYOTZYBkzTFxO4UeIzyf0hQK3L664WG41Daj2wLpslbCgSbhbIVcDi3S92QCaVe\",\"field5\":\"8OlkiA8IxsvL4nqYSxa6k6ybpSzjnm0PIbSKfFB9QewMVDM1KHDT2ItOqdyo3TtIlzRmDeUfYhTtAJiEYO3JZqUltnVDlShvBNIR\",\"field4\":\"87v4cSDArUhQ6fCLyKb1TVV3A3wzu4zKrvz35GIp1ZaCYig8m2H7zyy7uhKYPcdRTdRE0ATeGEFjKcGRwIPbcUalj0aVt8ryijJv\"}},{\"stream\":\"gen:81\",\"id\":\"1730880588478-6\",\"body\":{\"field1\":\"AbC0arNNKWJdqs1e8uVI5IeqAqpXPZG9Dobe8UrAKfyLgvZQcfvXlFXbNO2g5cfZsmdq61uQYk0x8q6aIBUfLHiphGrPx80KTAES\",\"field10\":\"0nXBleT7ai2YkxiBYN58zpnBihFjFhDGQQyWidV4EqEfMzeUIscWhLHZRfatTbYkepWjERBWlWD9DnlTFfrvOqwMqQ8qrDmFCtoa\",\"field7\":\"ZKpU9HrRS58FdAxwicBJNLfQNzG2ityvHmtJ14ZdbOnpcf5CxlaWV90Y5b6ZMjOEPF8ZA89fz5BJw8KAUiW9Few8N5aROk0cptgM\",\"field6\":\"dxdBS9SMdJ3g9hTrgtjPkHMYOitdGCtqoUVEZK4KCapvVUMTgcCrZKymsBORnIO1f5bn0s7hFqs7Pj8c435x8FLJvRsKePyp7gtr\",\"field9\":\"QTuEvqIJO1d68KxcPHILnNLXsyYsnZ2UMtIjxVwPWiB8nmQZtqCNVhcTbbGLylBRun8veXpz2o3UEc4MBF0XWLF5c4HIWF3sXP5f\",\"field8\":\"g4xbcN40fOoj20QcUNvVgZEOsFKyhqG8fzzmPUWKzDLfAm63WMwIYvlfeobYZpOMSbqr4ngYQDcmDwxmgY5MGtBlaRnrJMSWxRBu\",\"field3\":\"4VVSC0Wrr422Pk0D4T8VzDrI69ZA9KqEXj4zNqZSvP0TmUJdtX48ayuWkoK6eyMhZfE6PnDjN8j3pP8nIhHGFxIoIwbHRKeR4zOH\",\"field2\":\"w7xbsg47aXGNQzn3t4G1kAcwVbw252GLQp7qSgx81X5QylUWtPUwIiujwyrxgRGC6lSSOHVjBSklTMEw2HGocUaMscZasKDL8MS6\",\"field5\":\"motOy3QsCwMmSAsxFc54SYgFz6f1jhCWUlD1wPYgamRe1RG2Kj5YCchphRFUVPYUEQnbqaFVJx5a1SvPxSdP11CcYh6ZFKOco6Ef\",\"field4\":\"4RVYGUFxhrcLmouGKs7TqcvZtzU2pnxI02sdA5DM0IzrGwZKtwiIfPzGaLAISmeLgSEXlqPDdud230UzltoXN6jU5wuFCm24qWeF\"}},{\"stream\":\"gen:81\",\"id\":\"1730880588478-7\",\"body\":{\"field1\":\"JFgybmomA97tHoxoe5e9X8QL2ChdeaPmn4tPOgDWINej8kxET8bF1IqitkTs4F7udm8TRPzCJJh0W2Mi6LUDzdM8lUJJA5p04PPo\",\"field10\":\"Jes3jQ1ZfgtAsiKweoAjFzdWUtUTQmmBF6rH5Agm65We1yIyX5zO2lbCwvlVuV107SMB0n37BSvzusBPQzA1MZQFGNU9oYUSRb4D\",\"field7\":\"hktOjxcbfrFMcSBhGl3rPOYGMkvrOfKTAdIwFnZFsdkKEoyVsnATxXtwmMIW0bVZHU6qohR2MlbPV7SQIPA9iNhmblSgj2llSzAu\",\"field6\":\"wkhkJ5a6KZLDVHX05tezkCGi1Fq2JcHAtrZcomVJKB9wkBKpjFCljkGkzBuHOwciYft6ATvKKLRbfyINzqpobAgah9SvNzZqHzcJ\",\"field9\":\"rZy0OuvPT9eYkMx4nfOIbGwWLDlVhVnd7dWAsmeShqKJeqVnEDSrwgJcL6sYOK0tNpbELlQBnRUgyBDYRTAfWGT5PL5NxFXPUaIv\",\"field8\":\"D4ttUQZlv7wBscWKVermFlehLsW1kGzqKksf9umfADiGkVTwBXc8pCqBd53kFfpkln69W7KpIUMG1CwjUsnlp3ymYHvho5QakxOC\",\"field3\":\"sgRAfJCv8pRi6n8OOUNE5D2SYyPXXOLXOWAdPJAQYiJjSqWBSskd04Q6HUREEUeXLW0h8y8rj2MpNsQp6j9tsjaM7JS9BhOw9HmP\",\"field2\":\"SBRn8Q2I0WWEsSnXJoBD54qSJu2Upenu30OGmhBEXySw6AM57bJgBD5FgRUWePOqtKTDK6cZjOVikL8wtXb1hLgQjWgPSzJOMzJL\",\"field5\":\"kuHcOTF7jsg5GeuNabSXFiQWgBsuw3Tnl3Wsh51hz3FdBqqpsA960l3H4jbpHCnsKUAkWp6SaFJdfeQrAYvJU6UTtur4lCeT0Z37\",\"field4\":\"bxbg6ATe0CUUBZxVbIWwZeLHqqXiQ5nILmBewihLx05nP2LpKJ1eqj1nxNinS2RWyD83te1TWTmOSptk5s5qAHgIOVlm6xHuRsxQ\"}},{\"stream\":\"gen:81\",\"id\":\"1730880588478-8\",\"body\":{\"field1\":\"Uk5IlPXdiAf1QL7F5fUnNSMYnm2iNdoylrqdJ4QqsxkvpMUbX7wdtjsbSsSVqoO28jMYYOOmJ7OmDQPZOADWkqvCuCBeQGrS3i5q\",\"field10\":\"xfK5BOAX41MbTPOE03tAa56XHvTjMGb7MNIhiucpbi4knFU0Mno7AEcaRsGjCmJiKGTIrveojZr8qxqJOQojK7YBTXQHqpy3d1os\",\"field7\":\"TYiX5qhkj0xjHwAhNY3hQVjdvTYvHzNwhU1jlBy1Ir33kv1VQ2UdEQnz8FwOl7IdE5v2OPUmnwMJ8YSAgAQmq49SmVoe8xshLt4W\",\"field6\":\"dV3btJYZW77OjtPq5mk6qqAg7LFgtnZLKxuIOnB4RezvL9CqBQJBBZPErYGlwLLm0P5hciIkhZJoN7RABE7QwqJy0vX9ttdiV5oI\",\"field9\":\"Q1faf5C0kA2DyLaBCDjZYRN5gF2Q7rSrwfDjjG2IVY7q6rldx85WJMu6JlKc9bGDQB4wN7y8jTitSUtn0W3ndU0vDnS0fjbDW6Lg\",\"field8\":\"GBfVcOAh9o9CA80EVWOvyih3S79cHJuRC74XtimmxbFumLEqZOHU9Ng9pup2OWKSjnRz1osBT4A9kvJEnUW5UAYdYFt8kFoHLG6e\",\"field3\":\"YldAiQKys5D8c7nH7HMMA2qbzzj5rQEQVXf5CDXnf5Wc11eNcNn5Je8EahXG8xVp8lmcpMBim8MUWLQkehqO7YxUgoclj1FNLO1b\",\"field2\":\"PQa9bbcpUteUBUAVDdtYb6W2kfhp6hqETm6ugyOURGer29E636YybOcSJECsnEYaa0BBDWkFNGxeyjXH78Cdhl8M8IofDtJpbdHf\",\"field5\":\"r5n7do8t3C0kY65x9JN45Lbeo70Z0976ALe02Uf5ayQUknJNKQkfIUK7pIqaHGCZFDK2c4MVIFGuBUgCX9mL9UvJA4bAcmy8yxS2\",\"field4\":\"A6vA2y0fOv4RHWaIanDZzecYlsrKRMbp0RuASYEyXPogw3XihOkrFfRx8IHnXwaQvhN31YKoISImqdjnrEGlJOWuGgY09gnDkXcU\"}},{\"stream\":\"gen:81\",\"id\":\"1730880588478-9\",\"body\":{\"field1\":\"jvqeUGH1ameY9rLrseYqMeZDmreTuFStBNTI5xH29mXy3J1RXZS34iWwzwjXEnxPHWPN5RPjxdl4FdqL4sAUJlnuNYThpDQ41QtC\",\"field10\":\"YavGQGDHrVdjGVXuCB6mQWpU3tDDaWLUAyGslpYDKL2IctmY94qOuP3pHjJoPUkZVUHqwW2YMcg9K2JGynDQ9tDzcV8z33UcyUB3\",\"field7\":\"n3KlxctdrYa2EDO2SWYbLp04MClLWdL7tcHNSScBZk9lFh77263rnrU3yZqnXrBJDtIjOqYz0DAoEdBZEvTJxaXxcztXLgzrYF7G\",\"field6\":\"fr7Q9QMeNhpit4BoGIdqLlcPQnHJEoTllgNBtWgstFmxpD7ya50kjbaEKyjlu5dHnvbOUz4Vk82g6W41uBn2d60XDHVxKnYtZVIO\",\"field9\":\"QFotjbuEf1mmJfpRexgTkUyJ3jL4jSNxDc0z1nDwcLdUSWnOG74ByMdqdVejG47QIbCKj22PjsMqyd4LVTYngOubkrUud0GiXg5H\",\"field8\":\"87hch0U2nLehoSJPUYTIKvEuxg5Wlxjd0hMQLDON0GGECn2j9EnyuPGtawjItNOaXkR470Kzs4zivybMS2kw7WL5WCU1CjO16k7T\",\"field3\":\"m7K08J6bx3nfPGjIPjduCDwrpjJcL8JCJdXSOyGu7vtvMm2z3rRhTK95vAQ97uhy6PeKOI8cB3JxCgtCF1IlGYsd70jeDZbxhx07\",\"field2\":\"8pTcL2jP9F1FkrsWKp46PC3sYkIXCAveNpRWTWq7VNYCEBkgBEFPPkI4PiwR0BOpfzAZqaO9ikM9kmofTU7pu7tPJYaBEPq0079A\",\"field5\":\"Cb3eWI8LjpHggiJra2c3sgNr2YyYN8rrYUQnMiqe9Cj757M2JeRVezQRPV8KufYvEhgHrXwbuIvrE2vvviZLoAXUSQa8eHuaZBOK\",\"field4\":\"Ws1a9sdGJF9yZ6crjpdXtdYcmAInEYC2oMZsJBNtRWaCAztaxAUroAovr51L6YMCn0kXz6yKHyj5IOY7i4SSWZYI6xQLKvEDCWKU\"}}]},\n {\"key\":\"gen:59\",\"event\":\"scan\",\"timestamp\":1730880592597,\"type\":\"set\",\"ttl\":-1,\"value\":[\"88\",\"89\",\"90\",\"91\",\"92\",\"93\",\"94\",\"95\",\"96\",\"97\",\"10\",\"98\",\"11\",\"99\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"20\",\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\",\"50\",\"51\",\"52\",\"53\",\"54\",\"55\",\"56\",\"57\",\"58\",\"59\",\"60\",\"61\",\"62\",\"63\",\"64\",\"65\",\"66\",\"67\",\"68\",\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\",\"77\",\"78\",\"79\",\"100\",\"80\",\"81\",\"82\",\"83\",\"84\",\"85\",\"86\",\"87\"]},\n {\"key\":\"gen:96\",\"event\":\"scan\",\"timestamp\":1730880592597,\"type\":\"string\",\"ttl\":-1,\"value\":\"issTMGxGOnDIKDicEgenVWNI0bDQv6e92THp3jfXu8XjCGsm4HuCOuWzsGcD0aqwrJcRfZVg7RD9yWarAS46V2I6ykMNNelFXBbA\"},\n {\"key\":\"gen:75\",\"event\":\"scan\",\"timestamp\":1730880592597,\"type\":\"string\",\"ttl\":-1,\"value\":\"xb9mgR4KK5xYBugea2JuEASug6Vn1SDUiZKZ1Iv6sn5g8LwFwwl7RNXHOcAN0iHlZkrmPxWPqzYRwnt51pdvJJlfUVpowOz2GoNM\"},\n {\"key\":\"gen:16\",\"event\":\"scan\",\"timestamp\":1730880592597,\"type\":\"list\",\"ttl\":-1,\"value\":[\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\",\"20\",\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\",\"50\",\"51\",\"52\",\"53\",\"54\",\"55\",\"56\",\"57\",\"58\",\"59\",\"60\",\"61\",\"62\",\"63\",\"64\",\"65\",\"66\",\"67\",\"68\",\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\",\"77\",\"78\",\"79\",\"80\",\"81\",\"82\",\"83\",\"84\",\"85\",\"86\",\"87\",\"88\",\"89\",\"90\",\"91\",\"92\",\"93\",\"94\",\"95\",\"96\",\"97\",\"98\",\"99\",\"100\"]},\n {\"key\":\"gen:78\",\"event\":\"scan\",\"timestamp\":1730880592597,\"type\":\"ReJSON-RL\",\"ttl\":-1,\"value\":\"{\\\"field1\\\":\\\"XiYQFx56RscaLVu4yH0vXIsgijx7HgO9J1UeA1t473QabXPeVQC3eZLIPTdg7Fe88B9gCTfbrt05xNEhAQPVjwtX9cjpwma3XEVY\\\",\\\"field10\\\":\\\"wYPZxWvscUqRJPDyg974Xxut5tHMXBBPo9WeLLggsbVJOiwuvce1qB2X9CpccU80fBjZK6aEafW7AyzvmJ5moRDaIUotJlaZAYNM\\\",\\\"field7\\\":\\\"5ZkzyC6kUCXGDCqSaiYJIb4hvKUzk6qMMKUW9FKINPxbqecBXEp786Gx5jXXvctzz6QWD6THjS0isV9bOinanHlmS8I11cKZ9m2v\\\",\\\"field6\\\":\\\"OZ8Syeq2mrtHZi8RbxBDB7KPQ8ahWioRJA0k5MswFzlCADn4FD1RrYwIG316hMjwdOCmKuGpLVvQIvLVzuzSJ3eu6FSHgvbZenGv\\\",\\\"field9\\\":\\\"39tdBrjhG4kLPZILbmmo8l2UKsMc8eOy6bNs7hLqmVCb2WQvPhqoExGUyxoL5nVqVfLilk0FmeOnbRkuUs6EzeDbcm6zZVBdAHcU\\\",\\\"field8\\\":\\\"7XOnW9MsOW7CDRVqNKkZYuYEn6XqGZOHUc8FE9d7rKdtDM8wZTfdJVpYHnXYLoqGUNHYyp1TKYdbCZSQzxdcd4JhbRmdI5HfU4sY\\\",\\\"field3\\\":\\\"4oXCHFw7VKmqkjlXIASXT1ww29zfNA55WkmzYMM234bNKddiPzJxJ4tLoK3IxnTMg0r2TBlgPJlVRXBXnW66D1n69jizk3Euz7fI\\\",\\\"field2\\\":\\\"caAyIVdu3KDj5Yk9hEkCnjctd0E0QdoTiXzNC7PQ5rz0rmJr6G8hJqSXYWQMPGjxGw2v45z339OtUoe5ssv3XtQu9YLcpOCAiI7g\\\",\\\"field5\\\":\\\"XeiMW2IetJQdWjRxAzTebTY4XcgglMnHYLdjGUqdioJ2MHR61iZEwVtP2W4dEZ48yIweQY2gOdzO8eEptWxCe9XdFCR09Q8Mbioa\\\",\\\"field4\\\":\\\"XUr8aYtEdpbMSTS5LjKTYYIVCZ0CyFDO67J2MsDvQOIV5RZJXjMeCBw3YCPtHEyh7Jp1tSn5WDzF00MoNueG2sk1hHRZDIrtbQvh\\\"}\"},\n {\"key\":\"gen:47\",\"event\":\"scan\",\"timestamp\":1730880592597,\"type\":\"string\",\"ttl\":-1,\"value\":\"mvcEUI5ee1HzzFfZMqpErtJabAH8YKp6Q1ktd47dZn1yLcftE5r5R2q8TbM3psBAacd7xcXJpZdF2TmPHt9kINP8ODxqDjkKsdKP\"},\n {\"key\":\"gen:7\",\"event\":\"scan\",\"timestamp\":1730880592597,\"type\":\"hash\",\"ttl\":-1,\"value\":{\"field1\":\"4w4wvUjIqeNYtjQCM0qYJpcXaxsJtG9WiolFGZ3mGg7rYPE2afn2HP3xt1YC4h2jysMGOtt8HPnmQ4mBTfr6Ytm31Datloc4Da7L\",\"field10\":\"uL7PLfTX0DbTWoBx50V2bAt3iGsnlMXYWUTTw5NsBkFOTWctyt6Z6G8lfOnSrH15y0xwnPgek9zvWsmoPkMz3H9ntdG8eleqgull\",\"field7\":\"m3S6R7DPwTLfGCoABpND5FqKlHY6oml7Vc3zGtnRZCGikBXwOqiU3M4ryiznGJk5uaZqNmb1KPxOmqXTgMyMAD39GdtPugnh0HNI\",\"field6\":\"3N44Zl84sOOYyWvbuaFMKwRRisK4U10sXTlWUJlp5NR48RXqCfMi4OwDKpzNSb9bhQoimpNbV0rowxivsO3ZNxMltxIyB8RpUsba\",\"field9\":\"az8b8Bo7hskKzq2j9iQWnB8tyMQtRVMbZ9fKbqmpE8YuFygJ96GfKmuRkbd4rXubS58d7G4sVMphLwBCp9z3SPbzK4InbyUiy25y\",\"field8\":\"Rpgx2huQzqoHep0nNreli3cF8o7sRyj4NhlVppwqyhPysD1C36qFLxegCKuXcjtLsI6ILDiosREvnyzzJQZ585jrLtivK5Nj2fyn\",\"field3\":\"uvsaFaAGnNe0i9MKxaa7HdOoBCRJU975WVIwP7iVUnBrl5EDJwjhqM49puaLzlV7rEuZZ8CA9aKGta6xvuvsN8I4wtXub40FrYfW\",\"field2\":\"uCchB8GYPjGiFRdMixySlBliLfCcN2wy8fQBTDS0KLGE8FZNB4YDOEE4jEWHUWngGPB7P4qC0R5IIDByDqfQJTNmlsV6ukTH8Gak\",\"field5\":\"JY7goqDTIWbPuRiy8isn1HOMZxqPn4nKpU1JqRLrRrZPGmmHTvabfdCRvEKyZ7GJEwTWZ5l6UFRvT1tvEpmRsNy9kysk44yQI1eN\",\"field4\":\"NE0TZ9D6wkaev3nhzc3rNGgplDdtIsVyBxMsr6khdFQxwGdCAsHWDyiX5qub4iyVVT2kY8Fhkbh1kh07e5OHxkuMdtpHwXfvoMCb\"}},\n {\"key\":\"gen:84\",\"event\":\"scan\",\"timestamp\":1730880592597,\"type\":\"hash\",\"ttl\":-1,\"value\":{\"field1\":\"72Go3XQO9s9cI8AOxQS3LkR4E71KRoEBrVxMMw88kkNwcAOosEl9ZvRWiXRj7MxgFJAC3bmsKwpCjMZrz6sHv3vzDftnHiC6y43e\",\"field10\":\"5wqm6aK9A8n4BJcbm3aY5qKOpYfwJCd2GCvvR0Bca7tqCSuaIDZTbLAkbWXJ4UIfwc4tawVFmU4UZp716NdeoF6QEFEWFCmwouAg\",\"field7\":\"CFqzjLkyh9pTki3AGyM2yoZzZKqzPF7ykaVOAGc6hxltgPGRYpTsNPKMswC67zAdLViT6fLsUY9KbkNkQj6HTja8Ca2Uex6a2LA8\",\"field6\":\"s7UDygVAHl7wMeo3pUfQAVwSqFOA6FjWmbdWoX5ERUc6Lyz0smyrLqbUD33jsNNaku8ByYAZEcjK2pcoxiFB9SJ9wK2GlNGs08xG\",\"field9\":\"AYbFOBBkMLwnPIMmAX2GHUh0KOEa3uvPLfANWjNe3vj3jP6gmTgz4CbGq024WtIdTb8OJvIjHG9dN3fbfY9kzK8PUQ3Wo016Wq94\",\"field8\":\"pTRamySp8KBajDQib6eDfdOL8BJQRUdh8JhwTM7Hit3YDNvO58onJH6BbEma34MMup12t5NNt34A6SVA2J8MbHoUuJz8WijdPYhS\",\"field3\":\"saaIoBp0DJRcAYgpIHLzQKcNlkzP6CiY07oj9at6vBjDwSzurOrRBoolnmMZvyAhiv57T7nbgg8vNs1QkuaVvTQcv4clIlmJCcaT\",\"field2\":\"7tAk9tqWoLyfJCfcO2yna1D6SUpsY1p2dylQQz1XrQjSoPOWtjvAwWQhCA8go6FYR9EpLFObfnybkQlsp2F75RE437xInZU2xay8\",\"field5\":\"KketNMkJhCv4043rKGERbhbNPDBzbedPwaMred7Lwesu4usWIuDqoAbtSAqEmSOdhrPZakdFcjWsKS2LtgfogW5a9RCFRNTRa1OU\",\"field4\":\"hqYSELJShqEkJAWy6kirqzw8AtzPzzL1qZjfxcggV56LdOCpI7GoQB8YqVqtrz35uMOciqZ1fglc9trHlp77ERCBVe4RbAIYGOkE\"}},\n {\"key\":\"gen:6\",\"event\":\"scan\",\"timestamp\":1730880592597,\"type\":\"zset\",\"ttl\":-1,\"value\":[{\"value\":\"45\",\"score\":39.594274890387425},{\"value\":\"99\",\"score\":43.6930800495283},{\"value\":\"61\",\"score\":43.79798888823687},{\"value\":\"72\",\"score\":39.161053459836495},{\"value\":\"10\",\"score\":76.90257024752545},{\"value\":\"50\",\"score\":61.168703697404524},{\"value\":\"85\",\"score\":75.12236121953357},{\"value\":\"97\",\"score\":55.94552022663307},{\"value\":\"34\",\"score\":2.367804580611732},{\"value\":\"92\",\"score\":92.5361388394357},{\"value\":\"58\",\"score\":28.644503815332143},{\"value\":\"35\",\"score\":48.16174858120779},{\"value\":\"81\",\"score\":23.178171743385},{\"value\":\"11\",\"score\":98.31972931504554},{\"value\":\"43\",\"score\":89.92711227067245},{\"value\":\"19\",\"score\":52.89297156320458},{\"value\":\"20\",\"score\":60.7211701857498},{\"value\":\"26\",\"score\":25.114070699426417},{\"value\":\"93\",\"score\":33.248403524664546},{\"value\":\"24\",\"score\":99.21493659826126},{\"value\":\"66\",\"score\":66.29773506399856},{\"value\":\"79\",\"score\":65.79949860573765},{\"value\":\"78\",\"score\":75.9751308393174},{\"value\":\"9\",\"score\":18.15221444190822},{\"value\":\"63\",\"score\":1.6580456552270695},{\"value\":\"75\",\"score\":5.2585629181507105},{\"value\":\"28\",\"score\":15.303689218397064},{\"value\":\"62\",\"score\":84.48425643536619},{\"value\":\"1\",\"score\":5.246174422022076},{\"value\":\"53\",\"score\":76.40808016072522},{\"value\":\"42\",\"score\":35.47647443775491},{\"value\":\"98\",\"score\":91.08849512402011},{\"value\":\"4\",\"score\":98.02159721971839},{\"value\":\"14\",\"score\":72.79807559955597},{\"value\":\"40\",\"score\":11.32946696342727},{\"value\":\"89\",\"score\":82.53282896605027},{\"value\":\"22\",\"score\":29.62425794170388},{\"value\":\"39\",\"score\":1.963209516638953},{\"value\":\"31\",\"score\":38.27615336325317},{\"value\":\"65\",\"score\":92.52854646811791},{\"value\":\"67\",\"score\":45.07790548760462},{\"value\":\"29\",\"score\":82.4726326911939},{\"value\":\"5\",\"score\":55.009980021516},{\"value\":\"2\",\"score\":1.4183245712091064},{\"value\":\"38\",\"score\":42.44114125756283},{\"value\":\"96\",\"score\":41.93240281737482},{\"value\":\"88\",\"score\":58.31438195050133},{\"value\":\"37\",\"score\":65.70810861354711},{\"value\":\"56\",\"score\":47.659078314680826},{\"value\":\"30\",\"score\":60.879849650309126},{\"value\":\"51\",\"score\":77.08602482985037},{\"value\":\"21\",\"score\":11.201890095666666},{\"value\":\"13\",\"score\":20.699413926432864},{\"value\":\"3\",\"score\":45.31631779348872},{\"value\":\"36\",\"score\":45.939583907532146},{\"value\":\"74\",\"score\":14.24909626811328},{\"value\":\"27\",\"score\":41.546921404473814},{\"value\":\"7\",\"score\":93.49461824130763},{\"value\":\"49\",\"score\":72.89414066847503},{\"value\":\"80\",\"score\":41.83495054024976},{\"value\":\"95\",\"score\":0.7953038058561401},{\"value\":\"84\",\"score\":10.681611686075165},{\"value\":\"16\",\"score\":40.75597888966392},{\"value\":\"90\",\"score\":86.1465504320273},{\"value\":\"77\",\"score\":68.74318620558101},{\"value\":\"48\",\"score\":18.386248902184875},{\"value\":\"100\",\"score\":57.10843127056926},{\"value\":\"18\",\"score\":39.99720328484394},{\"value\":\"57\",\"score\":48.11839265862554},{\"value\":\"83\",\"score\":92.95707206815462},{\"value\":\"59\",\"score\":3.952507270745964},{\"value\":\"41\",\"score\":76.38076174533317},{\"value\":\"54\",\"score\":15.252248125825485},{\"value\":\"60\",\"score\":67.67525337543935},{\"value\":\"52\",\"score\":96.06971948306688},{\"value\":\"8\",\"score\":69.39593698458665},{\"value\":\"25\",\"score\":10.631130527898058},{\"value\":\"6\",\"score\":54.33494671942193},{\"value\":\"87\",\"score\":73.06984368320379},{\"value\":\"71\",\"score\":52.13256593790325},{\"value\":\"47\",\"score\":87.24254487561588},{\"value\":\"32\",\"score\":23.72618388042722},{\"value\":\"46\",\"score\":43.99199517327831},{\"value\":\"12\",\"score\":51.1936317966033},{\"value\":\"91\",\"score\":83.46373881741401},{\"value\":\"55\",\"score\":81.95180171124723},{\"value\":\"82\",\"score\":28.75515614869767},{\"value\":\"64\",\"score\":85.95943238093345},{\"value\":\"15\",\"score\":98.97607871325384},{\"value\":\"73\",\"score\":0.914114734331628},{\"value\":\"44\",\"score\":10.417784923974526},{\"value\":\"94\",\"score\":1.4119168390242964},{\"value\":\"69\",\"score\":87.51003286866688},{\"value\":\"23\",\"score\":25.441895052488704},{\"value\":\"68\",\"score\":42.19204942581458},{\"value\":\"70\",\"score\":62.12712626226683},{\"value\":\"33\",\"score\":31.609720037345625},{\"value\":\"17\",\"score\":79.787228492722},{\"value\":\"76\",\"score\":6.126902929380639},{\"value\":\"86\",\"score\":96.5904732616894}]},\n {\"key\":\"gen:62\",\"event\":\"scan\",\"timestamp\":1730880592597,\"type\":\"zset\",\"ttl\":-1,\"value\":[{\"value\":\"10\",\"score\":21.423002325298988},{\"value\":\"49\",\"score\":24.029152310226188},{\"value\":\"38\",\"score\":51.59394013652467},{\"value\":\"42\",\"score\":54.19371686525694},{\"value\":\"14\",\"score\":74.83224905258017},{\"value\":\"81\",\"score\":24.10510743363674},{\"value\":\"61\",\"score\":44.1370148366986},{\"value\":\"80\",\"score\":55.72683568545307},{\"value\":\"79\",\"score\":59.210814990996354},{\"value\":\"41\",\"score\":14.830599660912313},{\"value\":\"60\",\"score\":17.20143007878676},{\"value\":\"69\",\"score\":52.15391201120659},{\"value\":\"9\",\"score\":3.632750587528999},{\"value\":\"5\",\"score\":17.69455314584819},{\"value\":\"76\",\"score\":35.185315058132815},{\"value\":\"86\",\"score\":10.912154601162605},{\"value\":\"56\",\"score\":21.036085642692235},{\"value\":\"93\",\"score\":93.71751905031094},{\"value\":\"47\",\"score\":73.03396963574322},{\"value\":\"24\",\"score\":23.760244050875258},{\"value\":\"39\",\"score\":54.76256798846491},{\"value\":\"12\",\"score\":63.84124606687146},{\"value\":\"26\",\"score\":84.19802562705104},{\"value\":\"46\",\"score\":21.395882530058717},{\"value\":\"68\",\"score\":16.620765748880473},{\"value\":\"37\",\"score\":12.52475182376399},{\"value\":\"94\",\"score\":3.984804634016814},{\"value\":\"62\",\"score\":20.20402801501705},{\"value\":\"67\",\"score\":23.76161200254271},{\"value\":\"36\",\"score\":48.21553095996233},{\"value\":\"55\",\"score\":82.9698097546088},{\"value\":\"13\",\"score\":23.064347589002033},{\"value\":\"59\",\"score\":90.0068404508971},{\"value\":\"70\",\"score\":87.07158290701238},{\"value\":\"7\",\"score\":87.8851630268502},{\"value\":\"43\",\"score\":11.391088442933683},{\"value\":\"44\",\"score\":23.18340207495987},{\"value\":\"52\",\"score\":31.321761284966453},{\"value\":\"64\",\"score\":75.51131133303842},{\"value\":\"35\",\"score\":83.6792848765495},{\"value\":\"74\",\"score\":76.2772358314322},{\"value\":\"45\",\"score\":40.37215956629437},{\"value\":\"1\",\"score\":88.98699473523837},{\"value\":\"11\",\"score\":3.5789734610930934},{\"value\":\"51\",\"score\":51.255696868367615},{\"value\":\"34\",\"score\":98.38704661152373},{\"value\":\"95\",\"score\":68.60033191523699},{\"value\":\"65\",\"score\":71.19771835043484},{\"value\":\"96\",\"score\":79.99816353824704},{\"value\":\"20\",\"score\":12.134458559544758},{\"value\":\"25\",\"score\":36.40422754753203},{\"value\":\"83\",\"score\":9.147116438634463},{\"value\":\"21\",\"score\":15.765201158838394},{\"value\":\"22\",\"score\":71.27573357270461},{\"value\":\"29\",\"score\":4.400341830553433},{\"value\":\"72\",\"score\":86.64224234842412},{\"value\":\"8\",\"score\":82.82221841637505},{\"value\":\"90\",\"score\":15.491827475043374},{\"value\":\"63\",\"score\":78.52570139914066},{\"value\":\"27\",\"score\":52.291865249149694},{\"value\":\"48\",\"score\":45.96654997744618},{\"value\":\"23\",\"score\":63.41491424464767},{\"value\":\"87\",\"score\":56.82823908161555},{\"value\":\"15\",\"score\":96.88425993902909},{\"value\":\"77\",\"score\":60.07263106701481},{\"value\":\"92\",\"score\":29.101350480909318},{\"value\":\"84\",\"score\":34.37077329774352},{\"value\":\"18\",\"score\":9.510976962275631},{\"value\":\"91\",\"score\":89.66726516552018},{\"value\":\"31\",\"score\":81.9058696289175},{\"value\":\"98\",\"score\":32.9646596298401},{\"value\":\"66\",\"score\":58.10336570489641},{\"value\":\"16\",\"score\":17.76220339709118},{\"value\":\"89\",\"score\":96.37080362505995},{\"value\":\"32\",\"score\":55.781392938729454},{\"value\":\"30\",\"score\":58.841061510865934},{\"value\":\"40\",\"score\":58.72279008873609},{\"value\":\"75\",\"score\":30.135878115362036},{\"value\":\"99\",\"score\":61.93396761221596},{\"value\":\"100\",\"score\":91.4740369706805},{\"value\":\"33\",\"score\":96.67257467879357},{\"value\":\"19\",\"score\":66.18220844902565},{\"value\":\"73\",\"score\":2.663748746719008},{\"value\":\"82\",\"score\":85.63070675452296},{\"value\":\"6\",\"score\":59.61134874421901},{\"value\":\"50\",\"score\":66.29725399272218},{\"value\":\"28\",\"score\":28.83467285201835},{\"value\":\"97\",\"score\":47.60056968671124},{\"value\":\"17\",\"score\":32.236843324693446},{\"value\":\"57\",\"score\":21.864688801981103},{\"value\":\"71\",\"score\":88.3424084540065},{\"value\":\"2\",\"score\":0.517325182883821},{\"value\":\"85\",\"score\":1.9966611698454595},{\"value\":\"88\",\"score\":6.068616546275396},{\"value\":\"4\",\"score\":3.237344947592957},{\"value\":\"3\",\"score\":68.31784552914647},{\"value\":\"78\",\"score\":2.4486071915863272},{\"value\":\"53\",\"score\":59.972076146505785},{\"value\":\"54\",\"score\":32.47730567369286},{\"value\":\"58\",\"score\":91.3613716354683}]},\n {\"key\":\"gen:86\",\"event\":\"scan\",\"timestamp\":1730880592597,\"type\":\"list\",\"ttl\":-1,\"value\":[\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\",\"20\",\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\",\"50\",\"51\",\"52\",\"53\",\"54\",\"55\",\"56\",\"57\",\"58\",\"59\",\"60\",\"61\",\"62\",\"63\",\"64\",\"65\",\"66\",\"67\",\"68\",\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\",\"77\",\"78\",\"79\",\"80\",\"81\",\"82\",\"83\",\"84\",\"85\",\"86\",\"87\",\"88\",\"89\",\"90\",\"91\",\"92\",\"93\",\"94\",\"95\",\"96\",\"97\",\"98\",\"99\",\"100\"]},\n {\"key\":\"gen:40\",\"event\":\"scan\",\"timestamp\":1730880592597,\"type\":\"string\",\"ttl\":-1,\"value\":\"NUCErSCmVddHUxs3KzyqNiGVleTRba1bmxe9W4nmrC7TBmPJmOyl1WncMk2p0eKLdNOBxym4XUwFzmkpuLHPckBL9RP77lFHbNi7\"},\n {\"key\":\"gen:43\",\"event\":\"scan\",\"timestamp\":1730880592597,\"type\":\"ReJSON-RL\",\"ttl\":-1,\"value\":\"{\\\"field1\\\":\\\"4xi49myqpxCtip5S00e5Hym6aLNdRM1voCO3cof0qsWJ0Ke54JCbmkMCYE07d1FSQOsOjMll4pgIqSSbY20NwWN8ubrg3iN58a6w\\\",\\\"field10\\\":\\\"BcoJqUXEXF5Edec37uHHTxhVMq2BAz6kqAA0fDGb5W6xyAZzEVDgcgNNgd1OAIXKx4vRSvXano2VBCesvxeqmn7FLDvaRJvCl8U2\\\",\\\"field7\\\":\\\"SBWnAw2xCKelS4jUDdn6l2L3VgPDfDdiLLPXWgxPvuluAMmXHRSK5HNUFwjTvZI0eVTIfPtwU31v9niT9iP7LKbzqm9ijJFSv31p\\\",\\\"field6\\\":\\\"tNQPwXhnmuE3TSsfKuO73qJwIDtWntV0ZIsmhRBgP8eCoHTYARQkcMnDlRDseXek5Ew1SQofrNUwz53mi2Hr3ZOT7iQZdETh1Jbm\\\",\\\"field9\\\":\\\"dMtD67B1h09yG1s9Tn2bDRvIID3xnGrYrAfBGGaOkfnwMVdugbrBpj4W8CJ7DCeRNoIxb6MVnWV6kw7mM4zhVV3C2xjsWMhgdmEC\\\",\\\"field8\\\":\\\"SjX21gbXwAiPy7BCLQ29QPPv0ssCbxVHzZvRvLBWceEGlzVUlynTrAfxWsEY2toP6lPQT8Vfk4Qmu434yZWJiIrNgZokflPxUfb2\\\",\\\"field3\\\":\\\"x9lMjrz3kmHzqEX3BFhOEJK1avcIemgzUyhlfnOASBh9yBmfaHGnYEWI9x15YK78iTyQLyxYaMdNwjFknMIUhFnprqFCgPLjirbE\\\",\\\"field2\\\":\\\"Hgc772IoenDmB86k5gD8uqrFHKIwahVw4eVg7WiwqUs9nGVFkVYUq2svSgNBcJRFRin4N9vDFj9sF2alXOc51KGe6aow8CebsQvX\\\",\\\"field5\\\":\\\"eklYqN9pDivnpxePzSexRqOwQSbsIDE2kHNie144Cji5MIsFPCvNJgL2R1MQ8KGaMhcseJ8hPKJLutfFyQdIzH8TBzX8yWzguhI1\\\",\\\"field4\\\":\\\"x8to6JrfrseevBFUsb2WhezbqSHO4bWuCmIdIad2scjzr9PEsry0N0nZjNpnZExyRggl7oI3oIow92ncLlhULhjV912yK3wLmPhY\\\"}\"},\n {\"key\":\"gen:93\",\"event\":\"scan\",\"timestamp\":1730880592597,\"type\":\"list\",\"ttl\":-1,\"value\":[\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\",\"15\",\"16\",\"17\",\"18\",\"19\",\"20\",\"21\",\"22\",\"23\",\"24\",\"25\",\"26\",\"27\",\"28\",\"29\",\"30\",\"31\",\"32\",\"33\",\"34\",\"35\",\"36\",\"37\",\"38\",\"39\",\"40\",\"41\",\"42\",\"43\",\"44\",\"45\",\"46\",\"47\",\"48\",\"49\",\"50\",\"51\",\"52\",\"53\",\"54\",\"55\",\"56\",\"57\",\"58\",\"59\",\"60\",\"61\",\"62\",\"63\",\"64\",\"65\",\"66\",\"67\",\"68\",\"69\",\"70\",\"71\",\"72\",\"73\",\"74\",\"75\",\"76\",\"77\",\"78\",\"79\",\"80\",\"81\",\"82\",\"83\",\"84\",\"85\",\"86\",\"87\",\"88\",\"89\",\"90\",\"91\",\"92\",\"93\",\"94\",\"95\",\"96\",\"97\",\"98\",\"99\",\"100\"]},\n {\"key\":\"gen:88\",\"event\":\"scan\",\"timestamp\":1730880592597,\"type\":\"stream\",\"ttl\":-1,\"value\":[{\"stream\":\"gen:88\",\"id\":\"1730880588478-0\",\"body\":{\"field1\":\"GBPpv80ah6TWEmhADYNlDMZFb4vsrYpVP5bD6kmARCrpHdGIXJK5kii6z4IJQnvkZyNZ7QCmCNEnnaoD0oxemNuMq1hpbM8Oezkm\",\"field10\":\"sQA7BYbJc2AIIruBuZHqBcpRhf1YicvELDswnShdNCUCGz3lqchm8mG51xiO62HebhWR9ceTiS7ccPwIxg59S7bh01ZmNLwP6zc2\",\"field7\":\"PwAjyhJUUkoZ9KyPX3HT7tjGj0HeGsutPSodgS75YDPfXKXujjABI0AL9ndRPr9hKfFBngvdIxzVRnVdnM0zMBtdxllQOJpWx5CY\",\"field6\":\"aZjGZnBCdse7ccmhiZcQ6414V0DGPyxwGuhEGn7oizt2l08exukOzfn9XNaHmnJuljjjeSxi60ABu5J4lBSiszbXV8ySEuhTNe1N\",\"field9\":\"marzO028woEC4aqGqbGf4tSkh9eW46D9kvp9F4XRSnHuZXI672GOznsKGG1FTXsJ61cIgr0dfl0QzG9RsX0vfhDkzh7vYaK7HSky\",\"field8\":\"8EAomRP5ndiqagmQsYKT4IFxtTO4FX4qQAwGQ4nf55tG9PQ0l4WMN14jiPMwxsSGC58isIXBQddsjt3RzBgJ00MY5hQBLwPzGmqq\",\"field3\":\"I9gN886wLZJRr9DzJTG7eISBF4ckh5hkcGU3kXAPOsLL3dRT6K2jw8R4Wq5swb2deyt1CX3BmjFJxG3MTefacwYmrroMHpA76BTH\",\"field2\":\"Bop8nkR3SeEuoW271hPOx6hJoEV5S8rZ0A01Kf3iSUt4f3p8m6azEKx65yV8dqgCtOL0fvdIh811oHObj52MA6MwL5wH1s11re2a\",\"field5\":\"uOUv0Y6nPDEWdTWi07d0hzXHJl77ohIOD0VbgOP6Toi8in2kv3p9pwZVxYsKPLIsnide5EVejwUsCP3j3ntqWfpDT4C8lnBpT7tW\",\"field4\":\"yIDUVU1FbuCrmnb6gpcPeP1PdY7IhldoJxfjgr4Ugiw5kESHITQJi14k7w0HjjueFMx93lKdnTCn7keH0F7igkwoaPZcdCRos0o1\"}},{\"stream\":\"gen:88\",\"id\":\"1730880588478-1\",\"body\":{\"field1\":\"VMIXZ3RmdhdDFmVCddHCHG0B0LChHwgq8cBlruvz2B7EmtSYPkrLTSKXpXro2rfffeeiduSjqHp8inLWHek8MJWJtJ5Z3Q4pJMm5\",\"field10\":\"qxARKwrFA5hExCGl04rpgvtdy3ZiPkgKj2TLjAbifrZiu5ryc4dNbUfdq7wWIXzCpxExoGBUm0QUk67cNDS8yuic6xfDiaYsFKlm\",\"field7\":\"fFLlkqxiLHvtnxQXBj2LSw4Zlj1vGQ6aL01eOZnUo3NRoxHDuDyH6tehGquCCibgPsdzmxdagdc5DLLJ3g0q853R7dEZGSEF1lcp\",\"field6\":\"EpKHGI38PRG6yo4126hUkgszlh1MfQylmW9VNqOPNMP8RCbC5GdFVKDrnj8qgPbMy9zMMHbcBL0TxKkbY9Qc6HhJg9I1eckSG2NB\",\"field9\":\"uYjDY1VA71ZGv3JVVKCZmIHlSQ7E6RDts8SNSEoGASlnaM6krFLyS0eJtK7dnJypKACIoVeXQZnCR5VGX2fwLgk9sB0zVbPD5EZc\",\"field8\":\"v6h9TuKjkhIVeCBfGKfYYV5V2MIYrlEZVoo8KlGiolLi0yTiMtp13GSfim3hTjK3Dh2W2IzVvDbuTHCyRUM3mW87TqZo3MdIA93t\",\"field3\":\"GK9dZGudKI0LhWq1VsJwXRp4t40Y529YXOMqmuvCmRz9w1ICshfaKv5vBvf0JZU7Apt18irbEYdD2P9KKV05ZJfemXDgSpdTCQb6\",\"field2\":\"9cDSLF0HM7GYqAAapMybPkrjAjzDBh6BIscZiDRaXp5yEPpFNEfNrDCiH6YFqNzxpnQcxJ0ncDSTA8tdyYu6c66VV6FbUF3GSL0d\",\"field5\":\"OF0V9zdY8CvBLYBUX5kl8BzguQxIW27DuJOGlVZsSLL0v2q6WNSNQnEDNxd6jIfvfRc0CzSUyM4sySIDUZUVIWX9XajDgP819jOx\",\"field4\":\"NQJwH5CZJOtv88toJkjpNnqB8qnaOGXroF4fvoQ0Yr4QIMBnMv41ehagGIW23n4XFCGy2GO25wurGWvFLrAcikLDgqxUnjUuT5e2\"}},{\"stream\":\"gen:88\",\"id\":\"1730880588478-2\",\"body\":{\"field1\":\"hpy4aI3ndyq4uLpRhjcGJESkjuvbz8KUf47LCgI75zKmXKdqyyL9uD41ZGZPj2o8tbSXhfDpQvOjfNp6VCysvxfh1BTkfHlzpxhH\",\"field10\":\"jJgAL1nPUWLOw5yO0cPCk7dEv2gdtHGtOd22Kl5a4d089I7EBkY4jLt4lY3cA57VW8H1naqj6Bs0Io1XGTnLDfLQW7keYcoobvpT\",\"field7\":\"5kPrAqBJvKFeqVjd3ZwhmiXcv3WqXvzPnbEAdz56wnAAhN0XtrNFLnxEaTCMG50PLZec7YMZa9ureFdmyfoGEqUFi0S1AnbatqCt\",\"field6\":\"jxLkaAIEnBuZOOuVYe5fLpgnMJIs4OltojCNUUqznHZLhwS328WSqFxOzXw1qnjgS8estDeaxQB61qCrB6FFhTRdsS5BEA6OXVEX\",\"field9\":\"dKROurdBZi91nbnbApeOWn2cdYAZf1cd7QZGcQohIWkyNk9WNLcGf6azalrc4z9t7aPragI4HZeOHmdUimzQTzzc9E7QgYEqii0X\",\"field8\":\"SysNSOBiU22JwIS5EeLvswUrygC23fJwsmdWeanfDcq39RUrqUH5VpWuCQhC6b6SY3OMEAG6ywH3RzdZLmesgD950QiKR3yIUxUr\",\"field3\":\"O3tXSEUnGp5zphqq6QNsZikoV2HguP5JUEPVZ3amMiX8x5vZYTfJd7j7oo1nHQwQBAVMKKyJsKhUDCbXRkAdE8H3K1yIaDN95xH2\",\"field2\":\"4Zk02CzAse05VX0ttplNin0xSgQGOv1Y7rQLxpz7fHKoWOaFbyLC7nBRzy0pRlR56nlpenQfApoKvWbvjggIf1N3GjKuEFJeuMm6\",\"field5\":\"I9sUstksyv4qHntxa3XTHjEwayIwF90bHsYHcI0VqSwgyHGd93gFMLpPY5DUEOCszT6bBPZSQ9BVEsxh9ZiAOVtZthS0KjvVbQIJ\",\"field4\":\"aJCNJj5BiF7PH4bgfOW1gmmfigQ7JBuvvQsWCQUYTBxDg4dNvHlUggFoVBoqo1wbyTHhXiMWMzph4KIircyAi9scAfCBHebR80dB\"}},{\"stream\":\"gen:88\",\"id\":\"1730880588478-3\",\"body\":{\"field1\":\"i8liGbZr4b4Cri9Eyj4JgCGY1t41UdQUha1TWXw2dajGjLTWd6hI0VKYyM5OzlKPawZ2UVPuC8KmugujqB65wrN5zZa9e5w5qZQB\",\"field10\":\"YzseAoWUE1kfhnN1zFvFuEm13BDPQRoFboNZjETJiaaJHJDq4RSNykiQLcg78K9ptgiTatFrbCmYjDv0Uj45mtx6suN41Ig30rLj\",\"field7\":\"PWFM8spUdErsukrEyMGNBwNv9Wt4x006KMLNUXT0espZ1dcXapwdUyVofsS0QE3MO2d1mncJIiMWzRjlNNxMozrfakBaTWE6tYtV\",\"field6\":\"WPdmgDQFG17hl5tO2AOhpHBJUkQkLpejYOI687z8qMZaj8oLkROewUdU31LSD6NOLviLy6kadEKTKdsUpo1Lj35F9R6L1sNWddla\",\"field9\":\"scHHmkq7ayP934LHJ7Oe129tN7clo4MCBGKyUPnqK0dQzc01wf3USYjmgeKqd7y00Y6b2i0koqppXhjj5YU8B7JIqnpPGOPGIagl\",\"field8\":\"H7pNHT0W5lSGSJPQhyWawEhwd64XIOg76KRYd4IPmRrP0zWp1q8Gs1Ns9QX4eB72U33adnkKV92T6xVZZPCvx75OeK6XufiHLzuC\",\"field3\":\"rAAJfE1uARUB9VEmBftCI7CvdNYdUVjzWaAoQ9h5Kr6XopCby6a7BfGkIKMVrcapPbnykdviHoXkS4eEIGh3gbQXqQIxMSHbAX9n\",\"field2\":\"JeHXGmVY3IurLo6MU6o9mpbUjSs3WTDeeMLE427r3XeVapmcxwoFB1i0rVOpBZSWHniXCFXy5tvD75uPQUxFo9XxHxgucuJFo5uJ\",\"field5\":\"Dn2dAyWT8vtYr40UadT9FaaCVs5LF2nH45lowNZZHVqczoHEQl5yKV98D26Rko97FBC1A34Y8akpEFZzbLCr2whJ6rCuf1qptmWc\",\"field4\":\"mJRx2FXEgmzfRf3pmnEAevwpJhspsBoD8wAExcDdjoOeWc4rjqrUPa1iPuJh2F4jxKqdnH54EoL1QVP7LL9aEkm6aAShntehGaTm\"}},{\"stream\":\"gen:88\",\"id\":\"1730880588478-4\",\"body\":{\"field1\":\"TFdYqh4oDaWkGgC2mUVWpr47VgJfFUlXiVLmpVXs4k1TjlbLgFZjwhWSgLtBJ9j6UtZnrDDSizfXdxJooZxqcvYThZfrTJxjmByZ\",\"field10\":\"ugbr4Qb5esA2D5Nh1MxGwD5qES3arBhDYGo99H6NX5W2sNlXWnnNMecOZZUdE0hXRmW1AgSbzteZHuIHHQ8AnFiCzzaqiDEezUpF\",\"field7\":\"sXIjd21PxTmEoWbJGh3ljexcm9IcXuygD3hFK1VxaFnz4zt1vSB5RvSAbaittk8eHmrguvwHf5R0Ws77yaMG4BfmexbNHjxv42B2\",\"field6\":\"shJvn6eY54UO4EHQ75eGiRHKoUyslWy3pHi1CxCoir2ftMZd903tbbagcmlg1XkUfAamqGnvwk5lB8n7JbYcPyu9HRCGsBB5zO3D\",\"field9\":\"aEY3eaBYeyPVViAHoJp4MRLNzrMLeWOoyxLLXIM4yREZ11cyGtgTsNGldkDZjIKmyXciIdHNk26HBxwAj6VRfP78lJIN3YVq6ntY\",\"field8\":\"Ld0twK5aWi8VsGTc9DbxeiL8GGHaTu74UpOefqL3gt6fnjODQJ8nGozgWKL1VTKzAqbONWKbQEiGw40fnp5O1Val2krAGT1x3A3s\",\"field3\":\"vDPqsLqMR3S7uQXgIoQ7wnyddqkx2gxOC3FpipwMC7c2pi8hFXNcXlNoYhHOEDfDOI5b61hczM7rba7nFeONGmmyEEU8Jm33VQBj\",\"field2\":\"2Ujja1UvRu1xYU6uW4tVpRtVpq6LYQzFY9kQB0V5IZAMi2c1op5vVgeNeRpAlTNCJscuNSTZkUlkMp6bLVqxbmYtFfhQ1ncptjKX\",\"field5\":\"GcheNJULhz6RcydwJogXDn15hlocmVStXIAe7G8ZT7i3vK3NjI55PM1fADxPHOREWNaY7tx4IEOJn2MV6RSb7e1T8QMYNQMvAkpN\",\"field4\":\"YN2STN3slf06nYmDFvuTLD2dpTFvqUjHdX7GRPluranCe9BXsAbEuseZABNKpCLKmgE7jVeUeczoEQomsRdrO7FxsGBgshLr9UzC\"}},{\"stream\":\"gen:88\",\"id\":\"1730880588478-5\",\"body\":{\"field1\":\"lFo3N5maSxiHG5nP0QgMDAQbvwzrlfxLvN3ZGHAiB4YaI577MfxLfS2brdZFbbUemFYQlqJlfMJI02EwxqKrzFAYlwWerUyIvGTY\",\"field10\":\"iuMD4APS8fRzbG2NLSWRZWrHHRBDGWmeCmtMDGZKRObnRKtQk6o0GDuj4aVnQxLRJdOlpWlw2o2ajyrMZBjokc1qVJtAdq90iTAA\",\"field7\":\"JIqJzVDXWHtEYoIKNoa1ZQqhU8yy96XJ9HprzrZfA5BAfW7IfGrubQFLgWx7Pb7lMCwu455WhPPNYKf3hsYQsPAkY79lNhZB5bGA\",\"field6\":\"kL1tY1RoPZmZeqr1RLAySww6PBwUUTA15jueonssQj0F6Vz1P9zIdfs3QF4PdTQVUUL77AR0vQ5iG436FcHs5MJFmE9lXvRLgZUy\",\"field9\":\"RphtrzxTq2ybu6vBbVLCzXpJrePK6OHyf6owKVFRUzviRc8Z2eSHxTMHH9HeWdWJFminAXtC56Qi324ECDVAVKc8t8lUikWE2ERb\",\"field8\":\"jLAChxbb6Cuww5dzGByTqvDyxWRYSHyo2rJdswZkCfnNcgcHcMGu33KgF5ZlLXiUqmZPDJyKrFi5iQ6Xxxnj94rzet2uNtqByio7\",\"field3\":\"p9xCCY9BhMsGKLqOH9FtzYNNfkJDPQT4Wzm6pUaHPYbWsiysazZorPfYtnvYK01jQPUbvjWfa82Qb2oMadSAcE5IsnipY92PWPHP\",\"field2\":\"OlQbTRnCdDfr1Cn9rCwDnEJN4afdJgy0NuRERdJEMLjBNdM6LcYhOvmxJtRxKxTe8e0Sy4QNDu33XsQB14Polr0OcHGUso8CMuu4\",\"field5\":\"B3xF8qKRTWGaaSuCbwiAcSqUPfRtdwtwqR3RruicO4v64yjz9jF6g9dK8mTNUOBvRfkduUmkIsYUCJgmg6PdB0mYkUGWLCjGH0z9\",\"field4\":\"mYO4bx5vZLCNxGOmlAFIGESOlKPTqMxYjVv40lkEwqnrwTkMLgQGrpm7RCMhslDm88hGtxvKpynbSj1sjF9N4ANWYSfgVa47gzvy\"}},{\"stream\":\"gen:88\",\"id\":\"1730880588478-6\",\"body\":{\"field1\":\"iMxPmD95I9KJVndzw5wsmK0eBIoehFqHeFcsfZixcMNdm5WfE7rqnPXkHtvHJshwfgVA68hLlRZZOMRCs666vD5gm50dFlznbY3P\",\"field10\":\"1DEjBwBmemGv8NiuWqIylQvbLAv26u0fHWkIpQ7fTsDYwplXm58jRxH0FilBTAIXr0vQrHPlNtxL4qtP6EDcLTOAZI7HgCMuBzxe\",\"field7\":\"EfWHwBAIQ9Hdv9TMmd9U2rTVVoi2X04rpwjgJMxSt1In2aUvfIPiUeCSbPCH56tuot0EkLRrAZModKJP9HVH05YXdnl7zGOkZLGo\",\"field6\":\"RFPIUmBJc0FPJMYqPj2iFS2RhW5gBbSd2am1TEWjAsCa8VVMYycJNOGWbACaV34L27iTEJyYGuDy7L2rPYh8KH3idrkZrDLkfMhU\",\"field9\":\"DshF4LEgOTtSUc2VErJ77N8Ct3jzynH79dBkubVZT4MHOLQJbTQ2rE4eFnT9ZFnKJEWdbTzGLdOJiTpXBhJAown8msN8Q16YDcN6\",\"field8\":\"EnpeB6G7c20u6kFJ9rrwtkbo3rOtM6iw1IaG2sdN3EefjnUwezmKcnmrBWuIAY2DJqaQFxaPzsApHy0evB1sYAWAVKGLuGu3B5am\",\"field3\":\"RIQlkaTAKkOkJiVcbFiTUbccdg3VHXchiFXzXFs8A2nqZM50DdmLRdG89WqS9hPz6r72BngPvK6TPPtkQ2p5Nivlt96yCvKoc4a4\",\"field2\":\"GNogDsAZJC04Nbz3AdfnDIErxQSx2RWr6dyHbGTs2CitgTNsIjgPoiH19Noc4FWXpjxILai4ILFH6Jw0CnQmthFHJULeFwxGmwUc\",\"field5\":\"5iniz6AB9htZCEWx7CwKgRlRndmUWfAXZzwPfIzlPzyvwfMRkHMc0AjD6JAPDjiuaoxILvPaI4C7fhi5QaJti94efFi5iBUY1Ute\",\"field4\":\"fd4nkdSSGXgjMvlORWxnGA6RSjDumeXNMdmzITWDNarCnQgzbZmhcTA8xs0Occsm3pi3hBweL1ll5Vcyo0ke6wBdVN44oPKE3PQE\"}},{\"stream\":\"gen:88\",\"id\":\"1730880588478-7\",\"body\":{\"field1\":\"WadgNT7QTyJuSi6s7HUaS72MERDWMoVFIem3N2y3CwDITokxMXaDxGWSGEuE0cgYHVYh4FtZeAM0xRjQ7zSBt4JLU0CcahmfE3Q3\",\"field10\":\"GOZf7hWdHNmPGFhgJERj6sK4hLV3TJXJj7JC3slJaeskI1SNRiNpjEMSgVcKBBiMFy6AUGTIZUh1WUlJwPPOB7xhwgWyAdDSa41e\",\"field7\":\"Pe6rOLK3JlAYtwkNwekDyartqBgEE0XsbOskt3JZFhEvnEsWoMfNZ1lfKqbvlweocNYLSYpRTFY4gif4KwcGwPXXb9SGod8zobb9\",\"field6\":\"WgKtEal7r2hOtPRizwUtJM93bYRV4lfBTbBAX0qGo1LiEE01aHPk7jeuXcwxQpGHb9fn7uMB7VTbqTkwPzSvjbr1b6djW25rKKHX\",\"field9\":\"XvaNjvuEIEPtAVAwvh1x76W6cgNMyDB0q8p30InTJfgUDLkgQvvtymzkqt9xyok0Wp8mhrM3Era6mDSyZ0pOprfAdumt9mJ10j3K\",\"field8\":\"WCBJFbPEHviqEvo0HZ6ZtaT9xuLrdNEYKUd0H82K4PMEPxgCupGip0KlpBW7Ko96bgsJvduYD05MwdIkXrUn40MoidoM7bLjdSYO\",\"field3\":\"9q4aSWssqQ8ciFDwRycBwkPpprsA20wq5KtPERPJ36Cafs8A7hOwfQAxnIdORcoTU43Xb68kYzPqlDZ9rNor1Wr7FrWp77Wh3JY1\",\"field2\":\"ziTamzoNXpOYHTScoYb3fVyC8SIWpyPNDxEjbs4LHDKajka86HkfeFXTzp44yyhe7RA4uazVOnpb5lQ034dVEzQdS7FmnXrMITLu\",\"field5\":\"W2XLUCnLqMBJu0NQ8smZXBcvD1WIbcoIVTLxXbUIak8x8eV6SvCQP0WvIFv0YI8zlB7mRwJVYOaKW2Wlp1mDGXbj5NHBw2uZYEX5\",\"field4\":\"A9sukKkNQASQjTguXd1QbeI190oXV6ZnxhXWBHmKnHLGAP1TxsZjsbdjfd5LFh9zmgtqPeoDFjKbPkQ7yLR31ld9uudO8KCbHAtD\"}},{\"stream\":\"gen:88\",\"id\":\"1730880588478-8\",\"body\":{\"field1\":\"bjkU9GlEbicrDRsvieHicabh2W6pzVsw0NeEKv5bXU11VqpuhMKGUY1k2KZQESoOYnNQO05cLDmKG13GsllHSrYqsQ3L5MEcE6pk\",\"field10\":\"pSKYBGlw0ybLpqbklRNHHjkv36e8PDugbtkbBpS5mSYqRIGZflDZxxxEz46MYz7rDIlJQdiwOfYJIyjo8necwIDTcN3KF2pyX1i9\",\"field7\":\"MKhdn9Fq7Dc7pfpkWzVCOKZY8PLJHcbGR1fbxESLikYRhqkuL8Od6mmbhOLPeptE4ipWSuWhClEsMX5lHJ3b3PfdJiO8zKRDDfME\",\"field6\":\"HpkWy2EwXcg9uNJOzQl97zK1W7MBIaUqgWsvaJ761TfkHSs9pTFHdPxWFFUHrzI3QMEdagGrXLX6tuH4PTqupMzsJdmACPUcduBa\",\"field9\":\"1qm0UGcln05Jt3um3VU9Dk1Dlbv6UOtcua6mOW0HEj2YQGTQ3iL1lmsK90vLZVw6625ePrHUlWsHpc73x0r0NGZcCyeNxL9rK16f\",\"field8\":\"RjpmAX6SdTDDBJYxe0A54yH5XMiPDRgrrCzmi4hmiJf6Pg5hc4ZkkRIvAQcc58RafAHfX3dzzNYtwcePaPqioX5ySMkWsValigcS\",\"field3\":\"jBFk3CI5Rsped7HScCtfVFctOqpej2KTEzvYB7c9Pbuk73eTcpAsOgBnCa3z76f6ApfX9LEWPsFQfAjMLy6HdEaKimYaJCsVEC80\",\"field2\":\"Giit0bENg82bH2zn4s8ble6q9ChcYr8GgR1gAVpGJx3QCgsVntlMpzlqCrh1BdyrXWAaiHvGNwqoOgBA2XD4CTAPW9LelcVI67OX\",\"field5\":\"Wus4VNAaiOv1K6pQF2cEDfvvGxBml7q2cn8U9QKFsEGQzUcY6MMMXGO2eylbiGwydg8xlZmEixy5HICdkvIerlLQDdhpT8FBkFbG\",\"field4\":\"PF9i9MQrTZwYp18U9iKHP6cALixH3nygWjxbvOo1sT8eGxn8UD3w1Te1DzwhcbbpIMwqekUKFMmwnsxbPCDk59bfncWK4pbNqj1c\"}},{\"stream\":\"gen:88\",\"id\":\"1730880588478-9\",\"body\":{\"field1\":\"WHIY7PPtsv54GQtOmd2pGbsNxD4kaqWU4sVOF0HsKzND65EZXbS3ap4mVx3KeTX3pEf9VE3W5r3szTfu1092x0zFEx5OzGU19IeE\",\"field10\":\"VTLBjAmr167D662Tq9r2PpyUDaNs62k9E7cR26044hrY7fu1d7W4T56S8vMF1CONubHNlZBC5X9HszQ4IsY6ddYmN6zAGg2BSRQK\",\"field7\":\"6R8ig8m110jU3bYaK8kfkTannIoxVHZEj5ukTYPvecR2hMA5KLtn2gRGp2JE7PJvxLRmYSJfTwy5ld7ccc1EiqVWEX83Q44aVGej\",\"field6\":\"gyodrcNt9Y1KNL2fESa21DWWJYpSFpTFJeoRjpwfhMi2cjF6epDpDRlTXmKaIIsDK0iDMAhqGi2GzSKxLmrzZWwqNWaSF5ik7o3V\",\"field9\":\"1hvAWDReDiOE9OpNYhpqOW5Cg2qkL90Aa4nJL0c4OhlMuehsp1IygLkSy1fRWFB9jbQML1uPdhZgmQvQ30jnZ6iqY6aYdDycYxFD\",\"field8\":\"kByRUdMAJxc4HCom4jhKgG62YULwAhueblGaRnawsIQs5jZiPKWi3vmo3DpZJvlJnmptTaWAmXsQV6Cze66vTyKVFRFlYRdtUZ6q\",\"field3\":\"KFEomCXoNBt4g7h41Qd7dCPoJ8G1whBMUv7goepLqgsHjEzInqUdUH7FLtEqzDamVeZzp5p1wtoLx7hyOCAvBQMJaKEVN8jMNBFB\",\"field2\":\"hp9r9JrqbkGoaMzvNphlXi9njbQg6AjCwZInCVAwckuabGUaQuyoUdlEyk1vB4mb1QULJ3rHixFo4mkXbtLSQKu9tUUPWwTkHb95\",\"field5\":\"DaTnYXP7UbiYbh2JO7Rd7HTEKCujnE1v6PyepY2qksQ1Ov0szr8Ts2o4UWs7mNhy4uiNyC93dl0hYAF25vvhqvCJ8zyL3DsShQtj\",\"field4\":\"y7Qgxaxxk756ox0qDFe7ihoFD6wTaGLeXLzyljqNh17CTq1CGOo6piwceW7eeUXOeeWLez5Tjc5OoDYBn08kwJT2hvbZmQPKKCpb\"}}]},\n {\"key\":\"gen:34\",\"event\":\"scan\",\"timestamp\":1730880592597,\"type\":\"zset\",\"ttl\":-1,\"value\":[{\"value\":\"14\",\"score\":62.67686659358985},{\"value\":\"78\",\"score\":36.87650408913045},{\"value\":\"32\",\"score\":15.139296625540432},{\"value\":\"75\",\"score\":96.68392130142303},{\"value\":\"7\",\"score\":83.72904663704936},{\"value\":\"3\",\"score\":72.36997295261122},{\"value\":\"8\",\"score\":10.593191364408728},{\"value\":\"26\",\"score\":33.17236247676137},{\"value\":\"30\",\"score\":62.19146171868589},{\"value\":\"37\",\"score\":0.08659180973920044},{\"value\":\"87\",\"score\":17.562748301839758},{\"value\":\"19\",\"score\":6.669437371994591},{\"value\":\"35\",\"score\":48.043559144529645},{\"value\":\"59\",\"score\":40.65163748659209},{\"value\":\"16\",\"score\":80.40519663882358},{\"value\":\"85\",\"score\":51.49820900060589},{\"value\":\"2\",\"score\":85.8054545076335},{\"value\":\"11\",\"score\":55.474673026222},{\"value\":\"31\",\"score\":43.108433545333625},{\"value\":\"18\",\"score\":7.69668807531726},{\"value\":\"49\",\"score\":4.883735501888009},{\"value\":\"52\",\"score\":32.96449631555692},{\"value\":\"38\",\"score\":15.926191182420668},{\"value\":\"33\",\"score\":68.64711785180747},{\"value\":\"4\",\"score\":81.23044817202752},{\"value\":\"36\",\"score\":83.93574898235806},{\"value\":\"24\",\"score\":24.54310412483648},{\"value\":\"95\",\"score\":73.55958905062879},{\"value\":\"92\",\"score\":87.36921267101087},{\"value\":\"69\",\"score\":65.22528291386433},{\"value\":\"83\",\"score\":16.764945714386915},{\"value\":\"74\",\"score\":2.707322985877536},{\"value\":\"61\",\"score\":34.69448882081997},{\"value\":\"66\",\"score\":88.46632120288159},{\"value\":\"96\",\"score\":48.483191169771025},{\"value\":\"54\",\"score\":99.01936550801965},{\"value\":\"27\",\"score\":87.53905994333734},{\"value\":\"40\",\"score\":92.21450775297242},{\"value\":\"99\",\"score\":6.801050287751476},{\"value\":\"20\",\"score\":72.44202024924252},{\"value\":\"28\",\"score\":13.87643023725812},{\"value\":\"86\",\"score\":24.47149382408085},{\"value\":\"77\",\"score\":53.7909927992175},{\"value\":\"17\",\"score\":3.326678123639215},{\"value\":\"68\",\"score\":73.20452728776402},{\"value\":\"94\",\"score\":39.13867582011966},{\"value\":\"73\",\"score\":90.71671122674303},{\"value\":\"100\",\"score\":56.77550068905165},{\"value\":\"23\",\"score\":6.147047261191552},{\"value\":\"57\",\"score\":97.94126966283932},{\"value\":\"50\",\"score\":55.1337184933939},{\"value\":\"65\",\"score\":98.42066590100687},{\"value\":\"58\",\"score\":24.169589524784563},{\"value\":\"5\",\"score\":77.13692918664823},{\"value\":\"51\",\"score\":94.96377112170055},{\"value\":\"48\",\"score\":30.224932495691792},{\"value\":\"39\",\"score\":44.00273706434656},{\"value\":\"53\",\"score\":47.37746615279402},{\"value\":\"45\",\"score\":54.02112113050941},{\"value\":\"46\",\"score\":94.66496275226824},{\"value\":\"9\",\"score\":99.98962638624205},{\"value\":\"91\",\"score\":83.10149821723644},{\"value\":\"93\",\"score\":40.808861909209796},{\"value\":\"70\",\"score\":7.762903326873227},{\"value\":\"79\",\"score\":93.22377940299366},{\"value\":\"82\",\"score\":12.044564777240518},{\"value\":\"98\",\"score\":73.56513956667577},{\"value\":\"62\",\"score\":7.4950783920249675},{\"value\":\"1\",\"score\":95.05149381703845},{\"value\":\"80\",\"score\":75.64224224276673},{\"value\":\"21\",\"score\":24.266022064497108},{\"value\":\"64\",\"score\":14.225700835484789},{\"value\":\"15\",\"score\":82.60067538274882},{\"value\":\"10\",\"score\":99.13237217448312},{\"value\":\"67\",\"score\":6.05058575634938},{\"value\":\"55\",\"score\":11.043329349628317},{\"value\":\"88\",\"score\":30.970062276702592},{\"value\":\"22\",\"score\":5.986157877199593},{\"value\":\"72\",\"score\":30.87703724734725},{\"value\":\"47\",\"score\":49.78788205862755},{\"value\":\"81\",\"score\":56.87574864235112},{\"value\":\"34\",\"score\":67.0584198292925},{\"value\":\"25\",\"score\":32.46481418666469},{\"value\":\"43\",\"score\":34.92477140226815},{\"value\":\"76\",\"score\":86.31129009236528},{\"value\":\"56\",\"score\":41.0870991100731},{\"value\":\"90\",\"score\":95.91136223441023},{\"value\":\"29\",\"score\":38.45705665680427},{\"value\":\"89\",\"score\":58.41946332628427},{\"value\":\"42\",\"score\":93.59099339764411},{\"value\":\"44\",\"score\":14.803405010059144},{\"value\":\"6\",\"score\":29.82293618931403},{\"value\":\"97\",\"score\":73.37071448825174},{\"value\":\"63\",\"score\":78.28311182599116},{\"value\":\"12\",\"score\":0.48308617852211855},{\"value\":\"60\",\"score\":46.2849013771645},{\"value\":\"71\",\"score\":84.96310387370856},{\"value\":\"13\",\"score\":87.23679285441946},{\"value\":\"41\",\"score\":62.48808113762858},{\"value\":\"84\",\"score\":78.30084915394487}]}\n]"
  },
  {
    "path": "plugins/riot/src/test/resources/files/redis.json",
    "content": "[\n {\"key\":\"string:615\",\"ttl\":-1,\"value\":\"value:615\",\"type\":\"STRING\"},\n {\"key\":\"hash:511\",\"ttl\":-1,\"value\":{\"field1\":\"value511\",\"field2\":\"value511\"},\"type\":\"HASH\"},\n {\"key\":\"list:1\",\"ttl\":-1,\"value\":[\"member:991\",\"member:981\"],\"type\":\"LIST\"}, \n {\"key\":\"set:2\",\"ttl\":-1,\"value\":[\"member:2\",\"member:3\"],\"type\":\"SET\"}, \n {\"key\":\"zset:0\",\"ttl\":-1,\"value\":[{\"value\":\"member:1\",\"score\":1.0},{\"value\":\"member:2\",\"score\":2.0}],\"type\":\"ZSET\"},\n {\"key\":\"stream:0\",\"ttl\":-1,\"value\":[{\"stream\":\"stream:0\",\"id\":\"1602190921109-0\",\"body\":{\"field1\":\"value0\",\"field2\":\"value0\"}}],\"type\":\"STREAM\"}\n]\n"
  },
  {
    "path": "plugins/riot/src/test/resources/files/sample.psv",
    "content": "id|field1|field2|field3\n1|sdf,dsf|je\tje|sdfsdf\n2|sdkdskd|slfd|sdfkdsf\n3|kdkerker|ksdkdk|sdldls"
  },
  {
    "path": "plugins/riot/src/test/resources/files/sample.tsv",
    "content": "id\tfield1\tfield2\tfield3\n1\tsdf\tasdf\txczxczcxz\n2\tsdf\tasdf\tczxzxczcx\n3\tsdf\tasdf\tzcxcx\n4\tsdf\tasdf\tzxczxcczx"
  },
  {
    "path": "plugins/riot/src/test/resources/files/timestamp.json",
    "content": "[\n\t{\n\t\t\"facility\": 1234,\n\t\t\"userFullName\": \"Julien Ruaux\",\n\t\t\"userId\": \"jruaux\",\n\t\t\"sessionId\": \"c7ac5e75-33a2-466c-99be-1f112b394dg7\",\n\t\t\"roles\": \"[RN, PCT]\",\n\t\t\"timestamp\": \"2019-01-24T10:27:47.825Z\",\n\t\t\"body\": \"What do you call someone who hangs around with computer professionals? A DBA\",\n\t\t\"id\": 123\n\t}\n]"
  },
  {
    "path": "plugins/riot/src/test/resources/files/trades.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<records>\n    <trade>\n        <id>1</id>\n        <isin>XYZ0001</isin>\n        <quantity>5</quantity>\n        <price>11.39</price>\n        <customer>Customer1</customer>\n    </trade>\n    <trade>\n        <id>2</id>\n        <isin>XYZ0002</isin>\n        <quantity>2</quantity>\n        <price>72.99</price>\n        <customer>Customer2c</customer>\n    </trade>\n    <trade>\n        <id>3</id>\n        <isin>XYZ0003</isin>\n        <quantity>9</quantity>\n        <price>99.99</price>\n        <customer>Customer3</customer>\n    </trade>\n</records>"
  },
  {
    "path": "plugins/riot/src/test/resources/generate",
    "content": "riot gen --type string hash json timeseries"
  },
  {
    "path": "plugins/riot/src/test/resources/generate-hash-index",
    "content": "riot gen --type hash --index hashIdx"
  },
  {
    "path": "plugins/riot/src/test/resources/generate-json-index",
    "content": "riot gen --type json --index jsonIdx"
  },
  {
    "path": "plugins/riot/src/test/resources/replicate",
    "content": "riot replicate redis://source redis://target"
  },
  {
    "path": "plugins/riot/src/test/resources/replicate-dry-run",
    "content": "riot replicate --batch 10 --dry-run redis://source redis://target"
  },
  {
    "path": "plugins/riot/src/test/resources/replicate-hll",
    "content": "riot replicate --batch 10 redis://source redis://target"
  },
  {
    "path": "plugins/riot/src/test/resources/replicate-key-exclude",
    "content": "riot replicate redis://source redis://target --key-exclude \"bad*\""
  },
  {
    "path": "plugins/riot/src/test/resources/replicate-key-processor",
    "content": "riot replicate --batch 1 --key-proc=\"prefix:#{key}\" redis://source redis://target"
  },
  {
    "path": "plugins/riot/src/test/resources/replicate-key-processor-compare-none",
    "content": "riot replicate --batch 1 --key-proc=\"prefix:#{key}\" --compare none redis://source redis://target"
  },
  {
    "path": "plugins/riot/src/test/resources/replicate-live",
    "content": "riot replicate --mode live redis://source redis://target"
  },
  {
    "path": "plugins/riot/src/test/resources/replicate-live-key-exclude",
    "content": "riot replicate redis://source redis://target --mode live --key-exclude \"bad:*\""
  },
  {
    "path": "plugins/riot/src/test/resources/replicate-live-keyslot",
    "content": "riot replicate --mode liveonly --key-slot 0-8000 redis://source redis://target"
  },
  {
    "path": "plugins/riot/src/test/resources/replicate-live-only-struct",
    "content": "riot replicate --struct --mode liveonly redis://source redis://target"
  },
  {
    "path": "plugins/riot/src/test/resources/replicate-live-read-threads",
    "content": "riot replicate --mode live --read-threads 3 redis://source redis://target"
  },
  {
    "path": "plugins/riot/src/test/resources/replicate-live-struct",
    "content": "riot replicate --struct --mode live redis://source redis://target"
  },
  {
    "path": "plugins/riot/src/test/resources/replicate-live-threads",
    "content": "riot replicate --mode live --threads 3 redis://source redis://target"
  },
  {
    "path": "plugins/riot/src/test/resources/replicate-no-stream-id",
    "content": "riot replicate --struct --batch 10 redis://source redis://target --no-stream-id"
  },
  {
    "path": "plugins/riot/src/test/resources/replicate-no-stream-id-prune",
    "content": "riot replicate --struct --batch 10 redis://source redis://target --no-stream-id --stream-prune"
  },
  {
    "path": "plugins/riot/src/test/resources/replicate-struct",
    "content": "riot replicate --struct redis://source redis://target"
  },
  {
    "path": "riot",
    "content": "#!/usr/bin/env sh\n\n./gradlew --quiet -Prelease=true --console plain :riot:installDist\n./plugins/riot/build/install/riot/bin/riot \"$@\""
  },
  {
    "path": "settings.gradle",
    "content": "/*\n * SPDX-License-Identifier: Apache-2.0\n *\n * Copyright 2020-2023 The RIOT authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nbuildscript {\n    repositories {\n        mavenLocal()\n        mavenCentral()\n        gradlePluginPortal()\n    }\n    dependencies {\n        classpath \"org.ajoberstar:gradle-git-publish:$gitPluginVersion\"\n        classpath \"org.jreleaser:jdks-gradle-plugin:$jdksPluginVersion\"\n        classpath \"org.kordamp.gradle:guide-gradle-plugin:$kordampPluginVersion\"\n        classpath \"org.kordamp.gradle:java-project-gradle-plugin:$kordampPluginVersion\"\n        classpath \"org.kordamp.gradle:jacoco-gradle-plugin:$kordampPluginVersion\"\n        classpath \"org.kordamp.gradle:kordamp-parentbuild:$kordampBuildVersion\"\n        classpath \"org.springframework.boot:spring-boot-gradle-plugin:$bootPluginVersion\"\n        classpath \"io.spring.gradle:dependency-management-plugin:$dependencyPluginVersion\"\n    }\n}\n\napply plugin: 'org.kordamp.gradle.kordamp-parentbuild'\n\nrootProject.name = 'riot'\n\nprojects {\n    directories = ['core', 'plugins', 'docs']\n\n    plugins {\n        all {\n            id 'eclipse'\n        }\n        path(':') {\n            id 'org.kordamp.gradle.java-project'\n        }\n        dirs(['core', 'plugins']) {\n            id 'java-library'\n            id 'org.springframework.boot'\n            id 'io.spring.dependency-management'\n        }\n    }\n}\n\nenforce {\n    rule(enforcer.rules.RequireJavaVersion) { r ->\n        r.version.set('17')\n    }\n    rule(enforcer.rules.EnforceBytecodeVersion) { r ->\n        // search only on compile and runtime classpaths\n        r.configurations.addAll(['compileClasspath', 'runtimeClasspath'])\n        r.maxJdkVersion = '17'\n    }\n    rule(enforcer.rules.BanDuplicateClasses) { r ->\n        r.enabled = false\n    }\n    rule(enforcer.rules.DependencyConvergence) { r ->\n        r.enabled = false\n    }\n    rule(enforcer.rules.ForceDependencies) { r ->\n        r.dependencies.addAll \"com.google.protobuf:protobuf-java:$protobufVersion\"\n    }\n}"
  },
  {
    "path": "src/jreleaser/changelog.tpl",
    "content": "## Changelog\n\n{{changelogChanges}}\n{{changelogContributors}}\n\n## Binaries\n\n### 🌟 Universal\n\nThese binaries require an external Java runtime.\n\n* {{#f_release_download_url}}riot-{{projectEffectiveVersion}}.zip{{/f_release_download_url}} (requires Java 11+)\n* {{#f_release_download_url}}riot-{{projectEffectiveVersion}}.tar{{/f_release_download_url}} (requires Java 11+)\n\n### ☕️ Bundled Java Runtimes\n\nThese binaries provide their own Java runtime.\n\n|Platform | Intel | Arm |\n| ------- | ----- | --- |\n| MacOS   | {{#f_release_download_url}}riot-standalone-{{projectEffectiveVersion}}-osx-x86_64.zip{{/f_release_download_url}} | {{#f_release_download_url}}riot-standalone-{{projectEffectiveVersion}}-osx-aarch64.zip{{/f_release_download_url}} |\n| Linux (glibc) | {{#f_release_download_url}}riot-standalone-{{projectEffectiveVersion}}-linux-x86_64.zip{{/f_release_download_url}} | {{#f_release_download_url}}riot-standalone-{{projectEffectiveVersion}}-linux-aarch64.zip{{/f_release_download_url}} |\n| Linux (musl) | {{#f_release_download_url}}riot-standalone-{{projectEffectiveVersion}}-linux_musl-x86_64.zip{{/f_release_download_url}} | {{#f_release_download_url}}riot-standalone-{{projectEffectiveVersion}}-linux_musl-aarch64.zip{{/f_release_download_url}} |\n| Windows | {{#f_release_download_url}}riot-standalone-{{projectEffectiveVersion}}-windows-x86_64.zip{{/f_release_download_url}} | {{#f_release_download_url}}riot-standalone-{{projectEffectiveVersion}}-windows-aarch64.zip{{/f_release_download_url}} |"
  }
]